annotate tests/test-extra.t @ 844:fffe8883960b

git_handler: mark source for rename info as Git or Mercurial See inline comments for why the additional metadata needs to be stored. This literally breaks all the hashes because of the additional metadata. The changing of hashes is unfortunate but necessary to preserve bidirectionality. While this could be broken up into multiple commits, there was no way to do that while preserving bidirectionality. Following the principle that every intermediate commit must result in a correct state, I decided to combine the commits.
author Siddharth Agarwal <sid0@fb.com>
date Tue, 02 Dec 2014 14:17:09 -0800
parents 389676318d4c
children 96c74ae74ccd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
1 Test that extra metadata (renames, copies, and other extra metadata) roundtrips
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
2 across from hg to git
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
3 $ . "$TESTDIR/testutil"
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
4
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
5 $ git init -q gitrepo
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
6 $ cd gitrepo
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
7 $ touch a
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
8 $ git add a
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
9 $ fn_git_commit -ma
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
10 $ git checkout -b not-master 2>&1 | sed s/\'/\"/g
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
11 Switched to a new branch "not-master"
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
12
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
13 $ cd ..
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
14 $ hg clone -q gitrepo hgrepo
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
15 $ cd hgrepo
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
16 $ hg mv a b
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
17 $ fn_hg_commit -mb
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
18 $ hg up 0 | egrep -v '^\(leaving bookmark master\)$'
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
19 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
20 $ touch c
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
21 $ hg add c
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
22 $ fn_hg_commit -mc
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
23
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
24 Rebase will add a rebase_source
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
25 $ hg --config extensions.rebase= rebase -s 1 -d 2
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
26 saved backup bundle to $TESTTMP/*.hg (glob)
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
27 $ hg up 2
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
28 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
29
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
30 Add a commit with multiple extra fields
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
31 $ hg bookmark b1
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
32 $ touch d
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
33 $ hg add d
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
34 $ fn_hg_commitextra --field zzzzzzz=datazzz --field aaaaaaa=dataaaa
761
c68edf83bfbc test-extra.t: use a templater format that's portable back to hg 2.8.2
Augie Fackler <raf@durin42.com>
parents: 759
diff changeset
35 $ hg log --graph --template "{rev} {node} {desc|firstline}\n{join(extras, ' ')}\n\n"
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
36 @ 3 f01651cfcc9337fbd9700d5018ca637a2911ed28
761
c68edf83bfbc test-extra.t: use a templater format that's portable back to hg 2.8.2
Augie Fackler <raf@durin42.com>
parents: 759
diff changeset
37 | aaaaaaa=dataaaa branch=default zzzzzzz=datazzz
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
38 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
39 o 2 03f4cf3c429050e2204fb2bda3a0f93329bdf4fd b
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
40 | branch=default rebase_source=4c7da7adf18b785726a7421ef0d585bb5762990d
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
41 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
42 o 1 a735dc0cd7cc0ccdbc16cfa4326b19c707c360f4 c
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
43 | branch=default
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
44 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
45 o 0 aa9eb6424386df2b0638fe6f480c3767fdd0e6fd a
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
46 branch=default hg-git-rename-source=git
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
47
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
48 Make sure legacy extra (in commit message, after '--HG--') doesn't break
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
49 $ hg push -r b1 --config git.debugextrainmessage=1
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
50 pushing to $TESTTMP/gitrepo
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
51 searching for changes
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
52 adding objects
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
53 added 3 commits with 3 trees and 0 blobs
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
54 adding reference refs/heads/b1
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
55
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
56 $ hg bookmark b2
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
57 $ hg mv c c2
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
58 $ hg mv d d2
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
59 $ fn_hg_commitextra --field yyyyyyy=datayyy --field bbbbbbb=databbb
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
60
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
61 Test some nutty filenames
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
62 $ hg book b3
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
63 $ hg mv c2 'c2 => c3'
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
64 warning: filename contains '>', which is reserved on Windows: 'c2 => c3'
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
65 $ fn_hg_commit -m 'test filename with arrow'
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
66 $ hg mv 'c2 => c3' 'c3 => c4'
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
67 warning: filename contains '>', which is reserved on Windows: 'c3 => c4'
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
68 $ fn_hg_commit -m 'test filename with arrow 2'
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
69 $ hg log --graph --template "{rev} {node} {desc|firstline}\n{join(extras, ' ')}\n\n" -l 3
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
70 @ 6 bca4ba69a6844c133b069e227dfa043d41e3c197 test filename with arrow 2
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
71 | branch=default
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
72 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
73 o 5 864caad1f3493032f8d06f44a89dc9f1c039b09f test filename with arrow
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
74 | branch=default
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
75 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
76 o 4 58f855ae26f4930ce857e648d3dd949901cce817
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
77 | bbbbbbb=databbb branch=default yyyyyyy=datayyy
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
78 |
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
79 $ hg push -r b2 -r b3
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
80 pushing to $TESTTMP/gitrepo
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
81 searching for changes
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
82 adding objects
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
83 added 3 commits with 3 trees and 0 blobs
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
84 adding reference refs/heads/b2
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
85 adding reference refs/heads/b3
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
86
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
87 $ cd ../gitrepo
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
88 $ git cat-file commit b1
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
89 tree 1b773a2eb70f29397356f8069c285394835ff85a
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
90 parent 202f271eb3dcb7b767ce2af6cdad4114df62ff3f
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
91 author test <none@none> 1167609613 +0000
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
92 committer test <none@none> 1167609613 +0000
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
93
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
94
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
95
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
96 --HG--
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
97 extra : aaaaaaa : dataaaa
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
98 extra : zzzzzzz : datazzz
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
99
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
100 $ git cat-file commit b2
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
101 tree 34ad62c6d6ad9464bfe62db5b3d2fa16aaa9fa9e
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
102 parent 66fe706f6f4f08f0020323e6c49548d41bb00ff6
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
103 author test <none@none> 1167609614 +0000
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
104 committer test <none@none> 1167609614 +0000
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
105 HG:rename c:c2
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
106 HG:rename d:d2
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
107 HG:extra bbbbbbb:databbb
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
108 HG:extra yyyyyyy:datayyy
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
109
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
110
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
111
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
112 $ git cat-file commit b3
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
113 tree e63df52695f9b06e54b37e7ef60d0c43994de620
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
114 parent 6a66c937dea689a8bb2aa053bd91667fe4a7bfe8
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
115 author test <none@none> 1167609616 +0000
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
116 committer test <none@none> 1167609616 +0000
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
117 HG:rename c2%20%3D%3E%20c3:c3%20%3D%3E%20c4
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
118
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
119 test filename with arrow 2
763
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
120 $ cd ../gitrepo
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
121 $ git checkout b1
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
122 Switched to branch 'b1'
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
123 $ commit_sha=$(git rev-parse HEAD)
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
124 $ tree_sha=$(git rev-parse HEAD^{tree})
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
125
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
126 There's no way to create a Git repo with extra metadata via the CLI. Dulwich
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
127 lets you do that, though.
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
128
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
129 >>> from dulwich.objects import Commit
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
130 >>> from dulwich.porcelain import open_repo
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
131 >>> repo = open_repo('.')
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
132 >>> c = Commit()
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
133 >>> c.author = 'test <test@example.org>'
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
134 >>> c.author_time = 0
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
135 >>> c.author_timezone = 0
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
136 >>> c.committer = c.author
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
137 >>> c.commit_time = 0
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
138 >>> c.commit_timezone = 0
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
139 >>> c.parents = ['$commit_sha']
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
140 >>> c.tree = '$tree_sha'
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
141 >>> c.message = 'extra commit\n'
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
142 >>> c.extra.extend([('zzz:zzz', 'data:zzz'), ('aaa:aaa', 'data:aaa'),
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
143 ... ('HG:extra', 'hgaaa:dataaaa'),
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
144 ... ('HG:extra', 'hgzzz:datazzz')])
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
145 >>> repo.object_store.add_object(c)
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
146 >>> repo.refs.set_if_equals('refs/heads/master', None, c.id)
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
147 True
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
148
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
149 $ git cat-file commit master
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
150 tree 1b773a2eb70f29397356f8069c285394835ff85a
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
151 parent 66fe706f6f4f08f0020323e6c49548d41bb00ff6
763
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
152 author test <test@example.org> 0 +0000
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
153 committer test <test@example.org> 0 +0000
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
154 zzz:zzz data:zzz
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
155 aaa:aaa data:aaa
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
156 HG:extra hgaaa:dataaaa
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
157 HG:extra hgzzz:datazzz
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
158
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
159 extra commit
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
160
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
161 $ cd ..
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
162 $ hg clone -q gitrepo hgrepo2
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
163 $ cd hgrepo2
761
c68edf83bfbc test-extra.t: use a templater format that's portable back to hg 2.8.2
Augie Fackler <raf@durin42.com>
parents: 759
diff changeset
164 $ hg log --graph --template "{rev} {node} {desc|firstline}\n{join(extras, ' ')}\n\n"
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
165 @ 7 e003ec989aaae23b3eb30d4423419fb4dc346089 test filename with arrow 2
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
166 | branch=default
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
167 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
168 o 6 a2e276bd9458cb7dc309230ec8064d544e4f0c68 test filename with arrow
765
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
169 | branch=default
389676318d4c test-extra: add some more rename tests
Siddharth Agarwal <sid0@fb.com>
parents: 764
diff changeset
170 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
171 o 5 524e82e66b589f8b56bdd0679ad457a162ba16cd
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
172 | bbbbbbb=databbb branch=default yyyyyyy=datayyy
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
173 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
174 | o 4 741081daa02c9023c8c5117771f59ef2308a575c extra commit
764
70aba6b2fe7b git_handler: export hg extra metadata as git extra metadata (issue121)
Siddharth Agarwal <sid0@fb.com>
parents: 763
diff changeset
175 |/ GIT0-zzz%3Azzz=data%3Azzz GIT1-aaa%3Aaaa=data%3Aaaa branch=default hgaaa=dataaaa hgzzz=datazzz
763
13a3513f8e67 git_handler: support extracting metadata from Git extra fields
Siddharth Agarwal <sid0@fb.com>
parents: 761
diff changeset
176 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
177 o 3 73fa4063c4b0f386fd6b59da693617dedb340b02
761
c68edf83bfbc test-extra.t: use a templater format that's portable back to hg 2.8.2
Augie Fackler <raf@durin42.com>
parents: 759
diff changeset
178 | aaaaaaa=dataaaa branch=default zzzzzzz=datazzz
759
eb9ebc7ed061 git_handler: store hg extra data in git deterministically by sorting it
Siddharth Agarwal <sid0@fb.com>
parents: 757
diff changeset
179 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
180 o 2 98337758089f6efd29f48bcaf00d14184ed0771b b
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
181 | branch=default rebase_source=4c7da7adf18b785726a7421ef0d585bb5762990d
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
182 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
183 o 1 92a46c8588a7cd504c369259ef631b2c14ef4e91 c
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
184 | branch=default hg-git-rename-source=git
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
185 |
844
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
186 o 0 aa9eb6424386df2b0638fe6f480c3767fdd0e6fd a
fffe8883960b git_handler: mark source for rename info as Git or Mercurial
Siddharth Agarwal <sid0@fb.com>
parents: 765
diff changeset
187 branch=default hg-git-rename-source=git
757
8d55f839f13a tests: add test to ensure hg rename and extra metadata roundtrips
Siddharth Agarwal <sid0@fb.com>
parents:
diff changeset
188