Two commits touching the same file, represented by the identifier at the end of the rebase's commit line. If you look at each file as a column, you can see which commits would clash.
This is beautiful, and goes a long way towards making rebase more intuitive and useful .. I feel that there is so much power in Git (and other tools) that would be unleashed if only someone put a little more thought into the text user interface .. just seeing the columns on the right immediately explained to me what is going on, and I find this incredibly useful. Thanks!
When I tried rebasing my Clojure fork against upstream I got
Traceback (most recent call last):
File "/Users/michael.blume/bin/git-rebaser", line 96, in <module>
write_todo(file, first, last, comments)
File "/Users/michael.blume/bin/git-rebaser", line 61, in write_todo
f = "[%s] %s" % (SYM[i], f)
KeyError: 62
Could not execute editor
I'm guessing this is a case of the commits touching too many files?
You are running that in shell by hand. The python program running here is not shell. If you do a print(os.environ["GIT_EDITOR"]) in the python3 program you'll still see ~/bin/vim .
20 comments
[ 0.18 ms ] story [ 50.6 ms ] threadEach file gets an alpha-numeric character at a particular column, a list of which appears below the commit list.
Commits can be moved up and down safely (no conflicts) as long as they don't have any clashing columns.
My original idea was to somehow show the actual conflicts, but then I figured this gets the desired 80% for 2% of the effort...
In fact magit could probably do some of this with a hook on reordering commits which would not require more git metadata.
I'm not sure I care about any of this though as if I do rebase, reorder and then hit a conflict I can't resolve I can always abort the rebase.
I think we have very different definitions of the word "excellent". I'd call SourceTree's UI "barely adequate".
When I tried rebasing my Clojure fork against upstream I got
Traceback (most recent call last): File "/Users/michael.blume/bin/git-rebaser", line 96, in <module> write_todo(file, first, last, comments) File "/Users/michael.blume/bin/git-rebaser", line 61, in write_todo f = "[%s] %s" % (SYM[i], f) KeyError: 62 Could not execute editor
I'm guessing this is a case of the commits touching too many files?
To reproduce, check out master at https://github.com/michaelblume/clojure and rebase against b8607d5870
FOO=~/bin/vim export FOO env | grep FOO shows it as expanded.
I also renamed it 'git-prebase' so that it's easily added to git's autocomplete behavior and does not interfere with 'rebase'.