GSoC: First simple merging branches git import
A quick update post to show my first import of a branching git repo that contains merges.
It's a very simple import, but it works! :)
$ git log --graph --pretty='%ad %an <%ae>%n * %s%n%n %b'
* Tue Jun 14 16:19:34 2011 +0100 Owen Stephens
|\ * Merge branch 'branch1'
| |
| | Conflicts:
| | b
| |
| * Tue Jun 14 16:18:54 2011 +0100 Owen Stephens
| | * b branch1
| |
| |
* | Tue Jun 14 16:19:08 2011 +0100 Owen Stephens
|/ * b master
|
|
* Tue Jun 14 16:18:34 2011 +0100 Owen Stephens
* a master
$ git fast-export --all | darcs-fastconvert import darcs
$ darcs cha --repo darcs
Tue Jun 14 16:19:34 BST 2011 Owen Stephens
* Merge branch 'branch1'
Conflicts:
b
Tue Jun 14 16:18:54 BST 2011 Owen Stephens
* b branch1
Tue Jun 14 16:19:08 BST 2011 Owen Stephens
* b master
Tue Jun 14 16:18:34 BST 2011 Owen Stephens
* a master
The "conflicts b" message is generated by Git, and shows up in the Darcs patch, even though the patch isn't a conflicting patch; also, the merge commit seen by Git is actually 2 patches in Darcs: a 'merge' patch, which contains conflicts, and a 'resolution' patch that contains the resolution as per the Git merge commit. This is to ensure that we preserve the entire patch history, rather than simply "diffing" the end state and the branches.
The following rather verbose commands show the actual patch/commit content:
$ darcs cha --repo darcs -v
Tue Jun 14 16:19:34 BST 2011 Owen Stephens
* Merge branch 'branch1'
Conflicts:
b
hunk ./b 1
+1
+c
Tue Jun 14 16:18:54 BST 2011 Owen Stephens
* b branch1
duplicate
|hunk ./b 1
|-1
|-2
|-3
|rmfile ./b
|:
addfile ./b
conflictor [
hunk ./b 1
+1
+2
+3
]
|:
hunk ./b 1
+a
+b
+c
addfile ./c
hunk ./c 1
+a
+b
+c
Tue Jun 14 16:19:08 BST 2011 Owen Stephens
* b master
addfile ./b
hunk ./b 1
+1
+2
+3
Tue Jun 14 16:18:34 BST 2011 Owen Stephens
* a master
addfile ./a
hunk ./a 1
+1
+2
+3
git log --graph -p
* commit 6802fcd03d3ddf69cfb33a803211fe4f22da9542
|\ Merge: f085e43 c5dc576
| | Author: Owen Stephens
| | Date: Tue Jun 14 16:19:34 2011 +0100
| |
| | Merge branch 'branch1'
| |
| | Conflicts:
| | b
| |
| * commit c5dc576b33e8125153c9337b6b2dbf99a2de1a60
| | Author: Owen Stephens
| | Date: Tue Jun 14 16:18:54 2011 +0100
| |
| | b branch1
| |
| | diff --git a/b b/b
| | new file mode 100644
| | index 0000000..de98044
| | --- /dev/null
| | +++ b/b
| | @@ -0,0 +1,3 @@
| | +a
| | +b
| | +c
| | diff --git a/c b/c
| | new file mode 100644| | index 0000000..de98044
| | --- /dev/null
| | +++ b/c
| | @@ -0,0 +1,3 @@
| | +a
| | +b
| | +c
| |
* | commit f085e43571e1d19dd345c7e3ec7a0a57efaaba26
|/ Author: Owen Stephens
| Date: Tue Jun 14 16:19:08 2011 +0100
|
| b master
|
| diff --git a/b b/b
| new file mode 100644
| index 0000000..01e79c3
| --- /dev/null
| +++ b/b
| @@ -0,0 +1,3 @@
| +1
| +2
| +3
|
* commit 83888d0729210fd84c4557467c6548fcc99aae2c
Author: Owen Stephens
Date: Tue Jun 14 16:18:34 2011 +0100
a master
diff --git a/a b/a
new file mode 100644
index 0000000..01e79c3
--- /dev/null
+++ b/a
@@ -0,0 +1,3 @@
+1
+2
+3