Hello,

we had an issue merging with renames here. The 'test-shortest-path' takes what
we think is a *WRONG* path for the merge to happen.

We had two long-standing branches, that both were updated from trunk from time
to time. One was merged into trunk only recently, altough it has been there for
two months.

We once did in branch A a "fossil merge trunk" at the end of
January. We worked a lot in trunk after that. This gave the current common
ancestor between A and trunk.

Recently we did in branch B a "fossil merge trunk", and then in trunk, "fossil
merge B".


It came the day when whe decided to do, in branch A, refresh it from trunk:
"fossil merge trunk". Then it went wrong, because it found the "shortest-path"
*THROUGH* branch A, that went to trunk and branch A back in mid december. We had
little changes in A, and lots of changes in trunk. Through 'A' was the *shortest
path*.

So in this case, the "shortest path" (smallest number of commits) was not going
through the common ancestor between A and trunk (of end of January), but through
some common ancestor one month older.

This could have worked, if the first merge of the end of January did not have
any rename. It had renames, and due to this, the last merge attempt complained
about this like this:
WARNING - no common ancestor:  file1
WARNING - no common ancestor:  file2
WARNING - no common ancestor:  file3
WARNING - no common ancestor:  file4
 ....


So we propose that, for the merge between two branches, it should be calculated
through the *shortest path* that (additional condition) goes through the 
*common ancestor*.

What do you think?


Here is how the "test-shortest-path trunk A" looks like:
   1: c844ce6d50e0 2011-03-03 14:14:51 is a child of  (trunk)
   2: a43678fc9ca0 2011-03-03 14:12:18 is a child of
   3: 828a14d063c4 2011-03-03 11:54:30 is a child of
   4: edb41e5c230b 2011-03-03 11:13:09 is a child of
   5: e1b7b9c9aabc 2011-03-03 09:48:33 is a child of
   6: 6426c87f9132 2011-02-24 08:22:45 is a child of
   7: 3ce0d541f673 2011-02-23 21:12:02 is a child of
   8: 99319ca24ef5 2011-02-23 15:15:59 is a child of
   9: deda6f59bdd4 2011-02-23 13:55:02 is a child of
  10: c0d55468828c 2011-02-23 10:29:18 is a child of
  11: b664b5b18bcd 2011-02-23 09:11:10 is a child of
  12: 241698eda20c 2011-02-23 09:06:37 is a child of
  13: d892a84a853b 2011-02-22 09:13:40 is a parent of
  14: 1d669cc444e7 2011-02-22 13:43:04 is a child of   (branch B)
  15: c788f28c5660 2010-12-22 15:09:28 is a child of
  16: 8ed57277e997 2010-12-22 13:20:11 is a child of
  17: 87c26be24920 2010-12-22 13:18:27 is a child of
  18: 6478caeac746 2010-12-22 10:03:02 is a child of
  19: 6a13f33daba8 2010-12-22 09:41:06 is a child of   (trunk again)
  20: b215075e199d 2010-12-21 15:03:20 is a parent of  (branch A)
  21: aa1588e4ffc3 2010-12-22 11:41:32 is a parent of
  22: 799ee1a58db1 2010-12-22 13:27:11 is a parent of
  23: 75a94cb02cd6 2010-12-22 15:11:03 is a parent of
  24: ed258cef647f 2010-12-22 16:20:38 is a parent of
  25: 0bcba8b051c6 2010-12-22 16:21:18 is a parent of
  26: e793f744c587 2010-12-23 09:18:59 is a parent of
  27: b1681a484058 2011-01-24 11:55:03

The common ancestor between A and trunk dates from 2011-01-24, two hours earlier
to the last element of the "test-shortest-path" above.
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to