Update Sunday, 5th of April, Anno Domini MMIX, at the hour of the Pig
[git/dscho.git] / source-1234040744.txt
blobad467068e3411d6eae28cb26e3dad40a88ec36b0
1 The infamous ''mark'' command in the ''rebase'' command
3 I realized today how easy it is to lose commits with the "merge preserving"
4 mode of the interactive rebase.  In my case, it was when I tried to move a
5 bunch of commits from the tip of my branch into a topic branch.
7 But after moving the commits, I forgot to update the parent of the merge
8 commit.  Possibly a mark command could have helped.  The very same command
9 I called a nightmare for usability.
11 So I was wrong.  Big news.  :-)
13 However, I think that the syntax "mark :1" is something best left for
14 machine consumption, not for human beings.
16 But I have an idea: we could use some garbled commit subject, or in case of
17 merge parents, the merge subject as some human readable title of the mark.
19 The rebase script would then look something like this:
21 <bash>
22 pick abcdefg Some ultra cool commit
23 bookmark ultra-cool
24 goto upstream
25 pick hijklmn Some other cool commit
26 merge parent ultra-cool Merge 'ultra-cool' into master
27 </bash>
29 The good news is: I added code that refuses to finish a rebase when there
30 are commits that were rewritten, but not part of the new HEAD's ancestry.