Hi all,

As discussed a few weeks ago, I ported the new field-based ode feature
from MATH_3_X to master. I was finally able to do that without losing
the about hundred commits history, by replaying them with some scripting.

In case this is of interest for some of you, here is how I managed to
do that.

First, I had to find the commit lists in the MATH_3_X branch that
were of interest, concentrating only on the real code change commits
(i.e. ignoring the merge commits that occurred two or three time
between the topic branch field-ode and MATH_3_X branch). This was
done by identifying a start and an end commit and listing the
intermediate ones with the following command:

git rev-list ^4685d03~1 b5276e9 --author=Luc --max-parents=1 --reverse

I put this list in a file for later looping over this.

Then I wrote a small script that extracted from one commit identifier
the commit message in one temporary file, and the diff in another
temporary file, with all math3 strings replaced with math4. The
diff was then applied, spurious .orig and .rej files eliminated, and
the commit performed with the same message as the original commit. Here
are the few commands:

  git show --pretty=format:"%s%n%n%b" --no-patch $1 \
       > $tmpdir/commit-message
  git show --pretty=format:"" $1 | sed 's,math3,math4,g' \
      > $tmpdir/commit-patch

  patch -p1 < $tmpdir/commit-patch && |
    find . -name '*.orig' -exec rm {} \; \
        -o -name '*.rej'  -exec rm {} \; && \
    git add . && \
    git commit -F $tmpdir/commit-message

It worked quite well, with only a few glitches that forced me to
interrupt the loop, remove a few commits, correct the command, and
restart the loop.

After that, I replayed a number of additional commits picked up
individually one at a time, for commits that occurred more recently
than the range before and were interspersed with other commits in
the MATH_3_X branch. So at the end, I had 101 commits.

All of this was done on a local tmp branch, so I coud roll back and
restart from scratch easily if anything went wrong. When I was certain
that this tmp branch was complete, I merged it into master.

You will see the last step in a few minutes, with a git push that will
update master with the 101 commits that are in the pipe. I'm sorry for
the noise.

At the end, we will have a master branch with the same feature as the
MATH_3_X branch, and a full history of the development of this feature.

best regards,
Luc

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to