[haiku-development] Re: Proposal: Moving away from Subversion

  • From: Simon Taylor <simontaylor1@xxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 29 Jun 2010 14:27:52 +0100

Axel Dörfler wrote:
> Niels Reedijk <niels.reedijk@xxxxxxxxx> wrote:
>> From a feature point of view it seems that bzr might be a good
>> candidate, because it efficiently mimics Subversion's repository <->
>> working copy relation while also providing tools for working locally.
>> This IMO is a very definite characteristic of our current development
>> process, and one that we should keep.
> 
> Agreed, bazaar doesn't look bad - the only downside I found is that it 
> cannot track file copies, ie. the history will be lost when copying 
> files; the copied file will just be a new file with no history.
> Not sure if that's really that bad, though. The rest seems to be very 
> comparable to hg.

I've just tried a test with hg (I've got version 1.4.2 installed) and
"hg copy" and "hg rename" do slightly weird things. They obviously store
some metadata as it's possible to view the historical commit messages
with hg log --follow, but it just seems to add the entire file as if it
was new - the patches generated from the new file are not relative to
the previously named one, and it doesn't seem possible to diff across
move or copy bounds. At least bzr does the right thing for renames/mv,
but it's a shame copies aren't handled - it seems they decided against
it as it's hard to define what should happen for merging if one branch
has a copied file and the other has a change to the original (along with
other complicated cases).

Simon

--

Moving a file, making a change, then committing.

Bzr handles the history and diffs and patches correctly [1], whereas
mercurial needs a special flag to hg log to pull up the commit messages,
and diffs and patches don't seem to work [2].

[1]
sjt59@megatron:~/TestDVCS/bzr> bzr log -vp testfile2.txt
------------------------------------------------------------
revno: 3
committer: Simon Taylor <sjt59@email>
branch nick: bzr
timestamp: Tue 2010-06-29 13:23:10 +0100
message:
  Different text
renamed:
  testfile.txt => testfile2.txt
modified:
  testfile2.txt
diff:
=== renamed file 'testfile.txt' => 'testfile2.txt'
--- testfile.txt        2010-06-29 12:22:24 +0000
+++ testfile2.txt       2010-06-29 12:23:10 +0000
@@ -1,3 +1,3 @@
 testing line 1
-and line 2 - changed
+and line 2 - changed again
 and line 3
------------------------------------------------------------
revno: 2
committer: Simon Taylor <sjt59@email>
branch nick: bzr
timestamp: Tue 2010-06-29 13:22:24 +0100
message:
  Different text
modified:
  testfile.txt
diff:
=== modified file 'testfile.txt'
--- testfile.txt        2010-06-29 12:21:39 +0000
+++ testfile.txt        2010-06-29 12:22:24 +0000
@@ -1,3 +1,3 @@
 testing line 1
-and line 2
+and line 2 - changed
 and line 3
------------------------------------------------------------
revno: 1
committer: Simon Taylor <sjt59@email>
branch nick: bzr
timestamp: Tue 2010-06-29 13:21:39 +0100
message:
  Added test file
added:
  testfile.txt
diff:
=== added file 'testfile.txt'
--- testfile.txt        1970-01-01 00:00:00 +0000
+++ testfile.txt        2010-06-29 12:21:39 +0000
@@ -0,0 +1,3 @@
+testing line 1
+and line 2
+and line 3

[2]
sjt59@megatron:~/TestDVCS/hg> hg log -vpf testfile2.txt
changeset:   2:7d7fe6565c1f
user:        Simon Taylor <sjt59@xxxxxxxxx>
date:        Tue Jun 29 13:36:02 2010 +0100
files:       testfile.txt testfile2.txt
description:
Changed text again


diff -r 912e82035539 -r 7d7fe6565c1f testfile2.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/testfile2.txt     Tue Jun 29 13:36:02 2010 +0100
@@ -0,0 +1,3 @@
+testing line 1
+and line 2 - changed again
+and line 3

changeset:   1:912e82035539
user:        Simon Taylor <sjt59@xxxxxxxxx>
date:        Tue Jun 29 13:35:07 2010 +0100
files:       testfile.txt
description:
changed text



changeset:   0:f5a61a620078
user:        Simon Taylor <sjt59@xxxxxxxxx>
date:        Tue Jun 29 13:32:19 2010 +0100
files:       testfile.txt
description:
added test file

Other related posts: