Show More
@@ -1,97 +1,97 b'' | |||||
1 | mock bugzilla driver for testing template output: |
|
1 | mock bugzilla driver for testing template output: | |
2 |
|
2 | |||
3 | $ cat <<EOF > bzmock.py |
|
3 | $ cat <<EOF > bzmock.py | |
4 | > from __future__ import absolute_import |
|
4 | > from __future__ import absolute_import | |
5 | > from mercurial import extensions |
|
5 | > from mercurial import extensions | |
6 | > |
|
6 | > | |
7 | > def extsetup(ui): |
|
7 | > def extsetup(ui): | |
8 | > bugzilla = extensions.find('bugzilla') |
|
8 | > bugzilla = extensions.find('bugzilla') | |
9 | > class bzmock(bugzilla.bzaccess): |
|
9 | > class bzmock(bugzilla.bzaccess): | |
10 | > def __init__(self, ui): |
|
10 | > def __init__(self, ui): | |
11 | > super(bzmock, self).__init__(ui) |
|
11 | > super(bzmock, self).__init__(ui) | |
12 | > self._logfile = ui.config('bugzilla', 'mocklog') |
|
12 | > self._logfile = ui.config('bugzilla', 'mocklog') | |
13 | > def updatebug(self, bugid, newstate, text, committer): |
|
13 | > def updatebug(self, bugid, newstate, text, committer): | |
14 | > with open(self._logfile, 'a') as f: |
|
14 | > with open(self._logfile, 'a') as f: | |
15 | > f.write('update bugid=%r, newstate=%r, committer=%r\n' |
|
15 | > f.write('update bugid=%r, newstate=%r, committer=%r\n' | |
16 | > % (bugid, newstate, committer)) |
|
16 | > % (bugid, newstate, committer)) | |
17 | > f.write('----\n' + text + '\n----\n') |
|
17 | > f.write('----\n' + text + '\n----\n') | |
18 | > def notify(self, bugs, committer): |
|
18 | > def notify(self, bugs, committer): | |
19 | > with open(self._logfile, 'a') as f: |
|
19 | > with open(self._logfile, 'a') as f: | |
20 | > f.write('notify bugs=%r, committer=%r\n' |
|
20 | > f.write('notify bugs=%r, committer=%r\n' | |
21 | > % (bugs, committer)) |
|
21 | > % (bugs, committer)) | |
22 | > bugzilla.bugzilla._versions['mock'] = bzmock |
|
22 | > bugzilla.bugzilla._versions['mock'] = bzmock | |
23 | > EOF |
|
23 | > EOF | |
24 |
|
24 | |||
25 | set up mock repository: |
|
25 | set up mock repository: | |
26 |
|
26 | |||
27 | $ hg init mockremote |
|
27 | $ hg init mockremote | |
28 | $ cat <<EOF > mockremote/.hg/hgrc |
|
28 | $ cat <<EOF > mockremote/.hg/hgrc | |
29 | > [extensions] |
|
29 | > [extensions] | |
30 | > bugzilla = |
|
30 | > bugzilla = | |
31 | > bzmock = $TESTTMP/bzmock.py |
|
31 | > bzmock = $TESTTMP/bzmock.py | |
32 | > |
|
32 | > | |
33 | > [bugzilla] |
|
33 | > [bugzilla] | |
34 | > version = mock |
|
34 | > version = mock | |
35 | > mocklog = $TESTTMP/bzmock.log |
|
35 | > mocklog = $TESTTMP/bzmock.log | |
36 | > |
|
36 | > | |
37 | > [hooks] |
|
37 | > [hooks] | |
38 | > incoming.bugzilla = python:hgext.bugzilla.hook |
|
38 | > incoming.bugzilla = python:hgext.bugzilla.hook | |
39 | > |
|
39 | > | |
40 | > [web] |
|
40 | > [web] | |
41 | > baseurl=http://example.org/hg |
|
41 | > baseurl=http://example.org/hg | |
42 | > |
|
42 | > | |
43 | > %include $TESTTMP/bzstyle.hgrc |
|
43 | > %include $TESTTMP/bzstyle.hgrc | |
44 | > EOF |
|
44 | > EOF | |
45 |
|
45 | |||
46 | $ hg clone -q mockremote mocklocal |
|
46 | $ hg clone -q mockremote mocklocal | |
47 |
|
47 | |||
48 | push with default template: |
|
48 | push with default template: | |
49 |
|
49 | |||
50 | $ echo '[bugzilla]' > bzstyle.hgrc |
|
50 | $ echo '[bugzilla]' > bzstyle.hgrc | |
51 | $ echo foo > mocklocal/foo |
|
51 | $ echo foo > mocklocal/foo | |
52 | $ hg ci -R mocklocal -Aqm 'Fixes bug 123' |
|
52 | $ hg ci -R mocklocal -Aqm 'Fixes bug 123' | |
53 | $ hg -R mocklocal push -q |
|
53 | $ hg -R mocklocal push -q | |
54 | $ cat bzmock.log && rm bzmock.log |
|
54 | $ cat bzmock.log && rm bzmock.log | |
55 | update bugid=123, newstate={}, committer='test' |
|
55 | update bugid=123, newstate={}, committer='test' | |
56 | ---- |
|
56 | ---- | |
57 | changeset 7875a8342c6f in repo $TESTTMP/mockremote refers to bug 123. |
|
57 | changeset 7875a8342c6f in repo $TESTTMP/mockremote refers to bug 123. (glob) | |
58 | details: |
|
58 | details: | |
59 | Fixes bug 123 |
|
59 | Fixes bug 123 | |
60 | ---- |
|
60 | ---- | |
61 | notify bugs={123: {}}, committer='test' |
|
61 | notify bugs={123: {}}, committer='test' | |
62 |
|
62 | |||
63 | push with style: |
|
63 | push with style: | |
64 |
|
64 | |||
65 | $ cat <<EOF > bzstyle.map |
|
65 | $ cat <<EOF > bzstyle.map | |
66 | > changeset = "{node|short} refers to bug {bug}." |
|
66 | > changeset = "{node|short} refers to bug {bug}." | |
67 | > EOF |
|
67 | > EOF | |
68 | $ echo "style = $TESTTMP/bzstyle.map" >> bzstyle.hgrc |
|
68 | $ echo "style = $TESTTMP/bzstyle.map" >> bzstyle.hgrc | |
69 | $ echo foo >> mocklocal/foo |
|
69 | $ echo foo >> mocklocal/foo | |
70 | $ hg ci -R mocklocal -qm 'Fixes bug 456' |
|
70 | $ hg ci -R mocklocal -qm 'Fixes bug 456' | |
71 | $ hg -R mocklocal push -q |
|
71 | $ hg -R mocklocal push -q | |
72 | $ cat bzmock.log && rm bzmock.log |
|
72 | $ cat bzmock.log && rm bzmock.log | |
73 | update bugid=456, newstate={}, committer='test' |
|
73 | update bugid=456, newstate={}, committer='test' | |
74 | ---- |
|
74 | ---- | |
75 | 2808b172464b refers to bug 456. |
|
75 | 2808b172464b refers to bug 456. | |
76 | ---- |
|
76 | ---- | |
77 | notify bugs={456: {}}, committer='test' |
|
77 | notify bugs={456: {}}, committer='test' | |
78 |
|
78 | |||
79 | push with template (overrides style): |
|
79 | push with template (overrides style): | |
80 |
|
80 | |||
81 | $ cat <<EOF >> bzstyle.hgrc |
|
81 | $ cat <<EOF >> bzstyle.hgrc | |
82 | > template = Changeset {node|short} in {root|basename}. |
|
82 | > template = Changeset {node|short} in {root|basename}. | |
83 | > {hgweb}/rev/{node|short}\n |
|
83 | > {hgweb}/rev/{node|short}\n | |
84 | > {desc} |
|
84 | > {desc} | |
85 | > EOF |
|
85 | > EOF | |
86 | $ echo foo >> mocklocal/foo |
|
86 | $ echo foo >> mocklocal/foo | |
87 | $ hg ci -R mocklocal -qm 'Fixes bug 789' |
|
87 | $ hg ci -R mocklocal -qm 'Fixes bug 789' | |
88 | $ hg -R mocklocal push -q |
|
88 | $ hg -R mocklocal push -q | |
89 | $ cat bzmock.log && rm bzmock.log |
|
89 | $ cat bzmock.log && rm bzmock.log | |
90 | update bugid=789, newstate={}, committer='test' |
|
90 | update bugid=789, newstate={}, committer='test' | |
91 | ---- |
|
91 | ---- | |
92 | Changeset a770f3e409f2 in mockremote. |
|
92 | Changeset a770f3e409f2 in mockremote. | |
93 | http://example.org/hg/rev/a770f3e409f2 |
|
93 | http://example.org/hg/rev/a770f3e409f2 | |
94 |
|
94 | |||
95 | Fixes bug 789 |
|
95 | Fixes bug 789 | |
96 | ---- |
|
96 | ---- | |
97 | notify bugs={789: {}}, committer='test' |
|
97 | notify bugs={789: {}}, committer='test' |
@@ -1,535 +1,535 b'' | |||||
1 | $ cat >> $HGRCPATH <<EOF |
|
1 | $ cat >> $HGRCPATH <<EOF | |
2 | > [extensions] |
|
2 | > [extensions] | |
3 | > convert= |
|
3 | > convert= | |
4 | > [convert] |
|
4 | > [convert] | |
5 | > hg.saverev=False |
|
5 | > hg.saverev=False | |
6 | > EOF |
|
6 | > EOF | |
7 | $ hg help convert |
|
7 | $ hg help convert | |
8 | hg convert [OPTION]... SOURCE [DEST [REVMAP]] |
|
8 | hg convert [OPTION]... SOURCE [DEST [REVMAP]] | |
9 |
|
9 | |||
10 | convert a foreign SCM repository to a Mercurial one. |
|
10 | convert a foreign SCM repository to a Mercurial one. | |
11 |
|
11 | |||
12 | Accepted source formats [identifiers]: |
|
12 | Accepted source formats [identifiers]: | |
13 |
|
13 | |||
14 | - Mercurial [hg] |
|
14 | - Mercurial [hg] | |
15 | - CVS [cvs] |
|
15 | - CVS [cvs] | |
16 | - Darcs [darcs] |
|
16 | - Darcs [darcs] | |
17 | - git [git] |
|
17 | - git [git] | |
18 | - Subversion [svn] |
|
18 | - Subversion [svn] | |
19 | - Monotone [mtn] |
|
19 | - Monotone [mtn] | |
20 | - GNU Arch [gnuarch] |
|
20 | - GNU Arch [gnuarch] | |
21 | - Bazaar [bzr] |
|
21 | - Bazaar [bzr] | |
22 | - Perforce [p4] |
|
22 | - Perforce [p4] | |
23 |
|
23 | |||
24 | Accepted destination formats [identifiers]: |
|
24 | Accepted destination formats [identifiers]: | |
25 |
|
25 | |||
26 | - Mercurial [hg] |
|
26 | - Mercurial [hg] | |
27 | - Subversion [svn] (history on branches is not preserved) |
|
27 | - Subversion [svn] (history on branches is not preserved) | |
28 |
|
28 | |||
29 | If no revision is given, all revisions will be converted. Otherwise, |
|
29 | If no revision is given, all revisions will be converted. Otherwise, | |
30 | convert will only import up to the named revision (given in a format |
|
30 | convert will only import up to the named revision (given in a format | |
31 | understood by the source). |
|
31 | understood by the source). | |
32 |
|
32 | |||
33 | If no destination directory name is specified, it defaults to the basename |
|
33 | If no destination directory name is specified, it defaults to the basename | |
34 | of the source with "-hg" appended. If the destination repository doesn't |
|
34 | of the source with "-hg" appended. If the destination repository doesn't | |
35 | exist, it will be created. |
|
35 | exist, it will be created. | |
36 |
|
36 | |||
37 | By default, all sources except Mercurial will use --branchsort. Mercurial |
|
37 | By default, all sources except Mercurial will use --branchsort. Mercurial | |
38 | uses --sourcesort to preserve original revision numbers order. Sort modes |
|
38 | uses --sourcesort to preserve original revision numbers order. Sort modes | |
39 | have the following effects: |
|
39 | have the following effects: | |
40 |
|
40 | |||
41 | --branchsort convert from parent to child revision when possible, which |
|
41 | --branchsort convert from parent to child revision when possible, which | |
42 | means branches are usually converted one after the other. |
|
42 | means branches are usually converted one after the other. | |
43 | It generates more compact repositories. |
|
43 | It generates more compact repositories. | |
44 | --datesort sort revisions by date. Converted repositories have good- |
|
44 | --datesort sort revisions by date. Converted repositories have good- | |
45 | looking changelogs but are often an order of magnitude |
|
45 | looking changelogs but are often an order of magnitude | |
46 | larger than the same ones generated by --branchsort. |
|
46 | larger than the same ones generated by --branchsort. | |
47 | --sourcesort try to preserve source revisions order, only supported by |
|
47 | --sourcesort try to preserve source revisions order, only supported by | |
48 | Mercurial sources. |
|
48 | Mercurial sources. | |
49 | --closesort try to move closed revisions as close as possible to parent |
|
49 | --closesort try to move closed revisions as close as possible to parent | |
50 | branches, only supported by Mercurial sources. |
|
50 | branches, only supported by Mercurial sources. | |
51 |
|
51 | |||
52 | If "REVMAP" isn't given, it will be put in a default location |
|
52 | If "REVMAP" isn't given, it will be put in a default location | |
53 | ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that |
|
53 | ("<dest>/.hg/shamap" by default). The "REVMAP" is a simple text file that | |
54 | maps each source commit ID to the destination ID for that revision, like |
|
54 | maps each source commit ID to the destination ID for that revision, like | |
55 | so: |
|
55 | so: | |
56 |
|
56 | |||
57 | <source ID> <destination ID> |
|
57 | <source ID> <destination ID> | |
58 |
|
58 | |||
59 | If the file doesn't exist, it's automatically created. It's updated on |
|
59 | If the file doesn't exist, it's automatically created. It's updated on | |
60 | each commit copied, so 'hg convert' can be interrupted and can be run |
|
60 | each commit copied, so 'hg convert' can be interrupted and can be run | |
61 | repeatedly to copy new commits. |
|
61 | repeatedly to copy new commits. | |
62 |
|
62 | |||
63 | The authormap is a simple text file that maps each source commit author to |
|
63 | The authormap is a simple text file that maps each source commit author to | |
64 | a destination commit author. It is handy for source SCMs that use unix |
|
64 | a destination commit author. It is handy for source SCMs that use unix | |
65 | logins to identify authors (e.g.: CVS). One line per author mapping and |
|
65 | logins to identify authors (e.g.: CVS). One line per author mapping and | |
66 | the line format is: |
|
66 | the line format is: | |
67 |
|
67 | |||
68 | source author = destination author |
|
68 | source author = destination author | |
69 |
|
69 | |||
70 | Empty lines and lines starting with a "#" are ignored. |
|
70 | Empty lines and lines starting with a "#" are ignored. | |
71 |
|
71 | |||
72 | The filemap is a file that allows filtering and remapping of files and |
|
72 | The filemap is a file that allows filtering and remapping of files and | |
73 | directories. Each line can contain one of the following directives: |
|
73 | directories. Each line can contain one of the following directives: | |
74 |
|
74 | |||
75 | include path/to/file-or-dir |
|
75 | include path/to/file-or-dir | |
76 |
|
76 | |||
77 | exclude path/to/file-or-dir |
|
77 | exclude path/to/file-or-dir | |
78 |
|
78 | |||
79 | rename path/to/source path/to/destination |
|
79 | rename path/to/source path/to/destination | |
80 |
|
80 | |||
81 | Comment lines start with "#". A specified path matches if it equals the |
|
81 | Comment lines start with "#". A specified path matches if it equals the | |
82 | full relative name of a file or one of its parent directories. The |
|
82 | full relative name of a file or one of its parent directories. The | |
83 | "include" or "exclude" directive with the longest matching path applies, |
|
83 | "include" or "exclude" directive with the longest matching path applies, | |
84 | so line order does not matter. |
|
84 | so line order does not matter. | |
85 |
|
85 | |||
86 | The "include" directive causes a file, or all files under a directory, to |
|
86 | The "include" directive causes a file, or all files under a directory, to | |
87 | be included in the destination repository. The default if there are no |
|
87 | be included in the destination repository. The default if there are no | |
88 | "include" statements is to include everything. If there are any "include" |
|
88 | "include" statements is to include everything. If there are any "include" | |
89 | statements, nothing else is included. The "exclude" directive causes files |
|
89 | statements, nothing else is included. The "exclude" directive causes files | |
90 | or directories to be omitted. The "rename" directive renames a file or |
|
90 | or directories to be omitted. The "rename" directive renames a file or | |
91 | directory if it is converted. To rename from a subdirectory into the root |
|
91 | directory if it is converted. To rename from a subdirectory into the root | |
92 | of the repository, use "." as the path to rename to. |
|
92 | of the repository, use "." as the path to rename to. | |
93 |
|
93 | |||
94 | "--full" will make sure the converted changesets contain exactly the right |
|
94 | "--full" will make sure the converted changesets contain exactly the right | |
95 | files with the right content. It will make a full conversion of all files, |
|
95 | files with the right content. It will make a full conversion of all files, | |
96 | not just the ones that have changed. Files that already are correct will |
|
96 | not just the ones that have changed. Files that already are correct will | |
97 | not be changed. This can be used to apply filemap changes when converting |
|
97 | not be changed. This can be used to apply filemap changes when converting | |
98 | incrementally. This is currently only supported for Mercurial and |
|
98 | incrementally. This is currently only supported for Mercurial and | |
99 | Subversion. |
|
99 | Subversion. | |
100 |
|
100 | |||
101 | The splicemap is a file that allows insertion of synthetic history, |
|
101 | The splicemap is a file that allows insertion of synthetic history, | |
102 | letting you specify the parents of a revision. This is useful if you want |
|
102 | letting you specify the parents of a revision. This is useful if you want | |
103 | to e.g. give a Subversion merge two parents, or graft two disconnected |
|
103 | to e.g. give a Subversion merge two parents, or graft two disconnected | |
104 | series of history together. Each entry contains a key, followed by a |
|
104 | series of history together. Each entry contains a key, followed by a | |
105 | space, followed by one or two comma-separated values: |
|
105 | space, followed by one or two comma-separated values: | |
106 |
|
106 | |||
107 | key parent1, parent2 |
|
107 | key parent1, parent2 | |
108 |
|
108 | |||
109 | The key is the revision ID in the source revision control system whose |
|
109 | The key is the revision ID in the source revision control system whose | |
110 | parents should be modified (same format as a key in .hg/shamap). The |
|
110 | parents should be modified (same format as a key in .hg/shamap). The | |
111 | values are the revision IDs (in either the source or destination revision |
|
111 | values are the revision IDs (in either the source or destination revision | |
112 | control system) that should be used as the new parents for that node. For |
|
112 | control system) that should be used as the new parents for that node. For | |
113 | example, if you have merged "release-1.0" into "trunk", then you should |
|
113 | example, if you have merged "release-1.0" into "trunk", then you should | |
114 | specify the revision on "trunk" as the first parent and the one on the |
|
114 | specify the revision on "trunk" as the first parent and the one on the | |
115 | "release-1.0" branch as the second. |
|
115 | "release-1.0" branch as the second. | |
116 |
|
116 | |||
117 | The branchmap is a file that allows you to rename a branch when it is |
|
117 | The branchmap is a file that allows you to rename a branch when it is | |
118 | being brought in from whatever external repository. When used in |
|
118 | being brought in from whatever external repository. When used in | |
119 | conjunction with a splicemap, it allows for a powerful combination to help |
|
119 | conjunction with a splicemap, it allows for a powerful combination to help | |
120 | fix even the most badly mismanaged repositories and turn them into nicely |
|
120 | fix even the most badly mismanaged repositories and turn them into nicely | |
121 | structured Mercurial repositories. The branchmap contains lines of the |
|
121 | structured Mercurial repositories. The branchmap contains lines of the | |
122 | form: |
|
122 | form: | |
123 |
|
123 | |||
124 | original_branch_name new_branch_name |
|
124 | original_branch_name new_branch_name | |
125 |
|
125 | |||
126 | where "original_branch_name" is the name of the branch in the source |
|
126 | where "original_branch_name" is the name of the branch in the source | |
127 | repository, and "new_branch_name" is the name of the branch is the |
|
127 | repository, and "new_branch_name" is the name of the branch is the | |
128 | destination repository. No whitespace is allowed in the branch names. This |
|
128 | destination repository. No whitespace is allowed in the branch names. This | |
129 | can be used to (for instance) move code in one repository from "default" |
|
129 | can be used to (for instance) move code in one repository from "default" | |
130 | to a named branch. |
|
130 | to a named branch. | |
131 |
|
131 | |||
132 | Mercurial Source |
|
132 | Mercurial Source | |
133 | ################ |
|
133 | ################ | |
134 |
|
134 | |||
135 | The Mercurial source recognizes the following configuration options, which |
|
135 | The Mercurial source recognizes the following configuration options, which | |
136 | you can set on the command line with "--config": |
|
136 | you can set on the command line with "--config": | |
137 |
|
137 | |||
138 | convert.hg.ignoreerrors |
|
138 | convert.hg.ignoreerrors | |
139 | ignore integrity errors when reading. Use it to fix |
|
139 | ignore integrity errors when reading. Use it to fix | |
140 | Mercurial repositories with missing revlogs, by converting |
|
140 | Mercurial repositories with missing revlogs, by converting | |
141 | from and to Mercurial. Default is False. |
|
141 | from and to Mercurial. Default is False. | |
142 | convert.hg.saverev |
|
142 | convert.hg.saverev | |
143 | store original revision ID in changeset (forces target IDs |
|
143 | store original revision ID in changeset (forces target IDs | |
144 | to change). It takes a boolean argument and defaults to |
|
144 | to change). It takes a boolean argument and defaults to | |
145 | False. |
|
145 | False. | |
146 | convert.hg.startrev |
|
146 | convert.hg.startrev | |
147 | specify the initial Mercurial revision. The default is 0. |
|
147 | specify the initial Mercurial revision. The default is 0. | |
148 | convert.hg.revs |
|
148 | convert.hg.revs | |
149 | revset specifying the source revisions to convert. |
|
149 | revset specifying the source revisions to convert. | |
150 |
|
150 | |||
151 | CVS Source |
|
151 | CVS Source | |
152 | ########## |
|
152 | ########## | |
153 |
|
153 | |||
154 | CVS source will use a sandbox (i.e. a checked-out copy) from CVS to |
|
154 | CVS source will use a sandbox (i.e. a checked-out copy) from CVS to | |
155 | indicate the starting point of what will be converted. Direct access to |
|
155 | indicate the starting point of what will be converted. Direct access to | |
156 | the repository files is not needed, unless of course the repository is |
|
156 | the repository files is not needed, unless of course the repository is | |
157 | ":local:". The conversion uses the top level directory in the sandbox to |
|
157 | ":local:". The conversion uses the top level directory in the sandbox to | |
158 | find the CVS repository, and then uses CVS rlog commands to find files to |
|
158 | find the CVS repository, and then uses CVS rlog commands to find files to | |
159 | convert. This means that unless a filemap is given, all files under the |
|
159 | convert. This means that unless a filemap is given, all files under the | |
160 | starting directory will be converted, and that any directory |
|
160 | starting directory will be converted, and that any directory | |
161 | reorganization in the CVS sandbox is ignored. |
|
161 | reorganization in the CVS sandbox is ignored. | |
162 |
|
162 | |||
163 | The following options can be used with "--config": |
|
163 | The following options can be used with "--config": | |
164 |
|
164 | |||
165 | convert.cvsps.cache |
|
165 | convert.cvsps.cache | |
166 | Set to False to disable remote log caching, for testing and |
|
166 | Set to False to disable remote log caching, for testing and | |
167 | debugging purposes. Default is True. |
|
167 | debugging purposes. Default is True. | |
168 | convert.cvsps.fuzz |
|
168 | convert.cvsps.fuzz | |
169 | Specify the maximum time (in seconds) that is allowed |
|
169 | Specify the maximum time (in seconds) that is allowed | |
170 | between commits with identical user and log message in a |
|
170 | between commits with identical user and log message in a | |
171 | single changeset. When very large files were checked in as |
|
171 | single changeset. When very large files were checked in as | |
172 | part of a changeset then the default may not be long enough. |
|
172 | part of a changeset then the default may not be long enough. | |
173 | The default is 60. |
|
173 | The default is 60. | |
174 | convert.cvsps.mergeto |
|
174 | convert.cvsps.mergeto | |
175 | Specify a regular expression to which commit log messages |
|
175 | Specify a regular expression to which commit log messages | |
176 | are matched. If a match occurs, then the conversion process |
|
176 | are matched. If a match occurs, then the conversion process | |
177 | will insert a dummy revision merging the branch on which |
|
177 | will insert a dummy revision merging the branch on which | |
178 | this log message occurs to the branch indicated in the |
|
178 | this log message occurs to the branch indicated in the | |
179 | regex. Default is "{{mergetobranch ([-\w]+)}}" |
|
179 | regex. Default is "{{mergetobranch ([-\w]+)}}" | |
180 | convert.cvsps.mergefrom |
|
180 | convert.cvsps.mergefrom | |
181 | Specify a regular expression to which commit log messages |
|
181 | Specify a regular expression to which commit log messages | |
182 | are matched. If a match occurs, then the conversion process |
|
182 | are matched. If a match occurs, then the conversion process | |
183 | will add the most recent revision on the branch indicated in |
|
183 | will add the most recent revision on the branch indicated in | |
184 | the regex as the second parent of the changeset. Default is |
|
184 | the regex as the second parent of the changeset. Default is | |
185 | "{{mergefrombranch ([-\w]+)}}" |
|
185 | "{{mergefrombranch ([-\w]+)}}" | |
186 | convert.localtimezone |
|
186 | convert.localtimezone | |
187 | use local time (as determined by the TZ environment |
|
187 | use local time (as determined by the TZ environment | |
188 | variable) for changeset date/times. The default is False |
|
188 | variable) for changeset date/times. The default is False | |
189 | (use UTC). |
|
189 | (use UTC). | |
190 | hooks.cvslog Specify a Python function to be called at the end of |
|
190 | hooks.cvslog Specify a Python function to be called at the end of | |
191 | gathering the CVS log. The function is passed a list with |
|
191 | gathering the CVS log. The function is passed a list with | |
192 | the log entries, and can modify the entries in-place, or add |
|
192 | the log entries, and can modify the entries in-place, or add | |
193 | or delete them. |
|
193 | or delete them. | |
194 | hooks.cvschangesets |
|
194 | hooks.cvschangesets | |
195 | Specify a Python function to be called after the changesets |
|
195 | Specify a Python function to be called after the changesets | |
196 | are calculated from the CVS log. The function is passed a |
|
196 | are calculated from the CVS log. The function is passed a | |
197 | list with the changeset entries, and can modify the |
|
197 | list with the changeset entries, and can modify the | |
198 | changesets in-place, or add or delete them. |
|
198 | changesets in-place, or add or delete them. | |
199 |
|
199 | |||
200 | An additional "debugcvsps" Mercurial command allows the builtin changeset |
|
200 | An additional "debugcvsps" Mercurial command allows the builtin changeset | |
201 | merging code to be run without doing a conversion. Its parameters and |
|
201 | merging code to be run without doing a conversion. Its parameters and | |
202 | output are similar to that of cvsps 2.1. Please see the command help for |
|
202 | output are similar to that of cvsps 2.1. Please see the command help for | |
203 | more details. |
|
203 | more details. | |
204 |
|
204 | |||
205 | Subversion Source |
|
205 | Subversion Source | |
206 | ################# |
|
206 | ################# | |
207 |
|
207 | |||
208 | Subversion source detects classical trunk/branches/tags layouts. By |
|
208 | Subversion source detects classical trunk/branches/tags layouts. By | |
209 | default, the supplied "svn://repo/path/" source URL is converted as a |
|
209 | default, the supplied "svn://repo/path/" source URL is converted as a | |
210 | single branch. If "svn://repo/path/trunk" exists it replaces the default |
|
210 | single branch. If "svn://repo/path/trunk" exists it replaces the default | |
211 | branch. If "svn://repo/path/branches" exists, its subdirectories are |
|
211 | branch. If "svn://repo/path/branches" exists, its subdirectories are | |
212 | listed as possible branches. If "svn://repo/path/tags" exists, it is |
|
212 | listed as possible branches. If "svn://repo/path/tags" exists, it is | |
213 | looked for tags referencing converted branches. Default "trunk", |
|
213 | looked for tags referencing converted branches. Default "trunk", | |
214 | "branches" and "tags" values can be overridden with following options. Set |
|
214 | "branches" and "tags" values can be overridden with following options. Set | |
215 | them to paths relative to the source URL, or leave them blank to disable |
|
215 | them to paths relative to the source URL, or leave them blank to disable | |
216 | auto detection. |
|
216 | auto detection. | |
217 |
|
217 | |||
218 | The following options can be set with "--config": |
|
218 | The following options can be set with "--config": | |
219 |
|
219 | |||
220 | convert.svn.branches |
|
220 | convert.svn.branches | |
221 | specify the directory containing branches. The default is |
|
221 | specify the directory containing branches. The default is | |
222 | "branches". |
|
222 | "branches". | |
223 | convert.svn.tags |
|
223 | convert.svn.tags | |
224 | specify the directory containing tags. The default is |
|
224 | specify the directory containing tags. The default is | |
225 | "tags". |
|
225 | "tags". | |
226 | convert.svn.trunk |
|
226 | convert.svn.trunk | |
227 | specify the name of the trunk branch. The default is |
|
227 | specify the name of the trunk branch. The default is | |
228 | "trunk". |
|
228 | "trunk". | |
229 | convert.localtimezone |
|
229 | convert.localtimezone | |
230 | use local time (as determined by the TZ environment |
|
230 | use local time (as determined by the TZ environment | |
231 | variable) for changeset date/times. The default is False |
|
231 | variable) for changeset date/times. The default is False | |
232 | (use UTC). |
|
232 | (use UTC). | |
233 |
|
233 | |||
234 | Source history can be retrieved starting at a specific revision, instead |
|
234 | Source history can be retrieved starting at a specific revision, instead | |
235 | of being integrally converted. Only single branch conversions are |
|
235 | of being integrally converted. Only single branch conversions are | |
236 | supported. |
|
236 | supported. | |
237 |
|
237 | |||
238 | convert.svn.startrev |
|
238 | convert.svn.startrev | |
239 | specify start Subversion revision number. The default is 0. |
|
239 | specify start Subversion revision number. The default is 0. | |
240 |
|
240 | |||
241 | Git Source |
|
241 | Git Source | |
242 | ########## |
|
242 | ########## | |
243 |
|
243 | |||
244 | The Git importer converts commits from all reachable branches (refs in |
|
244 | The Git importer converts commits from all reachable branches (refs in | |
245 | refs/heads) and remotes (refs in refs/remotes) to Mercurial. Branches are |
|
245 | refs/heads) and remotes (refs in refs/remotes) to Mercurial. Branches are | |
246 | converted to bookmarks with the same name, with the leading 'refs/heads' |
|
246 | converted to bookmarks with the same name, with the leading 'refs/heads' | |
247 | stripped. Git submodules are converted to Git subrepos in Mercurial. |
|
247 | stripped. Git submodules are converted to Git subrepos in Mercurial. | |
248 |
|
248 | |||
249 | The following options can be set with "--config": |
|
249 | The following options can be set with "--config": | |
250 |
|
250 | |||
251 | convert.git.similarity |
|
251 | convert.git.similarity | |
252 | specify how similar files modified in a commit must be to be |
|
252 | specify how similar files modified in a commit must be to be | |
253 | imported as renames or copies, as a percentage between "0" |
|
253 | imported as renames or copies, as a percentage between "0" | |
254 | (disabled) and "100" (files must be identical). For example, |
|
254 | (disabled) and "100" (files must be identical). For example, | |
255 | "90" means that a delete/add pair will be imported as a |
|
255 | "90" means that a delete/add pair will be imported as a | |
256 | rename if more than 90% of the file hasn't changed. The |
|
256 | rename if more than 90% of the file hasn't changed. The | |
257 | default is "50". |
|
257 | default is "50". | |
258 | convert.git.findcopiesharder |
|
258 | convert.git.findcopiesharder | |
259 | while detecting copies, look at all files in the working |
|
259 | while detecting copies, look at all files in the working | |
260 | copy instead of just changed ones. This is very expensive |
|
260 | copy instead of just changed ones. This is very expensive | |
261 | for large projects, and is only effective when |
|
261 | for large projects, and is only effective when | |
262 | "convert.git.similarity" is greater than 0. The default is |
|
262 | "convert.git.similarity" is greater than 0. The default is | |
263 | False. |
|
263 | False. | |
264 | convert.git.remoteprefix |
|
264 | convert.git.remoteprefix | |
265 | remote refs are converted as bookmarks with |
|
265 | remote refs are converted as bookmarks with | |
266 | "convert.git.remoteprefix" as a prefix followed by a /. The |
|
266 | "convert.git.remoteprefix" as a prefix followed by a /. The | |
267 | default is 'remote'. |
|
267 | default is 'remote'. | |
268 | convert.git.skipsubmodules |
|
268 | convert.git.skipsubmodules | |
269 | does not convert root level .gitmodules files or files with |
|
269 | does not convert root level .gitmodules files or files with | |
270 | 160000 mode indicating a submodule. Default is False. |
|
270 | 160000 mode indicating a submodule. Default is False. | |
271 |
|
271 | |||
272 | Perforce Source |
|
272 | Perforce Source | |
273 | ############### |
|
273 | ############### | |
274 |
|
274 | |||
275 | The Perforce (P4) importer can be given a p4 depot path or a client |
|
275 | The Perforce (P4) importer can be given a p4 depot path or a client | |
276 | specification as source. It will convert all files in the source to a flat |
|
276 | specification as source. It will convert all files in the source to a flat | |
277 | Mercurial repository, ignoring labels, branches and integrations. Note |
|
277 | Mercurial repository, ignoring labels, branches and integrations. Note | |
278 | that when a depot path is given you then usually should specify a target |
|
278 | that when a depot path is given you then usually should specify a target | |
279 | directory, because otherwise the target may be named "...-hg". |
|
279 | directory, because otherwise the target may be named "...-hg". | |
280 |
|
280 | |||
281 | The following options can be set with "--config": |
|
281 | The following options can be set with "--config": | |
282 |
|
282 | |||
283 | convert.p4.encoding |
|
283 | convert.p4.encoding | |
284 | specify the encoding to use when decoding standard output of |
|
284 | specify the encoding to use when decoding standard output of | |
285 | the Perforce command line tool. The default is default |
|
285 | the Perforce command line tool. The default is default | |
286 | system encoding. |
|
286 | system encoding. | |
287 | convert.p4.startrev |
|
287 | convert.p4.startrev | |
288 | specify initial Perforce revision (a Perforce changelist |
|
288 | specify initial Perforce revision (a Perforce changelist | |
289 | number). |
|
289 | number). | |
290 |
|
290 | |||
291 | Mercurial Destination |
|
291 | Mercurial Destination | |
292 | ##################### |
|
292 | ##################### | |
293 |
|
293 | |||
294 | The Mercurial destination will recognize Mercurial subrepositories in the |
|
294 | The Mercurial destination will recognize Mercurial subrepositories in the | |
295 | destination directory, and update the .hgsubstate file automatically if |
|
295 | destination directory, and update the .hgsubstate file automatically if | |
296 | the destination subrepositories contain the <dest>/<sub>/.hg/shamap file. |
|
296 | the destination subrepositories contain the <dest>/<sub>/.hg/shamap file. | |
297 | Converting a repository with subrepositories requires converting a single |
|
297 | Converting a repository with subrepositories requires converting a single | |
298 | repository at a time, from the bottom up. |
|
298 | repository at a time, from the bottom up. | |
299 |
|
299 | |||
300 | The following options are supported: |
|
300 | The following options are supported: | |
301 |
|
301 | |||
302 | convert.hg.clonebranches |
|
302 | convert.hg.clonebranches | |
303 | dispatch source branches in separate clones. The default is |
|
303 | dispatch source branches in separate clones. The default is | |
304 | False. |
|
304 | False. | |
305 | convert.hg.tagsbranch |
|
305 | convert.hg.tagsbranch | |
306 | branch name for tag revisions, defaults to "default". |
|
306 | branch name for tag revisions, defaults to "default". | |
307 | convert.hg.usebranchnames |
|
307 | convert.hg.usebranchnames | |
308 | preserve branch names. The default is True. |
|
308 | preserve branch names. The default is True. | |
309 | convert.hg.sourcename |
|
309 | convert.hg.sourcename | |
310 | records the given string as a 'convert_source' extra value |
|
310 | records the given string as a 'convert_source' extra value | |
311 | on each commit made in the target repository. The default is |
|
311 | on each commit made in the target repository. The default is | |
312 | None. |
|
312 | None. | |
313 |
|
313 | |||
314 | All Destinations |
|
314 | All Destinations | |
315 | ################ |
|
315 | ################ | |
316 |
|
316 | |||
317 | All destination types accept the following options: |
|
317 | All destination types accept the following options: | |
318 |
|
318 | |||
319 | convert.skiptags |
|
319 | convert.skiptags | |
320 | does not convert tags from the source repo to the target |
|
320 | does not convert tags from the source repo to the target | |
321 | repo. The default is False. |
|
321 | repo. The default is False. | |
322 |
|
322 | |||
323 | options ([+] can be repeated): |
|
323 | options ([+] can be repeated): | |
324 |
|
324 | |||
325 | -s --source-type TYPE source repository type |
|
325 | -s --source-type TYPE source repository type | |
326 | -d --dest-type TYPE destination repository type |
|
326 | -d --dest-type TYPE destination repository type | |
327 | -r --rev REV [+] import up to source revision REV |
|
327 | -r --rev REV [+] import up to source revision REV | |
328 | -A --authormap FILE remap usernames using this file |
|
328 | -A --authormap FILE remap usernames using this file | |
329 | --filemap FILE remap file names using contents of file |
|
329 | --filemap FILE remap file names using contents of file | |
330 | --full apply filemap changes by converting all files again |
|
330 | --full apply filemap changes by converting all files again | |
331 | --splicemap FILE splice synthesized history into place |
|
331 | --splicemap FILE splice synthesized history into place | |
332 | --branchmap FILE change branch names while converting |
|
332 | --branchmap FILE change branch names while converting | |
333 | --branchsort try to sort changesets by branches |
|
333 | --branchsort try to sort changesets by branches | |
334 | --datesort try to sort changesets by date |
|
334 | --datesort try to sort changesets by date | |
335 | --sourcesort preserve source changesets order |
|
335 | --sourcesort preserve source changesets order | |
336 | --closesort try to reorder closed revisions |
|
336 | --closesort try to reorder closed revisions | |
337 |
|
337 | |||
338 | (some details hidden, use --verbose to show complete help) |
|
338 | (some details hidden, use --verbose to show complete help) | |
339 | $ hg init a |
|
339 | $ hg init a | |
340 | $ cd a |
|
340 | $ cd a | |
341 | $ echo a > a |
|
341 | $ echo a > a | |
342 | $ hg ci -d'0 0' -Ama |
|
342 | $ hg ci -d'0 0' -Ama | |
343 | adding a |
|
343 | adding a | |
344 | $ hg cp a b |
|
344 | $ hg cp a b | |
345 | $ hg ci -d'1 0' -mb |
|
345 | $ hg ci -d'1 0' -mb | |
346 | $ hg rm a |
|
346 | $ hg rm a | |
347 | $ hg ci -d'2 0' -mc |
|
347 | $ hg ci -d'2 0' -mc | |
348 | $ hg mv b a |
|
348 | $ hg mv b a | |
349 | $ hg ci -d'3 0' -md |
|
349 | $ hg ci -d'3 0' -md | |
350 | $ echo a >> a |
|
350 | $ echo a >> a | |
351 | $ hg ci -d'4 0' -me |
|
351 | $ hg ci -d'4 0' -me | |
352 | $ cd .. |
|
352 | $ cd .. | |
353 | $ hg convert a 2>&1 | grep -v 'subversion python bindings could not be loaded' |
|
353 | $ hg convert a 2>&1 | grep -v 'subversion python bindings could not be loaded' | |
354 | assuming destination a-hg |
|
354 | assuming destination a-hg | |
355 | initializing destination a-hg repository |
|
355 | initializing destination a-hg repository | |
356 | scanning source... |
|
356 | scanning source... | |
357 | sorting... |
|
357 | sorting... | |
358 | converting... |
|
358 | converting... | |
359 | 4 a |
|
359 | 4 a | |
360 | 3 b |
|
360 | 3 b | |
361 | 2 c |
|
361 | 2 c | |
362 | 1 d |
|
362 | 1 d | |
363 | 0 e |
|
363 | 0 e | |
364 | $ hg --cwd a-hg pull ../a |
|
364 | $ hg --cwd a-hg pull ../a | |
365 | pulling from ../a |
|
365 | pulling from ../a | |
366 | searching for changes |
|
366 | searching for changes | |
367 | no changes found |
|
367 | no changes found | |
368 |
|
368 | |||
369 | conversion to existing file should fail |
|
369 | conversion to existing file should fail | |
370 |
|
370 | |||
371 | $ touch bogusfile |
|
371 | $ touch bogusfile | |
372 | $ hg convert a bogusfile |
|
372 | $ hg convert a bogusfile | |
373 | initializing destination bogusfile repository |
|
373 | initializing destination bogusfile repository | |
374 | abort: cannot create new bundle repository |
|
374 | abort: cannot create new bundle repository | |
375 | [255] |
|
375 | [255] | |
376 |
|
376 | |||
377 | #if unix-permissions no-root |
|
377 | #if unix-permissions no-root | |
378 |
|
378 | |||
379 | conversion to dir without permissions should fail |
|
379 | conversion to dir without permissions should fail | |
380 |
|
380 | |||
381 | $ mkdir bogusdir |
|
381 | $ mkdir bogusdir | |
382 | $ chmod 000 bogusdir |
|
382 | $ chmod 000 bogusdir | |
383 |
|
383 | |||
384 | $ hg convert a bogusdir |
|
384 | $ hg convert a bogusdir | |
385 | abort: Permission denied: 'bogusdir' |
|
385 | abort: Permission denied: 'bogusdir' | |
386 | [255] |
|
386 | [255] | |
387 |
|
387 | |||
388 | user permissions should succeed |
|
388 | user permissions should succeed | |
389 |
|
389 | |||
390 | $ chmod 700 bogusdir |
|
390 | $ chmod 700 bogusdir | |
391 | $ hg convert a bogusdir |
|
391 | $ hg convert a bogusdir | |
392 | initializing destination bogusdir repository |
|
392 | initializing destination bogusdir repository | |
393 | scanning source... |
|
393 | scanning source... | |
394 | sorting... |
|
394 | sorting... | |
395 | converting... |
|
395 | converting... | |
396 | 4 a |
|
396 | 4 a | |
397 | 3 b |
|
397 | 3 b | |
398 | 2 c |
|
398 | 2 c | |
399 | 1 d |
|
399 | 1 d | |
400 | 0 e |
|
400 | 0 e | |
401 |
|
401 | |||
402 | #endif |
|
402 | #endif | |
403 |
|
403 | |||
404 | test pre and post conversion actions |
|
404 | test pre and post conversion actions | |
405 |
|
405 | |||
406 | $ echo 'include b' > filemap |
|
406 | $ echo 'include b' > filemap | |
407 | $ hg convert --debug --filemap filemap a partialb | \ |
|
407 | $ hg convert --debug --filemap filemap a partialb | \ | |
408 | > grep 'run hg' |
|
408 | > grep 'run hg' | |
409 | run hg source pre-conversion action |
|
409 | run hg source pre-conversion action | |
410 | run hg sink pre-conversion action |
|
410 | run hg sink pre-conversion action | |
411 | run hg sink post-conversion action |
|
411 | run hg sink post-conversion action | |
412 | run hg source post-conversion action |
|
412 | run hg source post-conversion action | |
413 |
|
413 | |||
414 | converting empty dir should fail "nicely |
|
414 | converting empty dir should fail "nicely | |
415 |
|
415 | |||
416 | $ mkdir emptydir |
|
416 | $ mkdir emptydir | |
417 |
|
417 | |||
418 | override $PATH to ensure p4 not visible; use $PYTHON in case we're |
|
418 | override $PATH to ensure p4 not visible; use $PYTHON in case we're | |
419 | running from a devel copy, not a temp installation |
|
419 | running from a devel copy, not a temp installation | |
420 |
|
420 | |||
421 | $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg convert emptydir |
|
421 | $ PATH="$BINDIR" $PYTHON "$BINDIR"/hg convert emptydir | |
422 | assuming destination emptydir-hg |
|
422 | assuming destination emptydir-hg | |
423 | initializing destination emptydir-hg repository |
|
423 | initializing destination emptydir-hg repository | |
424 | emptydir does not look like a CVS checkout |
|
424 | emptydir does not look like a CVS checkout | |
425 | $TESTTMP/emptydir does not look like a Git repository |
|
425 | $TESTTMP/emptydir does not look like a Git repository (glob) | |
426 | emptydir does not look like a Subversion repository |
|
426 | emptydir does not look like a Subversion repository | |
427 | emptydir is not a local Mercurial repository |
|
427 | emptydir is not a local Mercurial repository | |
428 | emptydir does not look like a darcs repository |
|
428 | emptydir does not look like a darcs repository | |
429 | emptydir does not look like a monotone repository |
|
429 | emptydir does not look like a monotone repository | |
430 | emptydir does not look like a GNU Arch repository |
|
430 | emptydir does not look like a GNU Arch repository | |
431 | emptydir does not look like a Bazaar repository |
|
431 | emptydir does not look like a Bazaar repository | |
432 | cannot find required "p4" tool |
|
432 | cannot find required "p4" tool | |
433 | abort: emptydir: missing or unsupported repository |
|
433 | abort: emptydir: missing or unsupported repository | |
434 | [255] |
|
434 | [255] | |
435 |
|
435 | |||
436 | convert with imaginary source type |
|
436 | convert with imaginary source type | |
437 |
|
437 | |||
438 | $ hg convert --source-type foo a a-foo |
|
438 | $ hg convert --source-type foo a a-foo | |
439 | initializing destination a-foo repository |
|
439 | initializing destination a-foo repository | |
440 | abort: foo: invalid source repository type |
|
440 | abort: foo: invalid source repository type | |
441 | [255] |
|
441 | [255] | |
442 |
|
442 | |||
443 | convert with imaginary sink type |
|
443 | convert with imaginary sink type | |
444 |
|
444 | |||
445 | $ hg convert --dest-type foo a a-foo |
|
445 | $ hg convert --dest-type foo a a-foo | |
446 | abort: foo: invalid destination repository type |
|
446 | abort: foo: invalid destination repository type | |
447 | [255] |
|
447 | [255] | |
448 |
|
448 | |||
449 | testing: convert must not produce duplicate entries in fncache |
|
449 | testing: convert must not produce duplicate entries in fncache | |
450 |
|
450 | |||
451 | $ hg convert a b |
|
451 | $ hg convert a b | |
452 | initializing destination b repository |
|
452 | initializing destination b repository | |
453 | scanning source... |
|
453 | scanning source... | |
454 | sorting... |
|
454 | sorting... | |
455 | converting... |
|
455 | converting... | |
456 | 4 a |
|
456 | 4 a | |
457 | 3 b |
|
457 | 3 b | |
458 | 2 c |
|
458 | 2 c | |
459 | 1 d |
|
459 | 1 d | |
460 | 0 e |
|
460 | 0 e | |
461 |
|
461 | |||
462 | contents of fncache file: |
|
462 | contents of fncache file: | |
463 |
|
463 | |||
464 | $ cat b/.hg/store/fncache | sort |
|
464 | $ cat b/.hg/store/fncache | sort | |
465 | data/a.i |
|
465 | data/a.i | |
466 | data/b.i |
|
466 | data/b.i | |
467 |
|
467 | |||
468 | test bogus URL |
|
468 | test bogus URL | |
469 |
|
469 | |||
470 | $ hg convert -q bzr+ssh://foobar@selenic.com/baz baz |
|
470 | $ hg convert -q bzr+ssh://foobar@selenic.com/baz baz | |
471 | abort: bzr+ssh://foobar@selenic.com/baz: missing or unsupported repository |
|
471 | abort: bzr+ssh://foobar@selenic.com/baz: missing or unsupported repository | |
472 | [255] |
|
472 | [255] | |
473 |
|
473 | |||
474 | test revset converted() lookup |
|
474 | test revset converted() lookup | |
475 |
|
475 | |||
476 | $ hg --config convert.hg.saverev=True convert a c |
|
476 | $ hg --config convert.hg.saverev=True convert a c | |
477 | initializing destination c repository |
|
477 | initializing destination c repository | |
478 | scanning source... |
|
478 | scanning source... | |
479 | sorting... |
|
479 | sorting... | |
480 | converting... |
|
480 | converting... | |
481 | 4 a |
|
481 | 4 a | |
482 | 3 b |
|
482 | 3 b | |
483 | 2 c |
|
483 | 2 c | |
484 | 1 d |
|
484 | 1 d | |
485 | 0 e |
|
485 | 0 e | |
486 | $ echo f > c/f |
|
486 | $ echo f > c/f | |
487 | $ hg -R c ci -d'0 0' -Amf |
|
487 | $ hg -R c ci -d'0 0' -Amf | |
488 | adding f |
|
488 | adding f | |
489 | created new head |
|
489 | created new head | |
490 | $ hg -R c log -r "converted(09d945a62ce6)" |
|
490 | $ hg -R c log -r "converted(09d945a62ce6)" | |
491 | changeset: 1:98c3dd46a874 |
|
491 | changeset: 1:98c3dd46a874 | |
492 | user: test |
|
492 | user: test | |
493 | date: Thu Jan 01 00:00:01 1970 +0000 |
|
493 | date: Thu Jan 01 00:00:01 1970 +0000 | |
494 | summary: b |
|
494 | summary: b | |
495 |
|
495 | |||
496 | $ hg -R c log -r "converted()" |
|
496 | $ hg -R c log -r "converted()" | |
497 | changeset: 0:31ed57b2037c |
|
497 | changeset: 0:31ed57b2037c | |
498 | user: test |
|
498 | user: test | |
499 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
499 | date: Thu Jan 01 00:00:00 1970 +0000 | |
500 | summary: a |
|
500 | summary: a | |
501 |
|
501 | |||
502 | changeset: 1:98c3dd46a874 |
|
502 | changeset: 1:98c3dd46a874 | |
503 | user: test |
|
503 | user: test | |
504 | date: Thu Jan 01 00:00:01 1970 +0000 |
|
504 | date: Thu Jan 01 00:00:01 1970 +0000 | |
505 | summary: b |
|
505 | summary: b | |
506 |
|
506 | |||
507 | changeset: 2:3b9ca06ef716 |
|
507 | changeset: 2:3b9ca06ef716 | |
508 | user: test |
|
508 | user: test | |
509 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
509 | date: Thu Jan 01 00:00:02 1970 +0000 | |
510 | summary: c |
|
510 | summary: c | |
511 |
|
511 | |||
512 | changeset: 3:4e0debd37cf2 |
|
512 | changeset: 3:4e0debd37cf2 | |
513 | user: test |
|
513 | user: test | |
514 | date: Thu Jan 01 00:00:03 1970 +0000 |
|
514 | date: Thu Jan 01 00:00:03 1970 +0000 | |
515 | summary: d |
|
515 | summary: d | |
516 |
|
516 | |||
517 | changeset: 4:9de3bc9349c5 |
|
517 | changeset: 4:9de3bc9349c5 | |
518 | user: test |
|
518 | user: test | |
519 | date: Thu Jan 01 00:00:04 1970 +0000 |
|
519 | date: Thu Jan 01 00:00:04 1970 +0000 | |
520 | summary: e |
|
520 | summary: e | |
521 |
|
521 | |||
522 |
|
522 | |||
523 | test specifying a sourcename |
|
523 | test specifying a sourcename | |
524 | $ echo g > a/g |
|
524 | $ echo g > a/g | |
525 | $ hg -R a ci -d'0 0' -Amg |
|
525 | $ hg -R a ci -d'0 0' -Amg | |
526 | adding g |
|
526 | adding g | |
527 | $ hg --config convert.hg.sourcename=mysource --config convert.hg.saverev=True convert a c |
|
527 | $ hg --config convert.hg.sourcename=mysource --config convert.hg.saverev=True convert a c | |
528 | scanning source... |
|
528 | scanning source... | |
529 | sorting... |
|
529 | sorting... | |
530 | converting... |
|
530 | converting... | |
531 | 0 g |
|
531 | 0 g | |
532 | $ hg -R c log -r tip --template '{extras % "{extra}\n"}' |
|
532 | $ hg -R c log -r tip --template '{extras % "{extra}\n"}' | |
533 | branch=default |
|
533 | branch=default | |
534 | convert_revision=a3bc6100aa8ec03e00aaf271f1f50046fb432072 |
|
534 | convert_revision=a3bc6100aa8ec03e00aaf271f1f50046fb432072 | |
535 | convert_source=mysource |
|
535 | convert_source=mysource |
@@ -1,628 +1,628 b'' | |||||
1 |
|
1 | |||
2 | $ cat <<EOF >> $HGRCPATH |
|
2 | $ cat <<EOF >> $HGRCPATH | |
3 | > [extensions] |
|
3 | > [extensions] | |
4 | > notify= |
|
4 | > notify= | |
5 | > |
|
5 | > | |
6 | > [hooks] |
|
6 | > [hooks] | |
7 | > incoming.notify = python:hgext.notify.hook |
|
7 | > incoming.notify = python:hgext.notify.hook | |
8 | > |
|
8 | > | |
9 | > [notify] |
|
9 | > [notify] | |
10 | > sources = pull |
|
10 | > sources = pull | |
11 | > diffstat = False |
|
11 | > diffstat = False | |
12 | > |
|
12 | > | |
13 | > [usersubs] |
|
13 | > [usersubs] | |
14 | > foo@bar = * |
|
14 | > foo@bar = * | |
15 | > |
|
15 | > | |
16 | > [reposubs] |
|
16 | > [reposubs] | |
17 | > * = baz |
|
17 | > * = baz | |
18 | > EOF |
|
18 | > EOF | |
19 | $ hg help notify |
|
19 | $ hg help notify | |
20 | notify extension - hooks for sending email push notifications |
|
20 | notify extension - hooks for sending email push notifications | |
21 |
|
21 | |||
22 | This extension implements hooks to send email notifications when changesets |
|
22 | This extension implements hooks to send email notifications when changesets | |
23 | are sent from or received by the local repository. |
|
23 | are sent from or received by the local repository. | |
24 |
|
24 | |||
25 | First, enable the extension as explained in 'hg help extensions', and register |
|
25 | First, enable the extension as explained in 'hg help extensions', and register | |
26 | the hook you want to run. "incoming" and "changegroup" hooks are run when |
|
26 | the hook you want to run. "incoming" and "changegroup" hooks are run when | |
27 | changesets are received, while "outgoing" hooks are for changesets sent to |
|
27 | changesets are received, while "outgoing" hooks are for changesets sent to | |
28 | another repository: |
|
28 | another repository: | |
29 |
|
29 | |||
30 | [hooks] |
|
30 | [hooks] | |
31 | # one email for each incoming changeset |
|
31 | # one email for each incoming changeset | |
32 | incoming.notify = python:hgext.notify.hook |
|
32 | incoming.notify = python:hgext.notify.hook | |
33 | # one email for all incoming changesets |
|
33 | # one email for all incoming changesets | |
34 | changegroup.notify = python:hgext.notify.hook |
|
34 | changegroup.notify = python:hgext.notify.hook | |
35 |
|
35 | |||
36 | # one email for all outgoing changesets |
|
36 | # one email for all outgoing changesets | |
37 | outgoing.notify = python:hgext.notify.hook |
|
37 | outgoing.notify = python:hgext.notify.hook | |
38 |
|
38 | |||
39 | This registers the hooks. To enable notification, subscribers must be assigned |
|
39 | This registers the hooks. To enable notification, subscribers must be assigned | |
40 | to repositories. The "[usersubs]" section maps multiple repositories to a |
|
40 | to repositories. The "[usersubs]" section maps multiple repositories to a | |
41 | given recipient. The "[reposubs]" section maps multiple recipients to a single |
|
41 | given recipient. The "[reposubs]" section maps multiple recipients to a single | |
42 | repository: |
|
42 | repository: | |
43 |
|
43 | |||
44 | [usersubs] |
|
44 | [usersubs] | |
45 | # key is subscriber email, value is a comma-separated list of repo patterns |
|
45 | # key is subscriber email, value is a comma-separated list of repo patterns | |
46 | user@host = pattern |
|
46 | user@host = pattern | |
47 |
|
47 | |||
48 | [reposubs] |
|
48 | [reposubs] | |
49 | # key is repo pattern, value is a comma-separated list of subscriber emails |
|
49 | # key is repo pattern, value is a comma-separated list of subscriber emails | |
50 | pattern = user@host |
|
50 | pattern = user@host | |
51 |
|
51 | |||
52 | A "pattern" is a "glob" matching the absolute path to a repository, optionally |
|
52 | A "pattern" is a "glob" matching the absolute path to a repository, optionally | |
53 | combined with a revset expression. A revset expression, if present, is |
|
53 | combined with a revset expression. A revset expression, if present, is | |
54 | separated from the glob by a hash. Example: |
|
54 | separated from the glob by a hash. Example: | |
55 |
|
55 | |||
56 | [reposubs] |
|
56 | [reposubs] | |
57 | */widgets#branch(release) = qa-team@example.com |
|
57 | */widgets#branch(release) = qa-team@example.com | |
58 |
|
58 | |||
59 | This sends to "qa-team@example.com" whenever a changeset on the "release" |
|
59 | This sends to "qa-team@example.com" whenever a changeset on the "release" | |
60 | branch triggers a notification in any repository ending in "widgets". |
|
60 | branch triggers a notification in any repository ending in "widgets". | |
61 |
|
61 | |||
62 | In order to place them under direct user management, "[usersubs]" and |
|
62 | In order to place them under direct user management, "[usersubs]" and | |
63 | "[reposubs]" sections may be placed in a separate "hgrc" file and incorporated |
|
63 | "[reposubs]" sections may be placed in a separate "hgrc" file and incorporated | |
64 | by reference: |
|
64 | by reference: | |
65 |
|
65 | |||
66 | [notify] |
|
66 | [notify] | |
67 | config = /path/to/subscriptionsfile |
|
67 | config = /path/to/subscriptionsfile | |
68 |
|
68 | |||
69 | Notifications will not be sent until the "notify.test" value is set to |
|
69 | Notifications will not be sent until the "notify.test" value is set to | |
70 | "False"; see below. |
|
70 | "False"; see below. | |
71 |
|
71 | |||
72 | Notifications content can be tweaked with the following configuration entries: |
|
72 | Notifications content can be tweaked with the following configuration entries: | |
73 |
|
73 | |||
74 | notify.test |
|
74 | notify.test | |
75 | If "True", print messages to stdout instead of sending them. Default: True. |
|
75 | If "True", print messages to stdout instead of sending them. Default: True. | |
76 |
|
76 | |||
77 | notify.sources |
|
77 | notify.sources | |
78 | Space-separated list of change sources. Notifications are activated only |
|
78 | Space-separated list of change sources. Notifications are activated only | |
79 | when a changeset's source is in this list. Sources may be: |
|
79 | when a changeset's source is in this list. Sources may be: | |
80 |
|
80 | |||
81 | "serve" changesets received via http or ssh |
|
81 | "serve" changesets received via http or ssh | |
82 | "pull" changesets received via "hg pull" |
|
82 | "pull" changesets received via "hg pull" | |
83 | "unbundle" changesets received via "hg unbundle" |
|
83 | "unbundle" changesets received via "hg unbundle" | |
84 | "push" changesets sent or received via "hg push" |
|
84 | "push" changesets sent or received via "hg push" | |
85 | "bundle" changesets sent via "hg unbundle" |
|
85 | "bundle" changesets sent via "hg unbundle" | |
86 |
|
86 | |||
87 | Default: serve. |
|
87 | Default: serve. | |
88 |
|
88 | |||
89 | notify.strip |
|
89 | notify.strip | |
90 | Number of leading slashes to strip from url paths. By default, notifications |
|
90 | Number of leading slashes to strip from url paths. By default, notifications | |
91 | reference repositories with their absolute path. "notify.strip" lets you |
|
91 | reference repositories with their absolute path. "notify.strip" lets you | |
92 | turn them into relative paths. For example, "notify.strip=3" will change |
|
92 | turn them into relative paths. For example, "notify.strip=3" will change | |
93 | "/long/path/repository" into "repository". Default: 0. |
|
93 | "/long/path/repository" into "repository". Default: 0. | |
94 |
|
94 | |||
95 | notify.domain |
|
95 | notify.domain | |
96 | Default email domain for sender or recipients with no explicit domain. |
|
96 | Default email domain for sender or recipients with no explicit domain. | |
97 |
|
97 | |||
98 | notify.style |
|
98 | notify.style | |
99 | Style file to use when formatting emails. |
|
99 | Style file to use when formatting emails. | |
100 |
|
100 | |||
101 | notify.template |
|
101 | notify.template | |
102 | Template to use when formatting emails. |
|
102 | Template to use when formatting emails. | |
103 |
|
103 | |||
104 | notify.incoming |
|
104 | notify.incoming | |
105 | Template to use when run as an incoming hook, overriding "notify.template". |
|
105 | Template to use when run as an incoming hook, overriding "notify.template". | |
106 |
|
106 | |||
107 | notify.outgoing |
|
107 | notify.outgoing | |
108 | Template to use when run as an outgoing hook, overriding "notify.template". |
|
108 | Template to use when run as an outgoing hook, overriding "notify.template". | |
109 |
|
109 | |||
110 | notify.changegroup |
|
110 | notify.changegroup | |
111 | Template to use when running as a changegroup hook, overriding |
|
111 | Template to use when running as a changegroup hook, overriding | |
112 | "notify.template". |
|
112 | "notify.template". | |
113 |
|
113 | |||
114 | notify.maxdiff |
|
114 | notify.maxdiff | |
115 | Maximum number of diff lines to include in notification email. Set to 0 to |
|
115 | Maximum number of diff lines to include in notification email. Set to 0 to | |
116 | disable the diff, or -1 to include all of it. Default: 300. |
|
116 | disable the diff, or -1 to include all of it. Default: 300. | |
117 |
|
117 | |||
118 | notify.maxsubject |
|
118 | notify.maxsubject | |
119 | Maximum number of characters in email's subject line. Default: 67. |
|
119 | Maximum number of characters in email's subject line. Default: 67. | |
120 |
|
120 | |||
121 | notify.diffstat |
|
121 | notify.diffstat | |
122 | Set to True to include a diffstat before diff content. Default: True. |
|
122 | Set to True to include a diffstat before diff content. Default: True. | |
123 |
|
123 | |||
124 | notify.merge |
|
124 | notify.merge | |
125 | If True, send notifications for merge changesets. Default: True. |
|
125 | If True, send notifications for merge changesets. Default: True. | |
126 |
|
126 | |||
127 | notify.mbox |
|
127 | notify.mbox | |
128 | If set, append mails to this mbox file instead of sending. Default: None. |
|
128 | If set, append mails to this mbox file instead of sending. Default: None. | |
129 |
|
129 | |||
130 | notify.fromauthor |
|
130 | notify.fromauthor | |
131 | If set, use the committer of the first changeset in a changegroup for the |
|
131 | If set, use the committer of the first changeset in a changegroup for the | |
132 | "From" field of the notification mail. If not set, take the user from the |
|
132 | "From" field of the notification mail. If not set, take the user from the | |
133 | pushing repo. Default: False. |
|
133 | pushing repo. Default: False. | |
134 |
|
134 | |||
135 | If set, the following entries will also be used to customize the |
|
135 | If set, the following entries will also be used to customize the | |
136 | notifications: |
|
136 | notifications: | |
137 |
|
137 | |||
138 | email.from |
|
138 | email.from | |
139 | Email "From" address to use if none can be found in the generated email |
|
139 | Email "From" address to use if none can be found in the generated email | |
140 | content. |
|
140 | content. | |
141 |
|
141 | |||
142 | web.baseurl |
|
142 | web.baseurl | |
143 | Root repository URL to combine with repository paths when making references. |
|
143 | Root repository URL to combine with repository paths when making references. | |
144 | See also "notify.strip". |
|
144 | See also "notify.strip". | |
145 |
|
145 | |||
146 | no commands defined |
|
146 | no commands defined | |
147 | $ hg init a |
|
147 | $ hg init a | |
148 | $ echo a > a/a |
|
148 | $ echo a > a/a | |
149 |
|
149 | |||
150 | commit |
|
150 | commit | |
151 |
|
151 | |||
152 | $ hg --cwd a commit -Ama -d '0 0' |
|
152 | $ hg --cwd a commit -Ama -d '0 0' | |
153 | adding a |
|
153 | adding a | |
154 |
|
154 | |||
155 |
|
155 | |||
156 | clone |
|
156 | clone | |
157 |
|
157 | |||
158 | $ hg --traceback clone a b |
|
158 | $ hg --traceback clone a b | |
159 | updating to branch default |
|
159 | updating to branch default | |
160 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
160 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
161 | $ echo a >> a/a |
|
161 | $ echo a >> a/a | |
162 |
|
162 | |||
163 | commit |
|
163 | commit | |
164 |
|
164 | |||
165 | $ hg --traceback --cwd a commit -Amb -d '1 0' |
|
165 | $ hg --traceback --cwd a commit -Amb -d '1 0' | |
166 |
|
166 | |||
167 | on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line |
|
167 | on Mac OS X 10.5 the tmp path is very long so would get stripped in the subject line | |
168 |
|
168 | |||
169 | $ cat <<EOF >> $HGRCPATH |
|
169 | $ cat <<EOF >> $HGRCPATH | |
170 | > [notify] |
|
170 | > [notify] | |
171 | > maxsubject = 200 |
|
171 | > maxsubject = 200 | |
172 | > EOF |
|
172 | > EOF | |
173 |
|
173 | |||
174 | the python call below wraps continuation lines, which appear on Mac OS X 10.5 because |
|
174 | the python call below wraps continuation lines, which appear on Mac OS X 10.5 because | |
175 | of the very long subject line |
|
175 | of the very long subject line | |
176 | pull (minimal config) |
|
176 | pull (minimal config) | |
177 |
|
177 | |||
178 | $ hg --traceback --cwd b pull ../a | \ |
|
178 | $ hg --traceback --cwd b pull ../a | \ | |
179 | > $PYTHON -c 'import sys,re; print re.sub("\n[\t ]", " ", sys.stdin.read()),' |
|
179 | > $PYTHON -c 'import sys,re; print re.sub("\n[\t ]", " ", sys.stdin.read()),' | |
180 | pulling from ../a |
|
180 | pulling from ../a | |
181 | searching for changes |
|
181 | searching for changes | |
182 | adding changesets |
|
182 | adding changesets | |
183 | adding manifests |
|
183 | adding manifests | |
184 | adding file changes |
|
184 | adding file changes | |
185 | added 1 changesets with 1 changes to 1 files |
|
185 | added 1 changesets with 1 changes to 1 files | |
186 | Content-Type: text/plain; charset="us-ascii" |
|
186 | Content-Type: text/plain; charset="us-ascii" | |
187 | MIME-Version: 1.0 |
|
187 | MIME-Version: 1.0 | |
188 | Content-Transfer-Encoding: 7bit |
|
188 | Content-Transfer-Encoding: 7bit | |
189 | Date: * (glob) |
|
189 | Date: * (glob) | |
190 | Subject: changeset in $TESTTMP/b: b |
|
190 | Subject: changeset in $TESTTMP/b: b | |
191 | From: test |
|
191 | From: test | |
192 | X-Hg-Notification: changeset 0647d048b600 |
|
192 | X-Hg-Notification: changeset 0647d048b600 | |
193 | Message-Id: <*> (glob) |
|
193 | Message-Id: <*> (glob) | |
194 | To: baz, foo@bar |
|
194 | To: baz, foo@bar | |
195 |
|
195 | |||
196 | changeset 0647d048b600 in $TESTTMP/b (glob) |
|
196 | changeset 0647d048b600 in $TESTTMP/b (glob) | |
197 | details: $TESTTMP/b?cmd=changeset;node=0647d048b600 |
|
197 | details: $TESTTMP/b?cmd=changeset;node=0647d048b600 | |
198 | description: b |
|
198 | description: b | |
199 |
|
199 | |||
200 | diffs (6 lines): |
|
200 | diffs (6 lines): | |
201 |
|
201 | |||
202 | diff -r cb9a9f314b8b -r 0647d048b600 a |
|
202 | diff -r cb9a9f314b8b -r 0647d048b600 a | |
203 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
203 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
204 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
204 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
205 | @@ -1,1 +1,2 @@ a |
|
205 | @@ -1,1 +1,2 @@ a | |
206 | +a |
|
206 | +a | |
207 | (run 'hg update' to get a working copy) |
|
207 | (run 'hg update' to get a working copy) | |
208 | $ cat <<EOF >> $HGRCPATH |
|
208 | $ cat <<EOF >> $HGRCPATH | |
209 | > [notify] |
|
209 | > [notify] | |
210 | > config = `pwd`/.notify.conf |
|
210 | > config = `pwd`/.notify.conf | |
211 | > domain = test.com |
|
211 | > domain = test.com | |
212 | > strip = 42 |
|
212 | > strip = 42 | |
213 | > template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip} |
|
213 | > template = Subject: {desc|firstline|strip}\nFrom: {author}\nX-Test: foo\n\nchangeset {node|short} in {webroot}\ndescription:\n\t{desc|tabindent|strip} | |
214 | > |
|
214 | > | |
215 | > [web] |
|
215 | > [web] | |
216 | > baseurl = http://test/ |
|
216 | > baseurl = http://test/ | |
217 | > EOF |
|
217 | > EOF | |
218 |
|
218 | |||
219 | fail for config file is missing |
|
219 | fail for config file is missing | |
220 |
|
220 | |||
221 | $ hg --cwd b rollback |
|
221 | $ hg --cwd b rollback | |
222 | repository tip rolled back to revision 0 (undo pull) |
|
222 | repository tip rolled back to revision 0 (undo pull) | |
223 | $ hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed |
|
223 | $ hg --cwd b pull ../a 2>&1 | grep 'error.*\.notify\.conf' > /dev/null && echo pull failed | |
224 | pull failed |
|
224 | pull failed | |
225 | $ touch ".notify.conf" |
|
225 | $ touch ".notify.conf" | |
226 |
|
226 | |||
227 | pull |
|
227 | pull | |
228 |
|
228 | |||
229 | $ hg --cwd b rollback |
|
229 | $ hg --cwd b rollback | |
230 | repository tip rolled back to revision 0 (undo pull) |
|
230 | repository tip rolled back to revision 0 (undo pull) | |
231 | $ hg --traceback --cwd b pull ../a | \ |
|
231 | $ hg --traceback --cwd b pull ../a | \ | |
232 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
232 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
233 | pulling from ../a |
|
233 | pulling from ../a | |
234 | searching for changes |
|
234 | searching for changes | |
235 | adding changesets |
|
235 | adding changesets | |
236 | adding manifests |
|
236 | adding manifests | |
237 | adding file changes |
|
237 | adding file changes | |
238 | added 1 changesets with 1 changes to 1 files |
|
238 | added 1 changesets with 1 changes to 1 files | |
239 | Content-Type: text/plain; charset="us-ascii" |
|
239 | Content-Type: text/plain; charset="us-ascii" | |
240 | MIME-Version: 1.0 |
|
240 | MIME-Version: 1.0 | |
241 | Content-Transfer-Encoding: 7bit |
|
241 | Content-Transfer-Encoding: 7bit | |
242 | X-Test: foo |
|
242 | X-Test: foo | |
243 | Date: * (glob) |
|
243 | Date: * (glob) | |
244 | Subject: b |
|
244 | Subject: b | |
245 | From: test@test.com |
|
245 | From: test@test.com | |
246 | X-Hg-Notification: changeset 0647d048b600 |
|
246 | X-Hg-Notification: changeset 0647d048b600 | |
247 | Message-Id: <*> (glob) |
|
247 | Message-Id: <*> (glob) | |
248 | To: baz@test.com, foo@bar |
|
248 | To: baz@test.com, foo@bar | |
249 |
|
249 | |||
250 | changeset 0647d048b600 in b |
|
250 | changeset 0647d048b600 in b | |
251 | description: b |
|
251 | description: b | |
252 | diffs (6 lines): |
|
252 | diffs (6 lines): | |
253 |
|
253 | |||
254 | diff -r cb9a9f314b8b -r 0647d048b600 a |
|
254 | diff -r cb9a9f314b8b -r 0647d048b600 a | |
255 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
255 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
256 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
256 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
257 | @@ -1,1 +1,2 @@ |
|
257 | @@ -1,1 +1,2 @@ | |
258 | a |
|
258 | a | |
259 | +a |
|
259 | +a | |
260 | (run 'hg update' to get a working copy) |
|
260 | (run 'hg update' to get a working copy) | |
261 |
|
261 | |||
262 | $ cat << EOF >> $HGRCPATH |
|
262 | $ cat << EOF >> $HGRCPATH | |
263 | > [hooks] |
|
263 | > [hooks] | |
264 | > incoming.notify = python:hgext.notify.hook |
|
264 | > incoming.notify = python:hgext.notify.hook | |
265 | > |
|
265 | > | |
266 | > [notify] |
|
266 | > [notify] | |
267 | > sources = pull |
|
267 | > sources = pull | |
268 | > diffstat = True |
|
268 | > diffstat = True | |
269 | > EOF |
|
269 | > EOF | |
270 |
|
270 | |||
271 | pull |
|
271 | pull | |
272 |
|
272 | |||
273 | $ hg --cwd b rollback |
|
273 | $ hg --cwd b rollback | |
274 | repository tip rolled back to revision 0 (undo pull) |
|
274 | repository tip rolled back to revision 0 (undo pull) | |
275 | $ hg --traceback --cwd b pull ../a | \ |
|
275 | $ hg --traceback --cwd b pull ../a | \ | |
276 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
276 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
277 | pulling from ../a |
|
277 | pulling from ../a | |
278 | searching for changes |
|
278 | searching for changes | |
279 | adding changesets |
|
279 | adding changesets | |
280 | adding manifests |
|
280 | adding manifests | |
281 | adding file changes |
|
281 | adding file changes | |
282 | added 1 changesets with 1 changes to 1 files |
|
282 | added 1 changesets with 1 changes to 1 files | |
283 | Content-Type: text/plain; charset="us-ascii" |
|
283 | Content-Type: text/plain; charset="us-ascii" | |
284 | MIME-Version: 1.0 |
|
284 | MIME-Version: 1.0 | |
285 | Content-Transfer-Encoding: 7bit |
|
285 | Content-Transfer-Encoding: 7bit | |
286 | X-Test: foo |
|
286 | X-Test: foo | |
287 | Date: * (glob) |
|
287 | Date: * (glob) | |
288 | Subject: b |
|
288 | Subject: b | |
289 | From: test@test.com |
|
289 | From: test@test.com | |
290 | X-Hg-Notification: changeset 0647d048b600 |
|
290 | X-Hg-Notification: changeset 0647d048b600 | |
291 | Message-Id: <*> (glob) |
|
291 | Message-Id: <*> (glob) | |
292 | To: baz@test.com, foo@bar |
|
292 | To: baz@test.com, foo@bar | |
293 |
|
293 | |||
294 | changeset 0647d048b600 in b |
|
294 | changeset 0647d048b600 in b | |
295 | description: b |
|
295 | description: b | |
296 | diffstat: |
|
296 | diffstat: | |
297 |
|
297 | |||
298 | a | 1 + |
|
298 | a | 1 + | |
299 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
299 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
300 |
|
300 | |||
301 | diffs (6 lines): |
|
301 | diffs (6 lines): | |
302 |
|
302 | |||
303 | diff -r cb9a9f314b8b -r 0647d048b600 a |
|
303 | diff -r cb9a9f314b8b -r 0647d048b600 a | |
304 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
304 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
305 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
305 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
306 | @@ -1,1 +1,2 @@ |
|
306 | @@ -1,1 +1,2 @@ | |
307 | a |
|
307 | a | |
308 | +a |
|
308 | +a | |
309 | (run 'hg update' to get a working copy) |
|
309 | (run 'hg update' to get a working copy) | |
310 |
|
310 | |||
311 | test merge |
|
311 | test merge | |
312 |
|
312 | |||
313 | $ cd a |
|
313 | $ cd a | |
314 | $ hg up -C 0 |
|
314 | $ hg up -C 0 | |
315 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
315 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
316 | $ echo a >> a |
|
316 | $ echo a >> a | |
317 | $ hg ci -Am adda2 -d '2 0' |
|
317 | $ hg ci -Am adda2 -d '2 0' | |
318 | created new head |
|
318 | created new head | |
319 | $ hg merge |
|
319 | $ hg merge | |
320 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
320 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
321 | (branch merge, don't forget to commit) |
|
321 | (branch merge, don't forget to commit) | |
322 | $ hg ci -m merge -d '3 0' |
|
322 | $ hg ci -m merge -d '3 0' | |
323 | $ cd .. |
|
323 | $ cd .. | |
324 | $ hg --traceback --cwd b pull ../a | \ |
|
324 | $ hg --traceback --cwd b pull ../a | \ | |
325 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
325 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
326 | pulling from ../a |
|
326 | pulling from ../a | |
327 | searching for changes |
|
327 | searching for changes | |
328 | adding changesets |
|
328 | adding changesets | |
329 | adding manifests |
|
329 | adding manifests | |
330 | adding file changes |
|
330 | adding file changes | |
331 | added 2 changesets with 0 changes to 0 files |
|
331 | added 2 changesets with 0 changes to 0 files | |
332 | Content-Type: text/plain; charset="us-ascii" |
|
332 | Content-Type: text/plain; charset="us-ascii" | |
333 | MIME-Version: 1.0 |
|
333 | MIME-Version: 1.0 | |
334 | Content-Transfer-Encoding: 7bit |
|
334 | Content-Transfer-Encoding: 7bit | |
335 | X-Test: foo |
|
335 | X-Test: foo | |
336 | Date: * (glob) |
|
336 | Date: * (glob) | |
337 | Subject: adda2 |
|
337 | Subject: adda2 | |
338 | From: test@test.com |
|
338 | From: test@test.com | |
339 | X-Hg-Notification: changeset 0a184ce6067f |
|
339 | X-Hg-Notification: changeset 0a184ce6067f | |
340 | Message-Id: <*> (glob) |
|
340 | Message-Id: <*> (glob) | |
341 | To: baz@test.com, foo@bar |
|
341 | To: baz@test.com, foo@bar | |
342 |
|
342 | |||
343 | changeset 0a184ce6067f in b |
|
343 | changeset 0a184ce6067f in b | |
344 | description: adda2 |
|
344 | description: adda2 | |
345 | diffstat: |
|
345 | diffstat: | |
346 |
|
346 | |||
347 | a | 1 + |
|
347 | a | 1 + | |
348 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
348 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
349 |
|
349 | |||
350 | diffs (6 lines): |
|
350 | diffs (6 lines): | |
351 |
|
351 | |||
352 | diff -r cb9a9f314b8b -r 0a184ce6067f a |
|
352 | diff -r cb9a9f314b8b -r 0a184ce6067f a | |
353 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
353 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
354 | +++ b/a Thu Jan 01 00:00:02 1970 +0000 |
|
354 | +++ b/a Thu Jan 01 00:00:02 1970 +0000 | |
355 | @@ -1,1 +1,2 @@ |
|
355 | @@ -1,1 +1,2 @@ | |
356 | a |
|
356 | a | |
357 | +a |
|
357 | +a | |
358 | Content-Type: text/plain; charset="us-ascii" |
|
358 | Content-Type: text/plain; charset="us-ascii" | |
359 | MIME-Version: 1.0 |
|
359 | MIME-Version: 1.0 | |
360 | Content-Transfer-Encoding: 7bit |
|
360 | Content-Transfer-Encoding: 7bit | |
361 | X-Test: foo |
|
361 | X-Test: foo | |
362 | Date: * (glob) |
|
362 | Date: * (glob) | |
363 | Subject: merge |
|
363 | Subject: merge | |
364 | From: test@test.com |
|
364 | From: test@test.com | |
365 | X-Hg-Notification: changeset 6a0cf76b2701 |
|
365 | X-Hg-Notification: changeset 6a0cf76b2701 | |
366 | Message-Id: <*> (glob) |
|
366 | Message-Id: <*> (glob) | |
367 | To: baz@test.com, foo@bar |
|
367 | To: baz@test.com, foo@bar | |
368 |
|
368 | |||
369 | changeset 6a0cf76b2701 in b |
|
369 | changeset 6a0cf76b2701 in b | |
370 | description: merge |
|
370 | description: merge | |
371 | (run 'hg update' to get a working copy) |
|
371 | (run 'hg update' to get a working copy) | |
372 |
|
372 | |||
373 | non-ascii content and truncation of multi-byte subject |
|
373 | non-ascii content and truncation of multi-byte subject | |
374 |
|
374 | |||
375 | $ cat <<EOF >> $HGRCPATH |
|
375 | $ cat <<EOF >> $HGRCPATH | |
376 | > [notify] |
|
376 | > [notify] | |
377 | > maxsubject = 4 |
|
377 | > maxsubject = 4 | |
378 | > EOF |
|
378 | > EOF | |
379 | $ echo a >> a/a |
|
379 | $ echo a >> a/a | |
380 | $ hg --cwd a --encoding utf-8 commit -A -d '0 0' \ |
|
380 | $ hg --cwd a --encoding utf-8 commit -A -d '0 0' \ | |
381 | > -m `$PYTHON -c 'print "\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4"'` |
|
381 | > -m `$PYTHON -c 'print "\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4"'` | |
382 | $ hg --traceback --cwd b --encoding utf-8 pull ../a | \ |
|
382 | $ hg --traceback --cwd b --encoding utf-8 pull ../a | \ | |
383 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
383 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
384 | pulling from ../a |
|
384 | pulling from ../a | |
385 | searching for changes |
|
385 | searching for changes | |
386 | adding changesets |
|
386 | adding changesets | |
387 | adding manifests |
|
387 | adding manifests | |
388 | adding file changes |
|
388 | adding file changes | |
389 | added 1 changesets with 1 changes to 1 files |
|
389 | added 1 changesets with 1 changes to 1 files | |
390 | Content-Type: text/plain; charset="us-ascii" |
|
390 | Content-Type: text/plain; charset="us-ascii" | |
391 | MIME-Version: 1.0 |
|
391 | MIME-Version: 1.0 | |
392 | Content-Transfer-Encoding: 8bit |
|
392 | Content-Transfer-Encoding: 8bit | |
393 | X-Test: foo |
|
393 | X-Test: foo | |
394 | Date: * (glob) |
|
394 | Date: * (glob) | |
395 | Subject: \xc3\xa0... (esc) |
|
395 | Subject: \xc3\xa0... (esc) | |
396 | From: test@test.com |
|
396 | From: test@test.com | |
397 | X-Hg-Notification: changeset 7ea05ad269dc |
|
397 | X-Hg-Notification: changeset 7ea05ad269dc | |
398 | Message-Id: <*> (glob) |
|
398 | Message-Id: <*> (glob) | |
399 | To: baz@test.com, foo@bar |
|
399 | To: baz@test.com, foo@bar | |
400 |
|
400 | |||
401 | changeset 7ea05ad269dc in b |
|
401 | changeset 7ea05ad269dc in b | |
402 | description: \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4 (esc) |
|
402 | description: \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4 (esc) | |
403 | diffstat: |
|
403 | diffstat: | |
404 |
|
404 | |||
405 | a | 1 + |
|
405 | a | 1 + | |
406 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
406 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
407 |
|
407 | |||
408 | diffs (7 lines): |
|
408 | diffs (7 lines): | |
409 |
|
409 | |||
410 | diff -r 6a0cf76b2701 -r 7ea05ad269dc a |
|
410 | diff -r 6a0cf76b2701 -r 7ea05ad269dc a | |
411 | --- a/a Thu Jan 01 00:00:03 1970 +0000 |
|
411 | --- a/a Thu Jan 01 00:00:03 1970 +0000 | |
412 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
412 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
413 | @@ -1,2 +1,3 @@ |
|
413 | @@ -1,2 +1,3 @@ | |
414 | a |
|
414 | a | |
415 | a |
|
415 | a | |
416 | +a |
|
416 | +a | |
417 | (run 'hg update' to get a working copy) |
|
417 | (run 'hg update' to get a working copy) | |
418 |
|
418 | |||
419 | long lines |
|
419 | long lines | |
420 |
|
420 | |||
421 | $ cat <<EOF >> $HGRCPATH |
|
421 | $ cat <<EOF >> $HGRCPATH | |
422 | > [notify] |
|
422 | > [notify] | |
423 | > maxsubject = 67 |
|
423 | > maxsubject = 67 | |
424 | > test = False |
|
424 | > test = False | |
425 | > mbox = mbox |
|
425 | > mbox = mbox | |
426 | > EOF |
|
426 | > EOF | |
427 | $ $PYTHON -c 'file("a/a", "ab").write("no" * 500 + "\n")' |
|
427 | $ $PYTHON -c 'file("a/a", "ab").write("no" * 500 + "\n")' | |
428 | $ hg --cwd a commit -A -m "long line" |
|
428 | $ hg --cwd a commit -A -m "long line" | |
429 | $ hg --traceback --cwd b pull ../a |
|
429 | $ hg --traceback --cwd b pull ../a | |
430 | pulling from ../a |
|
430 | pulling from ../a | |
431 | searching for changes |
|
431 | searching for changes | |
432 | adding changesets |
|
432 | adding changesets | |
433 | adding manifests |
|
433 | adding manifests | |
434 | adding file changes |
|
434 | adding file changes | |
435 | added 1 changesets with 1 changes to 1 files |
|
435 | added 1 changesets with 1 changes to 1 files | |
436 | notify: sending 2 subscribers 1 changes |
|
436 | notify: sending 2 subscribers 1 changes | |
437 | (run 'hg update' to get a working copy) |
|
437 | (run 'hg update' to get a working copy) | |
438 | $ $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", file("b/mbox").read()),' |
|
438 | $ $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", file("b/mbox").read()),' | |
439 | From test@test.com ... ... .. ..:..:.. .... (re) |
|
439 | From test@test.com ... ... .. ..:..:.. .... (re) | |
440 | Content-Type: text/plain; charset="us-ascii" |
|
440 | Content-Type: text/plain; charset="us-ascii" | |
441 | MIME-Version: 1.0 |
|
441 | MIME-Version: 1.0 | |
442 | Content-Transfer-Encoding: quoted-printable |
|
442 | Content-Transfer-Encoding: quoted-printable | |
443 | X-Test: foo |
|
443 | X-Test: foo | |
444 | Date: * (glob) |
|
444 | Date: * (glob) | |
445 | Subject: long line |
|
445 | Subject: long line | |
446 | From: test@test.com |
|
446 | From: test@test.com | |
447 | X-Hg-Notification: changeset e0be44cf638b |
|
447 | X-Hg-Notification: changeset e0be44cf638b | |
448 | Message-Id: <hg.e0be44cf638b.*.*@*> (glob) |
|
448 | Message-Id: <hg.e0be44cf638b.*.*@*> (glob) | |
449 | To: baz@test.com, foo@bar |
|
449 | To: baz@test.com, foo@bar | |
450 |
|
450 | |||
451 | changeset e0be44cf638b in b |
|
451 | changeset e0be44cf638b in b | |
452 | description: long line |
|
452 | description: long line | |
453 | diffstat: |
|
453 | diffstat: | |
454 |
|
454 | |||
455 | a | 1 + |
|
455 | a | 1 + | |
456 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
456 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
457 |
|
457 | |||
458 | diffs (8 lines): |
|
458 | diffs (8 lines): | |
459 |
|
459 | |||
460 | diff -r 7ea05ad269dc -r e0be44cf638b a |
|
460 | diff -r 7ea05ad269dc -r e0be44cf638b a | |
461 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
461 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
462 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
462 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
463 | @@ -1,3 +1,4 @@ |
|
463 | @@ -1,3 +1,4 @@ | |
464 | a |
|
464 | a | |
465 | a |
|
465 | a | |
466 | a |
|
466 | a | |
467 | +nonononononononononononononononononononononononononononononononononononono= |
|
467 | +nonononononononononononononononononononononononononononononononononononono= | |
468 | nononononononononononononononononononononononononononononononononononononon= |
|
468 | nononononononononononononononononononononononononononononononononononononon= | |
469 | ononononononononononononononononononononononononononononononononononononono= |
|
469 | ononononononononononononononononononononononononononononononononononononono= | |
470 | nononononononononononononononononononononononononononononononononononononon= |
|
470 | nononononononononononononononononononononononononononononononononononononon= | |
471 | ononononononononononononononononononononononononononononononononononononono= |
|
471 | ononononononononononononononononononononononononononononononononononononono= | |
472 | nononononononononononononononononononononononononononononononononononononon= |
|
472 | nononononononononononononononononononononononononononononononononononononon= | |
473 | ononononononononononononononononononononononononononononononononononononono= |
|
473 | ononononononononononononononononononononononononononononononononononononono= | |
474 | nononononononononononononononononononononononononononononononononononononon= |
|
474 | nononononononononononononononononononononononononononononononononononononon= | |
475 | ononononononononononononononononononononononononononononononononononononono= |
|
475 | ononononononononononononononononononononononononononononononononononononono= | |
476 | nononononononononononononononononononononononononononononononononononononon= |
|
476 | nononononononononononononononononononononononononononononononononononononon= | |
477 | ononononononononononononononononononononononononononononononononononononono= |
|
477 | ononononononononononononononononononononononononononononononononononononono= | |
478 | nononononononononononononononononononononononononononononononononononononon= |
|
478 | nononononononononononononononononononononononononononononononononononononon= | |
479 | ononononononononononononononononononononononononononononononononononononono= |
|
479 | ononononononononononononononononononononononononononononononononononononono= | |
480 | nonononononononononononono |
|
480 | nonononononononononononono | |
481 |
|
481 | |||
482 | revset selection: send to address that matches branch and repo |
|
482 | revset selection: send to address that matches branch and repo | |
483 |
|
483 | |||
484 | $ cat << EOF >> $HGRCPATH |
|
484 | $ cat << EOF >> $HGRCPATH | |
485 | > [hooks] |
|
485 | > [hooks] | |
486 | > incoming.notify = python:hgext.notify.hook |
|
486 | > incoming.notify = python:hgext.notify.hook | |
487 | > |
|
487 | > | |
488 | > [notify] |
|
488 | > [notify] | |
489 | > sources = pull |
|
489 | > sources = pull | |
490 | > test = True |
|
490 | > test = True | |
491 | > diffstat = False |
|
491 | > diffstat = False | |
492 | > maxdiff = 0 |
|
492 | > maxdiff = 0 | |
493 | > |
|
493 | > | |
494 | > [reposubs] |
|
494 | > [reposubs] | |
495 | > */a#branch(test) = will_no_be_send@example.com |
|
495 | > */a#branch(test) = will_no_be_send@example.com | |
496 | > */b#branch(test) = notify@example.com |
|
496 | > */b#branch(test) = notify@example.com | |
497 | > EOF |
|
497 | > EOF | |
498 | $ hg --cwd a branch test |
|
498 | $ hg --cwd a branch test | |
499 | marked working directory as branch test |
|
499 | marked working directory as branch test | |
500 | (branches are permanent and global, did you want a bookmark?) |
|
500 | (branches are permanent and global, did you want a bookmark?) | |
501 | $ echo a >> a/a |
|
501 | $ echo a >> a/a | |
502 | $ hg --cwd a ci -m test -d '1 0' |
|
502 | $ hg --cwd a ci -m test -d '1 0' | |
503 | $ hg --traceback --cwd b pull ../a | \ |
|
503 | $ hg --traceback --cwd b pull ../a | \ | |
504 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
504 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
505 | pulling from ../a |
|
505 | pulling from ../a | |
506 | searching for changes |
|
506 | searching for changes | |
507 | adding changesets |
|
507 | adding changesets | |
508 | adding manifests |
|
508 | adding manifests | |
509 | adding file changes |
|
509 | adding file changes | |
510 | added 1 changesets with 1 changes to 1 files |
|
510 | added 1 changesets with 1 changes to 1 files | |
511 | Content-Type: text/plain; charset="us-ascii" |
|
511 | Content-Type: text/plain; charset="us-ascii" | |
512 | MIME-Version: 1.0 |
|
512 | MIME-Version: 1.0 | |
513 | Content-Transfer-Encoding: 7bit |
|
513 | Content-Transfer-Encoding: 7bit | |
514 | X-Test: foo |
|
514 | X-Test: foo | |
515 | Date: * (glob) |
|
515 | Date: * (glob) | |
516 | Subject: test |
|
516 | Subject: test | |
517 | From: test@test.com |
|
517 | From: test@test.com | |
518 | X-Hg-Notification: changeset fbbcbc516f2f |
|
518 | X-Hg-Notification: changeset fbbcbc516f2f | |
519 | Message-Id: <hg.fbbcbc516f2f.*.*@*> (glob) |
|
519 | Message-Id: <hg.fbbcbc516f2f.*.*@*> (glob) | |
520 | To: baz@test.com, foo@bar, notify@example.com |
|
520 | To: baz@test.com, foo@bar, notify@example.com | |
521 |
|
521 | |||
522 | changeset fbbcbc516f2f in b |
|
522 | changeset fbbcbc516f2f in b | |
523 | description: test |
|
523 | description: test | |
524 | (run 'hg update' to get a working copy) |
|
524 | (run 'hg update' to get a working copy) | |
525 |
|
525 | |||
526 | revset selection: don't send to address that waits for mails |
|
526 | revset selection: don't send to address that waits for mails | |
527 | from different branch |
|
527 | from different branch | |
528 |
|
528 | |||
529 | $ hg --cwd a update default |
|
529 | $ hg --cwd a update default | |
530 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
530 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
531 | $ echo a >> a/a |
|
531 | $ echo a >> a/a | |
532 | $ hg --cwd a ci -m test -d '1 0' |
|
532 | $ hg --cwd a ci -m test -d '1 0' | |
533 | $ hg --traceback --cwd b pull ../a | \ |
|
533 | $ hg --traceback --cwd b pull ../a | \ | |
534 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
534 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
535 | pulling from ../a |
|
535 | pulling from ../a | |
536 | searching for changes |
|
536 | searching for changes | |
537 | adding changesets |
|
537 | adding changesets | |
538 | adding manifests |
|
538 | adding manifests | |
539 | adding file changes |
|
539 | adding file changes | |
540 | added 1 changesets with 0 changes to 0 files (+1 heads) |
|
540 | added 1 changesets with 0 changes to 0 files (+1 heads) | |
541 | Content-Type: text/plain; charset="us-ascii" |
|
541 | Content-Type: text/plain; charset="us-ascii" | |
542 | MIME-Version: 1.0 |
|
542 | MIME-Version: 1.0 | |
543 | Content-Transfer-Encoding: 7bit |
|
543 | Content-Transfer-Encoding: 7bit | |
544 | X-Test: foo |
|
544 | X-Test: foo | |
545 | Date: * (glob) |
|
545 | Date: * (glob) | |
546 | Subject: test |
|
546 | Subject: test | |
547 | From: test@test.com |
|
547 | From: test@test.com | |
548 | X-Hg-Notification: changeset 38b42fa092de |
|
548 | X-Hg-Notification: changeset 38b42fa092de | |
549 | Message-Id: <hg.38b42fa092de.*.*@*> (glob) |
|
549 | Message-Id: <hg.38b42fa092de.*.*@*> (glob) | |
550 | To: baz@test.com, foo@bar |
|
550 | To: baz@test.com, foo@bar | |
551 |
|
551 | |||
552 | changeset 38b42fa092de in b |
|
552 | changeset 38b42fa092de in b | |
553 | description: test |
|
553 | description: test | |
554 | (run 'hg heads' to see heads) |
|
554 | (run 'hg heads' to see heads) | |
555 |
|
555 | |||
556 | default template: |
|
556 | default template: | |
557 |
|
557 | |||
558 | $ grep -v '^template =' $HGRCPATH > "$HGRCPATH.new" |
|
558 | $ grep -v '^template =' $HGRCPATH > "$HGRCPATH.new" | |
559 | $ mv "$HGRCPATH.new" $HGRCPATH |
|
559 | $ mv "$HGRCPATH.new" $HGRCPATH | |
560 | $ echo a >> a/a |
|
560 | $ echo a >> a/a | |
561 | $ hg --cwd a commit -m 'default template' |
|
561 | $ hg --cwd a commit -m 'default template' | |
562 | $ hg --cwd b pull ../a -q | \ |
|
562 | $ hg --cwd b pull ../a -q | \ | |
563 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
563 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
564 | Content-Type: text/plain; charset="us-ascii" |
|
564 | Content-Type: text/plain; charset="us-ascii" | |
565 | MIME-Version: 1.0 |
|
565 | MIME-Version: 1.0 | |
566 | Content-Transfer-Encoding: 7bit |
|
566 | Content-Transfer-Encoding: 7bit | |
567 | Date: * (glob) |
|
567 | Date: * (glob) | |
568 | Subject: changeset in b: default template |
|
568 | Subject: changeset in b: default template | |
569 | From: test@test.com |
|
569 | From: test@test.com | |
570 | X-Hg-Notification: changeset 3548c9e294b6 |
|
570 | X-Hg-Notification: changeset 3548c9e294b6 | |
571 | Message-Id: <hg.3548c9e294b6.*.*@*> (glob) |
|
571 | Message-Id: <hg.3548c9e294b6.*.*@*> (glob) | |
572 | To: baz@test.com, foo@bar |
|
572 | To: baz@test.com, foo@bar | |
573 |
|
573 | |||
574 | changeset 3548c9e294b6 in $TESTTMP/b |
|
574 | changeset 3548c9e294b6 in $TESTTMP/b (glob) | |
575 | details: http://test/b?cmd=changeset;node=3548c9e294b6 |
|
575 | details: http://test/b?cmd=changeset;node=3548c9e294b6 | |
576 | description: default template |
|
576 | description: default template | |
577 |
|
577 | |||
578 | with style: |
|
578 | with style: | |
579 |
|
579 | |||
580 | $ cat <<EOF > notifystyle.map |
|
580 | $ cat <<EOF > notifystyle.map | |
581 | > changeset = "Subject: {desc|firstline|strip} |
|
581 | > changeset = "Subject: {desc|firstline|strip} | |
582 | > From: {author} |
|
582 | > From: {author} | |
583 | > {""} |
|
583 | > {""} | |
584 | > changeset {node|short}" |
|
584 | > changeset {node|short}" | |
585 | > EOF |
|
585 | > EOF | |
586 | $ cat <<EOF >> $HGRCPATH |
|
586 | $ cat <<EOF >> $HGRCPATH | |
587 | > [notify] |
|
587 | > [notify] | |
588 | > style = $TESTTMP/notifystyle.map |
|
588 | > style = $TESTTMP/notifystyle.map | |
589 | > EOF |
|
589 | > EOF | |
590 | $ echo a >> a/a |
|
590 | $ echo a >> a/a | |
591 | $ hg --cwd a commit -m 'with style' |
|
591 | $ hg --cwd a commit -m 'with style' | |
592 | $ hg --cwd b pull ../a -q | \ |
|
592 | $ hg --cwd b pull ../a -q | \ | |
593 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
593 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
594 | Content-Type: text/plain; charset="us-ascii" |
|
594 | Content-Type: text/plain; charset="us-ascii" | |
595 | MIME-Version: 1.0 |
|
595 | MIME-Version: 1.0 | |
596 | Content-Transfer-Encoding: 7bit |
|
596 | Content-Transfer-Encoding: 7bit | |
597 | Date: * (glob) |
|
597 | Date: * (glob) | |
598 | Subject: with style |
|
598 | Subject: with style | |
599 | From: test@test.com |
|
599 | From: test@test.com | |
600 | X-Hg-Notification: changeset e917dbd961d3 |
|
600 | X-Hg-Notification: changeset e917dbd961d3 | |
601 | Message-Id: <hg.e917dbd961d3.*.*@*> (glob) |
|
601 | Message-Id: <hg.e917dbd961d3.*.*@*> (glob) | |
602 | To: baz@test.com, foo@bar |
|
602 | To: baz@test.com, foo@bar | |
603 |
|
603 | |||
604 | changeset e917dbd961d3 |
|
604 | changeset e917dbd961d3 | |
605 |
|
605 | |||
606 | with template (overrides style): |
|
606 | with template (overrides style): | |
607 |
|
607 | |||
608 | $ cat <<EOF >> $HGRCPATH |
|
608 | $ cat <<EOF >> $HGRCPATH | |
609 | > template = Subject: {node|short}: {desc|firstline|strip} |
|
609 | > template = Subject: {node|short}: {desc|firstline|strip} | |
610 | > From: {author} |
|
610 | > From: {author} | |
611 | > {""} |
|
611 | > {""} | |
612 | > {desc} |
|
612 | > {desc} | |
613 | > EOF |
|
613 | > EOF | |
614 | $ echo a >> a/a |
|
614 | $ echo a >> a/a | |
615 | $ hg --cwd a commit -m 'with template' |
|
615 | $ hg --cwd a commit -m 'with template' | |
616 | $ hg --cwd b pull ../a -q | \ |
|
616 | $ hg --cwd b pull ../a -q | \ | |
617 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' |
|
617 | > $PYTHON -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | |
618 | Content-Type: text/plain; charset="us-ascii" |
|
618 | Content-Type: text/plain; charset="us-ascii" | |
619 | MIME-Version: 1.0 |
|
619 | MIME-Version: 1.0 | |
620 | Content-Transfer-Encoding: 7bit |
|
620 | Content-Transfer-Encoding: 7bit | |
621 | Date: * (glob) |
|
621 | Date: * (glob) | |
622 | Subject: a09743fd3edd: with template |
|
622 | Subject: a09743fd3edd: with template | |
623 | From: test@test.com |
|
623 | From: test@test.com | |
624 | X-Hg-Notification: changeset a09743fd3edd |
|
624 | X-Hg-Notification: changeset a09743fd3edd | |
625 | Message-Id: <hg.a09743fd3edd.*.*@*> (glob) |
|
625 | Message-Id: <hg.a09743fd3edd.*.*@*> (glob) | |
626 | To: baz@test.com, foo@bar |
|
626 | To: baz@test.com, foo@bar | |
627 |
|
627 | |||
628 | with template |
|
628 | with template |
@@ -1,1099 +1,1099 b'' | |||||
1 | $ cat >> $HGRCPATH <<EOF |
|
1 | $ cat >> $HGRCPATH <<EOF | |
2 | > [extdiff] |
|
2 | > [extdiff] | |
3 | > # for portability: |
|
3 | > # for portability: | |
4 | > pdiff = sh "$RUNTESTDIR/pdiff" |
|
4 | > pdiff = sh "$RUNTESTDIR/pdiff" | |
5 | > [progress] |
|
5 | > [progress] | |
6 | > disable=False |
|
6 | > disable=False | |
7 | > assume-tty = 1 |
|
7 | > assume-tty = 1 | |
8 | > delay = 0 |
|
8 | > delay = 0 | |
9 | > # set changedelay really large so we don't see nested topics |
|
9 | > # set changedelay really large so we don't see nested topics | |
10 | > changedelay = 30000 |
|
10 | > changedelay = 30000 | |
11 | > format = topic bar number |
|
11 | > format = topic bar number | |
12 | > refresh = 0 |
|
12 | > refresh = 0 | |
13 | > width = 60 |
|
13 | > width = 60 | |
14 | > EOF |
|
14 | > EOF | |
15 |
|
15 | |||
16 | Preparing the subrepository 'sub2' |
|
16 | Preparing the subrepository 'sub2' | |
17 |
|
17 | |||
18 | $ hg init sub2 |
|
18 | $ hg init sub2 | |
19 | $ echo sub2 > sub2/sub2 |
|
19 | $ echo sub2 > sub2/sub2 | |
20 | $ hg add -R sub2 |
|
20 | $ hg add -R sub2 | |
21 | adding sub2/sub2 (glob) |
|
21 | adding sub2/sub2 (glob) | |
22 | $ hg commit -R sub2 -m "sub2 import" |
|
22 | $ hg commit -R sub2 -m "sub2 import" | |
23 |
|
23 | |||
24 | Preparing the 'sub1' repo which depends on the subrepo 'sub2' |
|
24 | Preparing the 'sub1' repo which depends on the subrepo 'sub2' | |
25 |
|
25 | |||
26 | $ hg init sub1 |
|
26 | $ hg init sub1 | |
27 | $ echo sub1 > sub1/sub1 |
|
27 | $ echo sub1 > sub1/sub1 | |
28 | $ echo "sub2 = ../sub2" > sub1/.hgsub |
|
28 | $ echo "sub2 = ../sub2" > sub1/.hgsub | |
29 | $ hg clone sub2 sub1/sub2 |
|
29 | $ hg clone sub2 sub1/sub2 | |
30 | \r (no-eol) (esc) |
|
30 | \r (no-eol) (esc) | |
31 | linking [ <=> ] 1\r (no-eol) (esc) |
|
31 | linking [ <=> ] 1\r (no-eol) (esc) | |
32 | linking [ <=> ] 2\r (no-eol) (esc) |
|
32 | linking [ <=> ] 2\r (no-eol) (esc) | |
33 | linking [ <=> ] 3\r (no-eol) (esc) |
|
33 | linking [ <=> ] 3\r (no-eol) (esc) | |
34 | linking [ <=> ] 4\r (no-eol) (esc) |
|
34 | linking [ <=> ] 4\r (no-eol) (esc) | |
35 | linking [ <=> ] 5\r (no-eol) (esc) |
|
35 | linking [ <=> ] 5\r (no-eol) (esc) | |
36 | linking [ <=> ] 6\r (no-eol) (esc) |
|
36 | linking [ <=> ] 6\r (no-eol) (esc) | |
37 | \r (no-eol) (esc) |
|
37 | \r (no-eol) (esc) | |
38 | \r (no-eol) (esc) |
|
38 | \r (no-eol) (esc) | |
39 | updating [===========================================>] 1/1\r (no-eol) (esc) |
|
39 | updating [===========================================>] 1/1\r (no-eol) (esc) | |
40 | \r (no-eol) (esc) |
|
40 | \r (no-eol) (esc) | |
41 | updating to branch default |
|
41 | updating to branch default | |
42 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
42 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
43 | $ hg add -R sub1 |
|
43 | $ hg add -R sub1 | |
44 | adding sub1/.hgsub (glob) |
|
44 | adding sub1/.hgsub (glob) | |
45 | adding sub1/sub1 (glob) |
|
45 | adding sub1/sub1 (glob) | |
46 | $ hg commit -R sub1 -m "sub1 import" |
|
46 | $ hg commit -R sub1 -m "sub1 import" | |
47 |
|
47 | |||
48 | Preparing the 'main' repo which depends on the subrepo 'sub1' |
|
48 | Preparing the 'main' repo which depends on the subrepo 'sub1' | |
49 |
|
49 | |||
50 | $ hg init main |
|
50 | $ hg init main | |
51 | $ echo main > main/main |
|
51 | $ echo main > main/main | |
52 | $ echo "sub1 = ../sub1" > main/.hgsub |
|
52 | $ echo "sub1 = ../sub1" > main/.hgsub | |
53 | $ hg clone sub1 main/sub1 |
|
53 | $ hg clone sub1 main/sub1 | |
54 | \r (no-eol) (esc) |
|
54 | \r (no-eol) (esc) | |
55 | linking [ <=> ] 1\r (no-eol) (esc) |
|
55 | linking [ <=> ] 1\r (no-eol) (esc) | |
56 | linking [ <=> ] 2\r (no-eol) (esc) |
|
56 | linking [ <=> ] 2\r (no-eol) (esc) | |
57 | linking [ <=> ] 3\r (no-eol) (esc) |
|
57 | linking [ <=> ] 3\r (no-eol) (esc) | |
58 | linking [ <=> ] 4\r (no-eol) (esc) |
|
58 | linking [ <=> ] 4\r (no-eol) (esc) | |
59 | linking [ <=> ] 5\r (no-eol) (esc) |
|
59 | linking [ <=> ] 5\r (no-eol) (esc) | |
60 | linking [ <=> ] 6\r (no-eol) (esc) |
|
60 | linking [ <=> ] 6\r (no-eol) (esc) | |
61 | linking [ <=> ] 7\r (no-eol) (esc) |
|
61 | linking [ <=> ] 7\r (no-eol) (esc) | |
62 | linking [ <=> ] 8\r (no-eol) (esc) |
|
62 | linking [ <=> ] 8\r (no-eol) (esc) | |
63 | \r (no-eol) (esc) |
|
63 | \r (no-eol) (esc) | |
64 | \r (no-eol) (esc) |
|
64 | \r (no-eol) (esc) | |
65 | updating [===========================================>] 3/3\r (no-eol) (esc) |
|
65 | updating [===========================================>] 3/3\r (no-eol) (esc) | |
66 | updating [===========================================>] 1/1\r (no-eol) (esc) |
|
66 | updating [===========================================>] 1/1\r (no-eol) (esc) | |
67 | \r (no-eol) (esc) |
|
67 | \r (no-eol) (esc) | |
68 | updating to branch default |
|
68 | updating to branch default | |
69 | cloning subrepo sub2 from $TESTTMP/sub2 |
|
69 | cloning subrepo sub2 from $TESTTMP/sub2 | |
70 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
70 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
71 | $ hg add -R main |
|
71 | $ hg add -R main | |
72 | adding main/.hgsub (glob) |
|
72 | adding main/.hgsub (glob) | |
73 | adding main/main (glob) |
|
73 | adding main/main (glob) | |
74 | $ hg commit -R main -m "main import" |
|
74 | $ hg commit -R main -m "main import" | |
75 |
|
75 | |||
76 | Cleaning both repositories, just as a clone -U |
|
76 | Cleaning both repositories, just as a clone -U | |
77 |
|
77 | |||
78 | $ hg up -C -R sub2 null |
|
78 | $ hg up -C -R sub2 null | |
79 | \r (no-eol) (esc) |
|
79 | \r (no-eol) (esc) | |
80 | updating [===========================================>] 1/1\r (no-eol) (esc) |
|
80 | updating [===========================================>] 1/1\r (no-eol) (esc) | |
81 | \r (no-eol) (esc) |
|
81 | \r (no-eol) (esc) | |
82 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
82 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
83 | $ hg up -C -R sub1 null |
|
83 | $ hg up -C -R sub1 null | |
84 | \r (no-eol) (esc) |
|
84 | \r (no-eol) (esc) | |
85 | updating [===========================================>] 1/1\r (no-eol) (esc) |
|
85 | updating [===========================================>] 1/1\r (no-eol) (esc) | |
86 | \r (no-eol) (esc) |
|
86 | \r (no-eol) (esc) | |
87 | \r (no-eol) (esc) |
|
87 | \r (no-eol) (esc) | |
88 | updating [===========================================>] 3/3\r (no-eol) (esc) |
|
88 | updating [===========================================>] 3/3\r (no-eol) (esc) | |
89 | \r (no-eol) (esc) |
|
89 | \r (no-eol) (esc) | |
90 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
90 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved | |
91 | $ hg up -C -R main null |
|
91 | $ hg up -C -R main null | |
92 | \r (no-eol) (esc) |
|
92 | \r (no-eol) (esc) | |
93 | updating [===========================================>] 1/1\r (no-eol) (esc) |
|
93 | updating [===========================================>] 1/1\r (no-eol) (esc) | |
94 | \r (no-eol) (esc) |
|
94 | \r (no-eol) (esc) | |
95 | \r (no-eol) (esc) |
|
95 | \r (no-eol) (esc) | |
96 | updating [===========================================>] 3/3\r (no-eol) (esc) |
|
96 | updating [===========================================>] 3/3\r (no-eol) (esc) | |
97 | \r (no-eol) (esc) |
|
97 | \r (no-eol) (esc) | |
98 | \r (no-eol) (esc) |
|
98 | \r (no-eol) (esc) | |
99 | updating [===========================================>] 3/3\r (no-eol) (esc) |
|
99 | updating [===========================================>] 3/3\r (no-eol) (esc) | |
100 | \r (no-eol) (esc) |
|
100 | \r (no-eol) (esc) | |
101 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
101 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved | |
102 | $ rm -rf main/sub1 |
|
102 | $ rm -rf main/sub1 | |
103 | $ rm -rf sub1/sub2 |
|
103 | $ rm -rf sub1/sub2 | |
104 |
|
104 | |||
105 | Clone main |
|
105 | Clone main | |
106 |
|
106 | |||
107 | $ hg --config extensions.largefiles= clone main cloned |
|
107 | $ hg --config extensions.largefiles= clone main cloned | |
108 | \r (no-eol) (esc) |
|
108 | \r (no-eol) (esc) | |
109 | linking [ <=> ] 1\r (no-eol) (esc) |
|
109 | linking [ <=> ] 1\r (no-eol) (esc) | |
110 | linking [ <=> ] 2\r (no-eol) (esc) |
|
110 | linking [ <=> ] 2\r (no-eol) (esc) | |
111 | linking [ <=> ] 3\r (no-eol) (esc) |
|
111 | linking [ <=> ] 3\r (no-eol) (esc) | |
112 | linking [ <=> ] 4\r (no-eol) (esc) |
|
112 | linking [ <=> ] 4\r (no-eol) (esc) | |
113 | linking [ <=> ] 5\r (no-eol) (esc) |
|
113 | linking [ <=> ] 5\r (no-eol) (esc) | |
114 | linking [ <=> ] 6\r (no-eol) (esc) |
|
114 | linking [ <=> ] 6\r (no-eol) (esc) | |
115 | linking [ <=> ] 7\r (no-eol) (esc) |
|
115 | linking [ <=> ] 7\r (no-eol) (esc) | |
116 | linking [ <=> ] 8\r (no-eol) (esc) |
|
116 | linking [ <=> ] 8\r (no-eol) (esc) | |
117 | \r (no-eol) (esc) |
|
117 | \r (no-eol) (esc) | |
118 | \r (no-eol) (esc) |
|
118 | \r (no-eol) (esc) | |
119 | updating [===========================================>] 3/3\r (no-eol) (esc) |
|
119 | updating [===========================================>] 3/3\r (no-eol) (esc) | |
120 | updating [===========================================>] 3/3\r (no-eol) (esc) |
|
120 | updating [===========================================>] 3/3\r (no-eol) (esc) | |
121 | updating [===========================================>] 1/1\r (no-eol) (esc) |
|
121 | updating [===========================================>] 1/1\r (no-eol) (esc) | |
122 | \r (no-eol) (esc) |
|
122 | \r (no-eol) (esc) | |
123 | updating to branch default |
|
123 | updating to branch default | |
124 | cloning subrepo sub1 from $TESTTMP/sub1 |
|
124 | cloning subrepo sub1 from $TESTTMP/sub1 | |
125 | cloning subrepo sub1/sub2 from $TESTTMP/sub2 (glob) |
|
125 | cloning subrepo sub1/sub2 from $TESTTMP/sub2 (glob) | |
126 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
126 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
127 |
|
127 | |||
128 | Largefiles is NOT enabled in the clone if the source repo doesn't require it |
|
128 | Largefiles is NOT enabled in the clone if the source repo doesn't require it | |
129 | $ cat cloned/.hg/hgrc |
|
129 | $ cat cloned/.hg/hgrc | |
130 | # example repository config (see "hg help config" for more info) |
|
130 | # example repository config (see "hg help config" for more info) | |
131 | [paths] |
|
131 | [paths] | |
132 | default = $TESTTMP/main (glob) |
|
132 | default = $TESTTMP/main (glob) | |
133 |
|
133 | |||
134 | # path aliases to other clones of this repo in URLs or filesystem paths |
|
134 | # path aliases to other clones of this repo in URLs or filesystem paths | |
135 | # (see "hg help config.paths" for more info) |
|
135 | # (see "hg help config.paths" for more info) | |
136 | # |
|
136 | # | |
137 | # default-push = ssh://jdoe@example.net/hg/jdoes-fork |
|
137 | # default-push = ssh://jdoe@example.net/hg/jdoes-fork | |
138 | # my-fork = ssh://jdoe@example.net/hg/jdoes-fork |
|
138 | # my-fork = ssh://jdoe@example.net/hg/jdoes-fork | |
139 | # my-clone = /home/jdoe/jdoes-clone |
|
139 | # my-clone = /home/jdoe/jdoes-clone | |
140 |
|
140 | |||
141 | [ui] |
|
141 | [ui] | |
142 | # name and email (local to this repository, optional), e.g. |
|
142 | # name and email (local to this repository, optional), e.g. | |
143 | # username = Jane Doe <jdoe@example.com> |
|
143 | # username = Jane Doe <jdoe@example.com> | |
144 |
|
144 | |||
145 | Checking cloned repo ids |
|
145 | Checking cloned repo ids | |
146 |
|
146 | |||
147 | $ printf "cloned " ; hg id -R cloned |
|
147 | $ printf "cloned " ; hg id -R cloned | |
148 | cloned 7f491f53a367 tip |
|
148 | cloned 7f491f53a367 tip | |
149 | $ printf "cloned/sub1 " ; hg id -R cloned/sub1 |
|
149 | $ printf "cloned/sub1 " ; hg id -R cloned/sub1 | |
150 | cloned/sub1 fc3b4ce2696f tip |
|
150 | cloned/sub1 fc3b4ce2696f tip | |
151 | $ printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2 |
|
151 | $ printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2 | |
152 | cloned/sub1/sub2 c57a0840e3ba tip |
|
152 | cloned/sub1/sub2 c57a0840e3ba tip | |
153 |
|
153 | |||
154 | debugsub output for main and sub1 |
|
154 | debugsub output for main and sub1 | |
155 |
|
155 | |||
156 | $ hg debugsub -R cloned |
|
156 | $ hg debugsub -R cloned | |
157 | path sub1 |
|
157 | path sub1 | |
158 | source ../sub1 |
|
158 | source ../sub1 | |
159 | revision fc3b4ce2696f7741438c79207583768f2ce6b0dd |
|
159 | revision fc3b4ce2696f7741438c79207583768f2ce6b0dd | |
160 | $ hg debugsub -R cloned/sub1 |
|
160 | $ hg debugsub -R cloned/sub1 | |
161 | path sub2 |
|
161 | path sub2 | |
162 | source ../sub2 |
|
162 | source ../sub2 | |
163 | revision c57a0840e3badd667ef3c3ef65471609acb2ba3c |
|
163 | revision c57a0840e3badd667ef3c3ef65471609acb2ba3c | |
164 |
|
164 | |||
165 | Modifying deeply nested 'sub2' |
|
165 | Modifying deeply nested 'sub2' | |
166 |
|
166 | |||
167 | $ echo modified > cloned/sub1/sub2/sub2 |
|
167 | $ echo modified > cloned/sub1/sub2/sub2 | |
168 | $ hg commit --subrepos -m "deep nested modif should trigger a commit" -R cloned |
|
168 | $ hg commit --subrepos -m "deep nested modif should trigger a commit" -R cloned | |
169 | committing subrepository sub1 |
|
169 | committing subrepository sub1 | |
170 | committing subrepository sub1/sub2 (glob) |
|
170 | committing subrepository sub1/sub2 (glob) | |
171 |
|
171 | |||
172 | Checking modified node ids |
|
172 | Checking modified node ids | |
173 |
|
173 | |||
174 | $ printf "cloned " ; hg id -R cloned |
|
174 | $ printf "cloned " ; hg id -R cloned | |
175 | cloned ffe6649062fe tip |
|
175 | cloned ffe6649062fe tip | |
176 | $ printf "cloned/sub1 " ; hg id -R cloned/sub1 |
|
176 | $ printf "cloned/sub1 " ; hg id -R cloned/sub1 | |
177 | cloned/sub1 2ecb03bf44a9 tip |
|
177 | cloned/sub1 2ecb03bf44a9 tip | |
178 | $ printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2 |
|
178 | $ printf "cloned/sub1/sub2 " ; hg id -R cloned/sub1/sub2 | |
179 | cloned/sub1/sub2 53dd3430bcaf tip |
|
179 | cloned/sub1/sub2 53dd3430bcaf tip | |
180 |
|
180 | |||
181 | debugsub output for main and sub1 |
|
181 | debugsub output for main and sub1 | |
182 |
|
182 | |||
183 | $ hg debugsub -R cloned |
|
183 | $ hg debugsub -R cloned | |
184 | path sub1 |
|
184 | path sub1 | |
185 | source ../sub1 |
|
185 | source ../sub1 | |
186 | revision 2ecb03bf44a94e749e8669481dd9069526ce7cb9 |
|
186 | revision 2ecb03bf44a94e749e8669481dd9069526ce7cb9 | |
187 | $ hg debugsub -R cloned/sub1 |
|
187 | $ hg debugsub -R cloned/sub1 | |
188 | path sub2 |
|
188 | path sub2 | |
189 | source ../sub2 |
|
189 | source ../sub2 | |
190 | revision 53dd3430bcaf5ab4a7c48262bcad6d441f510487 |
|
190 | revision 53dd3430bcaf5ab4a7c48262bcad6d441f510487 | |
191 |
|
191 | |||
192 | Check that deep archiving works |
|
192 | Check that deep archiving works | |
193 |
|
193 | |||
194 | $ cd cloned |
|
194 | $ cd cloned | |
195 | $ echo 'test' > sub1/sub2/test.txt |
|
195 | $ echo 'test' > sub1/sub2/test.txt | |
196 | $ hg --config extensions.largefiles=! add sub1/sub2/test.txt |
|
196 | $ hg --config extensions.largefiles=! add sub1/sub2/test.txt | |
197 | $ mkdir sub1/sub2/folder |
|
197 | $ mkdir sub1/sub2/folder | |
198 | $ echo 'subfolder' > sub1/sub2/folder/test.txt |
|
198 | $ echo 'subfolder' > sub1/sub2/folder/test.txt | |
199 | $ hg ci -ASm "add test.txt" |
|
199 | $ hg ci -ASm "add test.txt" | |
200 | adding sub1/sub2/folder/test.txt |
|
200 | adding sub1/sub2/folder/test.txt | |
201 | committing subrepository sub1 |
|
201 | committing subrepository sub1 | |
202 | committing subrepository sub1/sub2 (glob) |
|
202 | committing subrepository sub1/sub2 (glob) | |
203 |
|
203 | |||
204 | .. but first take a detour through some deep removal testing |
|
204 | .. but first take a detour through some deep removal testing | |
205 |
|
205 | |||
206 | $ hg remove -S -I 're:.*.txt' . |
|
206 | $ hg remove -S -I 're:.*.txt' . | |
207 | \r (no-eol) (esc) |
|
207 | \r (no-eol) (esc) | |
208 | searching [==========================================>] 1/1\r (no-eol) (esc) |
|
208 | searching [==========================================>] 1/1\r (no-eol) (esc) | |
209 | searching [==========================================>] 1/1\r (no-eol) (esc) |
|
209 | searching [==========================================>] 1/1\r (no-eol) (esc) | |
210 | \r (no-eol) (esc) |
|
210 | \r (no-eol) (esc) | |
211 | \r (no-eol) (esc) |
|
211 | \r (no-eol) (esc) | |
212 | deleting [=====================> ] 1/2\r (no-eol) (esc) |
|
212 | deleting [=====================> ] 1/2\r (no-eol) (esc) | |
213 | \r (no-eol) (esc) |
|
213 | \r (no-eol) (esc) | |
214 | \r (no-eol) (esc) |
|
214 | \r (no-eol) (esc) | |
215 | deleting [===========================================>] 2/2\r (no-eol) (esc) |
|
215 | deleting [===========================================>] 2/2\r (no-eol) (esc) | |
216 | \r (no-eol) (esc) |
|
216 | \r (no-eol) (esc) | |
217 | \r (no-eol) (esc) |
|
217 | \r (no-eol) (esc) | |
218 | \r (no-eol) (esc) |
|
218 | \r (no-eol) (esc) | |
219 | removing sub1/sub2/folder/test.txt (glob) |
|
219 | removing sub1/sub2/folder/test.txt (glob) | |
220 | removing sub1/sub2/test.txt (glob) |
|
220 | removing sub1/sub2/test.txt (glob) | |
221 | $ hg status -S |
|
221 | $ hg status -S | |
222 | R sub1/sub2/folder/test.txt |
|
222 | R sub1/sub2/folder/test.txt | |
223 | R sub1/sub2/test.txt |
|
223 | R sub1/sub2/test.txt | |
224 | $ hg update -Cq |
|
224 | $ hg update -Cq | |
225 | $ hg remove -I 're:.*.txt' sub1 |
|
225 | $ hg remove -I 're:.*.txt' sub1 | |
226 | \r (no-eol) (esc) |
|
226 | \r (no-eol) (esc) | |
227 | searching [==========================================>] 1/1\r (no-eol) (esc) |
|
227 | searching [==========================================>] 1/1\r (no-eol) (esc) | |
228 | \r (no-eol) (esc) |
|
228 | \r (no-eol) (esc) | |
229 | \r (no-eol) (esc) |
|
229 | \r (no-eol) (esc) | |
230 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
230 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
231 | \r (no-eol) (esc) |
|
231 | \r (no-eol) (esc) | |
232 | $ hg status -S |
|
232 | $ hg status -S | |
233 | $ hg remove sub1/sub2/folder/test.txt |
|
233 | $ hg remove sub1/sub2/folder/test.txt | |
234 | \r (no-eol) (esc) |
|
234 | \r (no-eol) (esc) | |
235 | searching [==========================================>] 1/1\r (no-eol) (esc) |
|
235 | searching [==========================================>] 1/1\r (no-eol) (esc) | |
236 | searching [==========================================>] 1/1\r (no-eol) (esc) |
|
236 | searching [==========================================>] 1/1\r (no-eol) (esc) | |
237 | \r (no-eol) (esc) |
|
237 | \r (no-eol) (esc) | |
238 | \r (no-eol) (esc) |
|
238 | \r (no-eol) (esc) | |
239 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
239 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
240 | \r (no-eol) (esc) |
|
240 | \r (no-eol) (esc) | |
241 | \r (no-eol) (esc) |
|
241 | \r (no-eol) (esc) | |
242 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
242 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
243 | \r (no-eol) (esc) |
|
243 | \r (no-eol) (esc) | |
244 | \r (no-eol) (esc) |
|
244 | \r (no-eol) (esc) | |
245 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
245 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
246 | \r (no-eol) (esc) |
|
246 | \r (no-eol) (esc) | |
247 | $ hg remove sub1/.hgsubstate |
|
247 | $ hg remove sub1/.hgsubstate | |
248 | \r (no-eol) (esc) |
|
248 | \r (no-eol) (esc) | |
249 | searching [==========================================>] 1/1\r (no-eol) (esc) |
|
249 | searching [==========================================>] 1/1\r (no-eol) (esc) | |
250 | \r (no-eol) (esc) |
|
250 | \r (no-eol) (esc) | |
251 | \r (no-eol) (esc) |
|
251 | \r (no-eol) (esc) | |
252 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
252 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
253 | \r (no-eol) (esc) |
|
253 | \r (no-eol) (esc) | |
254 | \r (no-eol) (esc) |
|
254 | \r (no-eol) (esc) | |
255 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
255 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
256 | \r (no-eol) (esc) |
|
256 | \r (no-eol) (esc) | |
257 | $ mv sub1/.hgsub sub1/x.hgsub |
|
257 | $ mv sub1/.hgsub sub1/x.hgsub | |
258 | $ hg status -S |
|
258 | $ hg status -S | |
259 | warning: subrepo spec file 'sub1/.hgsub' not found |
|
259 | warning: subrepo spec file 'sub1/.hgsub' not found | |
260 | R sub1/.hgsubstate |
|
260 | R sub1/.hgsubstate | |
261 | R sub1/sub2/folder/test.txt |
|
261 | R sub1/sub2/folder/test.txt | |
262 | ! sub1/.hgsub |
|
262 | ! sub1/.hgsub | |
263 | ? sub1/x.hgsub |
|
263 | ? sub1/x.hgsub | |
264 | $ mv sub1/x.hgsub sub1/.hgsub |
|
264 | $ mv sub1/x.hgsub sub1/.hgsub | |
265 | $ hg update -Cq |
|
265 | $ hg update -Cq | |
266 | $ touch sub1/foo |
|
266 | $ touch sub1/foo | |
267 | $ hg forget sub1/sub2/folder/test.txt |
|
267 | $ hg forget sub1/sub2/folder/test.txt | |
268 | $ rm sub1/sub2/test.txt |
|
268 | $ rm sub1/sub2/test.txt | |
269 |
|
269 | |||
270 | Test relative path printing + subrepos |
|
270 | Test relative path printing + subrepos | |
271 | $ mkdir -p foo/bar |
|
271 | $ mkdir -p foo/bar | |
272 | $ cd foo |
|
272 | $ cd foo | |
273 | $ touch bar/abc |
|
273 | $ touch bar/abc | |
274 | $ hg addremove -S .. |
|
274 | $ hg addremove -S .. | |
275 | \r (no-eol) (esc) |
|
275 | \r (no-eol) (esc) | |
276 | searching for exact renames [ ] 0/1\r (no-eol) (esc) |
|
276 | searching for exact renames [ ] 0/1\r (no-eol) (esc) | |
277 | \r (no-eol) (esc) |
|
277 | \r (no-eol) (esc) | |
278 | adding ../sub1/sub2/folder/test.txt (glob) |
|
278 | adding ../sub1/sub2/folder/test.txt (glob) | |
279 | removing ../sub1/sub2/test.txt (glob) |
|
279 | removing ../sub1/sub2/test.txt (glob) | |
280 | adding ../sub1/foo (glob) |
|
280 | adding ../sub1/foo (glob) | |
281 | adding bar/abc (glob) |
|
281 | adding bar/abc (glob) | |
282 | $ cd .. |
|
282 | $ cd .. | |
283 | $ hg status -S |
|
283 | $ hg status -S | |
284 | A foo/bar/abc |
|
284 | A foo/bar/abc | |
285 | A sub1/foo |
|
285 | A sub1/foo | |
286 | R sub1/sub2/test.txt |
|
286 | R sub1/sub2/test.txt | |
287 |
|
287 | |||
288 | Archive wdir() with subrepos |
|
288 | Archive wdir() with subrepos | |
289 | $ hg rm main |
|
289 | $ hg rm main | |
290 | \r (no-eol) (esc) |
|
290 | \r (no-eol) (esc) | |
291 | deleting [===========================================>] 1/1\r (no-eol) (esc) |
|
291 | deleting [===========================================>] 1/1\r (no-eol) (esc) | |
292 | \r (no-eol) (esc) |
|
292 | \r (no-eol) (esc) | |
293 | $ hg archive -S -r 'wdir()' ../wdir |
|
293 | $ hg archive -S -r 'wdir()' ../wdir | |
294 | \r (no-eol) (esc) |
|
294 | \r (no-eol) (esc) | |
295 | archiving [ ] 0/3\r (no-eol) (esc) |
|
295 | archiving [ ] 0/3\r (no-eol) (esc) | |
296 | archiving [=============> ] 1/3\r (no-eol) (esc) |
|
296 | archiving [=============> ] 1/3\r (no-eol) (esc) | |
297 | archiving [===========================> ] 2/3\r (no-eol) (esc) |
|
297 | archiving [===========================> ] 2/3\r (no-eol) (esc) | |
298 | archiving [==========================================>] 3/3\r (no-eol) (esc) |
|
298 | archiving [==========================================>] 3/3\r (no-eol) (esc) | |
299 | \r (no-eol) (esc) |
|
299 | \r (no-eol) (esc) | |
300 | \r (no-eol) (esc) |
|
300 | \r (no-eol) (esc) | |
301 | archiving (sub1) [ ] 0/4\r (no-eol) (esc) |
|
301 | archiving (sub1) [ ] 0/4\r (no-eol) (esc) | |
302 | archiving (sub1) [========> ] 1/4\r (no-eol) (esc) |
|
302 | archiving (sub1) [========> ] 1/4\r (no-eol) (esc) | |
303 | archiving (sub1) [=================> ] 2/4\r (no-eol) (esc) |
|
303 | archiving (sub1) [=================> ] 2/4\r (no-eol) (esc) | |
304 | archiving (sub1) [==========================> ] 3/4\r (no-eol) (esc) |
|
304 | archiving (sub1) [==========================> ] 3/4\r (no-eol) (esc) | |
305 | archiving (sub1) [===================================>] 4/4\r (no-eol) (esc) |
|
305 | archiving (sub1) [===================================>] 4/4\r (no-eol) (esc) | |
306 | \r (no-eol) (esc) |
|
306 | \r (no-eol) (esc) | |
307 | \r (no-eol) (esc) |
|
307 | \r (no-eol) (esc) | |
308 | archiving (sub1/sub2) [ ] 0/2\r (no-eol) (esc) |
|
308 | archiving (sub1/sub2) [ ] 0/2\r (no-eol) (glob) (esc) | |
309 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) |
|
309 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (glob) (esc) | |
310 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) |
|
310 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (glob) (esc) | |
311 | \r (no-eol) (esc) |
|
311 | \r (no-eol) (esc) | |
312 | $ diff -r . ../wdir | egrep -v '\.hg$|^Common subdirectories:' |
|
312 | $ diff -r . ../wdir | egrep -v '\.hg$|^Common subdirectories:' | |
313 | Only in ../wdir: .hg_archival.txt |
|
313 | Only in ../wdir: .hg_archival.txt | |
314 |
|
314 | |||
315 | $ find ../wdir -type f | sort |
|
315 | $ find ../wdir -type f | sort | |
316 | ../wdir/.hg_archival.txt |
|
316 | ../wdir/.hg_archival.txt | |
317 | ../wdir/.hgsub |
|
317 | ../wdir/.hgsub | |
318 | ../wdir/.hgsubstate |
|
318 | ../wdir/.hgsubstate | |
319 | ../wdir/foo/bar/abc |
|
319 | ../wdir/foo/bar/abc | |
320 | ../wdir/sub1/.hgsub |
|
320 | ../wdir/sub1/.hgsub | |
321 | ../wdir/sub1/.hgsubstate |
|
321 | ../wdir/sub1/.hgsubstate | |
322 | ../wdir/sub1/foo |
|
322 | ../wdir/sub1/foo | |
323 | ../wdir/sub1/sub1 |
|
323 | ../wdir/sub1/sub1 | |
324 | ../wdir/sub1/sub2/folder/test.txt |
|
324 | ../wdir/sub1/sub2/folder/test.txt | |
325 | ../wdir/sub1/sub2/sub2 |
|
325 | ../wdir/sub1/sub2/sub2 | |
326 |
|
326 | |||
327 | $ cat ../wdir/.hg_archival.txt |
|
327 | $ cat ../wdir/.hg_archival.txt | |
328 | repo: 7f491f53a367861f47ee64a80eb997d1f341b77a |
|
328 | repo: 7f491f53a367861f47ee64a80eb997d1f341b77a | |
329 | node: 9bb10eebee29dc0f1201dcf5977b811a540255fd+ |
|
329 | node: 9bb10eebee29dc0f1201dcf5977b811a540255fd+ | |
330 | branch: default |
|
330 | branch: default | |
331 | latesttag: null |
|
331 | latesttag: null | |
332 | latesttagdistance: 4 |
|
332 | latesttagdistance: 4 | |
333 | changessincelatesttag: 4 |
|
333 | changessincelatesttag: 4 | |
334 |
|
334 | |||
335 | Attempting to archive 'wdir()' with a missing file is handled gracefully |
|
335 | Attempting to archive 'wdir()' with a missing file is handled gracefully | |
336 | $ rm sub1/sub1 |
|
336 | $ rm sub1/sub1 | |
337 | $ rm -r ../wdir |
|
337 | $ rm -r ../wdir | |
338 | $ hg archive -v -S -r 'wdir()' ../wdir |
|
338 | $ hg archive -v -S -r 'wdir()' ../wdir | |
339 | \r (no-eol) (esc) |
|
339 | \r (no-eol) (esc) | |
340 | archiving [ ] 0/3\r (no-eol) (esc) |
|
340 | archiving [ ] 0/3\r (no-eol) (esc) | |
341 | archiving [=============> ] 1/3\r (no-eol) (esc) |
|
341 | archiving [=============> ] 1/3\r (no-eol) (esc) | |
342 | archiving [===========================> ] 2/3\r (no-eol) (esc) |
|
342 | archiving [===========================> ] 2/3\r (no-eol) (esc) | |
343 | archiving [==========================================>] 3/3\r (no-eol) (esc) |
|
343 | archiving [==========================================>] 3/3\r (no-eol) (esc) | |
344 | \r (no-eol) (esc) |
|
344 | \r (no-eol) (esc) | |
345 | \r (no-eol) (esc) |
|
345 | \r (no-eol) (esc) | |
346 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) |
|
346 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) | |
347 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) |
|
347 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) | |
348 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) |
|
348 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) | |
349 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) |
|
349 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) | |
350 | \r (no-eol) (esc) |
|
350 | \r (no-eol) (esc) | |
351 | \r (no-eol) (esc) |
|
351 | \r (no-eol) (esc) | |
352 | archiving (sub1/sub2) [ ] 0/2\r (no-eol) (esc) |
|
352 | archiving (sub1/sub2) [ ] 0/2\r (no-eol) (glob) (esc) | |
353 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) |
|
353 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (glob) (esc) | |
354 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) |
|
354 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (glob) (esc) | |
355 | \r (no-eol) (esc) |
|
355 | \r (no-eol) (esc) | |
356 | $ find ../wdir -type f | sort |
|
356 | $ find ../wdir -type f | sort | |
357 | ../wdir/.hg_archival.txt |
|
357 | ../wdir/.hg_archival.txt | |
358 | ../wdir/.hgsub |
|
358 | ../wdir/.hgsub | |
359 | ../wdir/.hgsubstate |
|
359 | ../wdir/.hgsubstate | |
360 | ../wdir/foo/bar/abc |
|
360 | ../wdir/foo/bar/abc | |
361 | ../wdir/sub1/.hgsub |
|
361 | ../wdir/sub1/.hgsub | |
362 | ../wdir/sub1/.hgsubstate |
|
362 | ../wdir/sub1/.hgsubstate | |
363 | ../wdir/sub1/foo |
|
363 | ../wdir/sub1/foo | |
364 | ../wdir/sub1/sub2/folder/test.txt |
|
364 | ../wdir/sub1/sub2/folder/test.txt | |
365 | ../wdir/sub1/sub2/sub2 |
|
365 | ../wdir/sub1/sub2/sub2 | |
366 |
|
366 | |||
367 | Continue relative path printing + subrepos |
|
367 | Continue relative path printing + subrepos | |
368 | $ hg update -Cq |
|
368 | $ hg update -Cq | |
369 | $ rm -r ../wdir |
|
369 | $ rm -r ../wdir | |
370 | $ hg archive -S -r 'wdir()' ../wdir |
|
370 | $ hg archive -S -r 'wdir()' ../wdir | |
371 | \r (no-eol) (esc) |
|
371 | \r (no-eol) (esc) | |
372 | archiving [ ] 0/3\r (no-eol) (esc) |
|
372 | archiving [ ] 0/3\r (no-eol) (esc) | |
373 | archiving [=============> ] 1/3\r (no-eol) (esc) |
|
373 | archiving [=============> ] 1/3\r (no-eol) (esc) | |
374 | archiving [===========================> ] 2/3\r (no-eol) (esc) |
|
374 | archiving [===========================> ] 2/3\r (no-eol) (esc) | |
375 | archiving [==========================================>] 3/3\r (no-eol) (esc) |
|
375 | archiving [==========================================>] 3/3\r (no-eol) (esc) | |
376 | \r (no-eol) (esc) |
|
376 | \r (no-eol) (esc) | |
377 | \r (no-eol) (esc) |
|
377 | \r (no-eol) (esc) | |
378 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) |
|
378 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) | |
379 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) |
|
379 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) | |
380 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) |
|
380 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) | |
381 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) |
|
381 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) | |
382 | \r (no-eol) (esc) |
|
382 | \r (no-eol) (esc) | |
383 | \r (no-eol) (esc) |
|
383 | \r (no-eol) (esc) | |
384 | archiving (sub1/sub2) [ ] 0/3\r (no-eol) (esc) |
|
384 | archiving (sub1/sub2) [ ] 0/3\r (no-eol) (glob) (esc) | |
385 | archiving (sub1/sub2) [=========> ] 1/3\r (no-eol) (esc) |
|
385 | archiving (sub1/sub2) [=========> ] 1/3\r (no-eol) (glob) (esc) | |
386 | archiving (sub1/sub2) [===================> ] 2/3\r (no-eol) (esc) |
|
386 | archiving (sub1/sub2) [===================> ] 2/3\r (no-eol) (glob) (esc) | |
387 | archiving (sub1/sub2) [==============================>] 3/3\r (no-eol) (esc) |
|
387 | archiving (sub1/sub2) [==============================>] 3/3\r (no-eol) (glob) (esc) | |
388 | \r (no-eol) (esc) |
|
388 | \r (no-eol) (esc) | |
389 | $ cat ../wdir/.hg_archival.txt |
|
389 | $ cat ../wdir/.hg_archival.txt | |
390 | repo: 7f491f53a367861f47ee64a80eb997d1f341b77a |
|
390 | repo: 7f491f53a367861f47ee64a80eb997d1f341b77a | |
391 | node: 9bb10eebee29dc0f1201dcf5977b811a540255fd |
|
391 | node: 9bb10eebee29dc0f1201dcf5977b811a540255fd | |
392 | branch: default |
|
392 | branch: default | |
393 | latesttag: null |
|
393 | latesttag: null | |
394 | latesttagdistance: 4 |
|
394 | latesttagdistance: 4 | |
395 | changessincelatesttag: 4 |
|
395 | changessincelatesttag: 4 | |
396 |
|
396 | |||
397 | $ touch sub1/sub2/folder/bar |
|
397 | $ touch sub1/sub2/folder/bar | |
398 | $ hg addremove sub1/sub2 |
|
398 | $ hg addremove sub1/sub2 | |
399 | adding sub1/sub2/folder/bar (glob) |
|
399 | adding sub1/sub2/folder/bar (glob) | |
400 | $ hg status -S |
|
400 | $ hg status -S | |
401 | A sub1/sub2/folder/bar |
|
401 | A sub1/sub2/folder/bar | |
402 | ? foo/bar/abc |
|
402 | ? foo/bar/abc | |
403 | ? sub1/foo |
|
403 | ? sub1/foo | |
404 | $ hg update -Cq |
|
404 | $ hg update -Cq | |
405 | $ hg addremove sub1 |
|
405 | $ hg addremove sub1 | |
406 | adding sub1/sub2/folder/bar (glob) |
|
406 | adding sub1/sub2/folder/bar (glob) | |
407 | adding sub1/foo (glob) |
|
407 | adding sub1/foo (glob) | |
408 | $ hg update -Cq |
|
408 | $ hg update -Cq | |
409 | $ rm sub1/sub2/folder/test.txt |
|
409 | $ rm sub1/sub2/folder/test.txt | |
410 | $ rm sub1/sub2/test.txt |
|
410 | $ rm sub1/sub2/test.txt | |
411 | $ hg ci -ASm "remove test.txt" |
|
411 | $ hg ci -ASm "remove test.txt" | |
412 | adding sub1/sub2/folder/bar |
|
412 | adding sub1/sub2/folder/bar | |
413 | removing sub1/sub2/folder/test.txt |
|
413 | removing sub1/sub2/folder/test.txt | |
414 | removing sub1/sub2/test.txt |
|
414 | removing sub1/sub2/test.txt | |
415 | adding sub1/foo |
|
415 | adding sub1/foo | |
416 | adding foo/bar/abc |
|
416 | adding foo/bar/abc | |
417 | committing subrepository sub1 |
|
417 | committing subrepository sub1 | |
418 | committing subrepository sub1/sub2 (glob) |
|
418 | committing subrepository sub1/sub2 (glob) | |
419 |
|
419 | |||
420 | $ hg forget sub1/sub2/sub2 |
|
420 | $ hg forget sub1/sub2/sub2 | |
421 | $ echo x > sub1/sub2/x.txt |
|
421 | $ echo x > sub1/sub2/x.txt | |
422 | $ hg add sub1/sub2/x.txt |
|
422 | $ hg add sub1/sub2/x.txt | |
423 |
|
423 | |||
424 | Files sees uncommitted adds and removes in subrepos |
|
424 | Files sees uncommitted adds and removes in subrepos | |
425 | $ hg files -S |
|
425 | $ hg files -S | |
426 | .hgsub |
|
426 | .hgsub | |
427 | .hgsubstate |
|
427 | .hgsubstate | |
428 | foo/bar/abc (glob) |
|
428 | foo/bar/abc (glob) | |
429 | main |
|
429 | main | |
430 | sub1/.hgsub (glob) |
|
430 | sub1/.hgsub (glob) | |
431 | sub1/.hgsubstate (glob) |
|
431 | sub1/.hgsubstate (glob) | |
432 | sub1/foo (glob) |
|
432 | sub1/foo (glob) | |
433 | sub1/sub1 (glob) |
|
433 | sub1/sub1 (glob) | |
434 | sub1/sub2/folder/bar (glob) |
|
434 | sub1/sub2/folder/bar (glob) | |
435 | sub1/sub2/x.txt (glob) |
|
435 | sub1/sub2/x.txt (glob) | |
436 |
|
436 | |||
437 | $ hg files -S "set:eol('dos') or eol('unix') or size('<= 0')" |
|
437 | $ hg files -S "set:eol('dos') or eol('unix') or size('<= 0')" | |
438 | .hgsub |
|
438 | .hgsub | |
439 | .hgsubstate |
|
439 | .hgsubstate | |
440 | foo/bar/abc (glob) |
|
440 | foo/bar/abc (glob) | |
441 | main |
|
441 | main | |
442 | sub1/.hgsub (glob) |
|
442 | sub1/.hgsub (glob) | |
443 | sub1/.hgsubstate (glob) |
|
443 | sub1/.hgsubstate (glob) | |
444 | sub1/foo (glob) |
|
444 | sub1/foo (glob) | |
445 | sub1/sub1 (glob) |
|
445 | sub1/sub1 (glob) | |
446 | sub1/sub2/folder/bar (glob) |
|
446 | sub1/sub2/folder/bar (glob) | |
447 | sub1/sub2/x.txt (glob) |
|
447 | sub1/sub2/x.txt (glob) | |
448 |
|
448 | |||
449 | $ hg files -r '.^' -S "set:eol('dos') or eol('unix')" |
|
449 | $ hg files -r '.^' -S "set:eol('dos') or eol('unix')" | |
450 | .hgsub |
|
450 | .hgsub | |
451 | .hgsubstate |
|
451 | .hgsubstate | |
452 | main |
|
452 | main | |
453 | sub1/.hgsub (glob) |
|
453 | sub1/.hgsub (glob) | |
454 | sub1/.hgsubstate (glob) |
|
454 | sub1/.hgsubstate (glob) | |
455 | sub1/sub1 (glob) |
|
455 | sub1/sub1 (glob) | |
456 | sub1/sub2/folder/test.txt (glob) |
|
456 | sub1/sub2/folder/test.txt (glob) | |
457 | sub1/sub2/sub2 (glob) |
|
457 | sub1/sub2/sub2 (glob) | |
458 | sub1/sub2/test.txt (glob) |
|
458 | sub1/sub2/test.txt (glob) | |
459 |
|
459 | |||
460 | $ hg files sub1 |
|
460 | $ hg files sub1 | |
461 | sub1/.hgsub (glob) |
|
461 | sub1/.hgsub (glob) | |
462 | sub1/.hgsubstate (glob) |
|
462 | sub1/.hgsubstate (glob) | |
463 | sub1/foo (glob) |
|
463 | sub1/foo (glob) | |
464 | sub1/sub1 (glob) |
|
464 | sub1/sub1 (glob) | |
465 | sub1/sub2/folder/bar (glob) |
|
465 | sub1/sub2/folder/bar (glob) | |
466 | sub1/sub2/x.txt (glob) |
|
466 | sub1/sub2/x.txt (glob) | |
467 |
|
467 | |||
468 | $ hg files sub1/sub2 |
|
468 | $ hg files sub1/sub2 | |
469 | sub1/sub2/folder/bar (glob) |
|
469 | sub1/sub2/folder/bar (glob) | |
470 | sub1/sub2/x.txt (glob) |
|
470 | sub1/sub2/x.txt (glob) | |
471 |
|
471 | |||
472 | $ hg files |
|
472 | $ hg files | |
473 | .hgsub |
|
473 | .hgsub | |
474 | .hgsubstate |
|
474 | .hgsubstate | |
475 | foo/bar/abc (glob) |
|
475 | foo/bar/abc (glob) | |
476 | main |
|
476 | main | |
477 |
|
477 | |||
478 | $ hg files -S -r '.^' sub1/sub2/folder |
|
478 | $ hg files -S -r '.^' sub1/sub2/folder | |
479 | sub1/sub2/folder/test.txt (glob) |
|
479 | sub1/sub2/folder/test.txt (glob) | |
480 |
|
480 | |||
481 | $ hg files -S -r '.^' sub1/sub2/missing |
|
481 | $ hg files -S -r '.^' sub1/sub2/missing | |
482 | sub1/sub2/missing: no such file in rev 78026e779ea6 (glob) |
|
482 | sub1/sub2/missing: no such file in rev 78026e779ea6 (glob) | |
483 | [1] |
|
483 | [1] | |
484 |
|
484 | |||
485 | $ hg files -r '.^' sub1/ |
|
485 | $ hg files -r '.^' sub1/ | |
486 | sub1/.hgsub (glob) |
|
486 | sub1/.hgsub (glob) | |
487 | sub1/.hgsubstate (glob) |
|
487 | sub1/.hgsubstate (glob) | |
488 | sub1/sub1 (glob) |
|
488 | sub1/sub1 (glob) | |
489 | sub1/sub2/folder/test.txt (glob) |
|
489 | sub1/sub2/folder/test.txt (glob) | |
490 | sub1/sub2/sub2 (glob) |
|
490 | sub1/sub2/sub2 (glob) | |
491 | sub1/sub2/test.txt (glob) |
|
491 | sub1/sub2/test.txt (glob) | |
492 |
|
492 | |||
493 | $ hg files -r '.^' sub1/sub2 |
|
493 | $ hg files -r '.^' sub1/sub2 | |
494 | sub1/sub2/folder/test.txt (glob) |
|
494 | sub1/sub2/folder/test.txt (glob) | |
495 | sub1/sub2/sub2 (glob) |
|
495 | sub1/sub2/sub2 (glob) | |
496 | sub1/sub2/test.txt (glob) |
|
496 | sub1/sub2/test.txt (glob) | |
497 |
|
497 | |||
498 | $ hg rollback -q |
|
498 | $ hg rollback -q | |
499 | $ hg up -Cq |
|
499 | $ hg up -Cq | |
500 |
|
500 | |||
501 | $ hg --config extensions.largefiles=! archive -S ../archive_all |
|
501 | $ hg --config extensions.largefiles=! archive -S ../archive_all | |
502 | \r (no-eol) (esc) |
|
502 | \r (no-eol) (esc) | |
503 | archiving [ ] 0/3\r (no-eol) (esc) |
|
503 | archiving [ ] 0/3\r (no-eol) (esc) | |
504 | archiving [=============> ] 1/3\r (no-eol) (esc) |
|
504 | archiving [=============> ] 1/3\r (no-eol) (esc) | |
505 | archiving [===========================> ] 2/3\r (no-eol) (esc) |
|
505 | archiving [===========================> ] 2/3\r (no-eol) (esc) | |
506 | archiving [==========================================>] 3/3\r (no-eol) (esc) |
|
506 | archiving [==========================================>] 3/3\r (no-eol) (esc) | |
507 | \r (no-eol) (esc) |
|
507 | \r (no-eol) (esc) | |
508 | \r (no-eol) (esc) |
|
508 | \r (no-eol) (esc) | |
509 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) |
|
509 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) | |
510 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) |
|
510 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) | |
511 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) |
|
511 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) | |
512 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) |
|
512 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) | |
513 | \r (no-eol) (esc) |
|
513 | \r (no-eol) (esc) | |
514 | \r (no-eol) (esc) |
|
514 | \r (no-eol) (esc) | |
515 | archiving (sub1/sub2) [ ] 0/3\r (no-eol) (esc) |
|
515 | archiving (sub1/sub2) [ ] 0/3\r (no-eol) (glob) (esc) | |
516 | archiving (sub1/sub2) [=========> ] 1/3\r (no-eol) (esc) |
|
516 | archiving (sub1/sub2) [=========> ] 1/3\r (no-eol) (glob) (esc) | |
517 | archiving (sub1/sub2) [===================> ] 2/3\r (no-eol) (esc) |
|
517 | archiving (sub1/sub2) [===================> ] 2/3\r (no-eol) (glob) (esc) | |
518 | archiving (sub1/sub2) [==============================>] 3/3\r (no-eol) (esc) |
|
518 | archiving (sub1/sub2) [==============================>] 3/3\r (no-eol) (glob) (esc) | |
519 | \r (no-eol) (esc) |
|
519 | \r (no-eol) (esc) | |
520 | $ find ../archive_all | sort |
|
520 | $ find ../archive_all | sort | |
521 | ../archive_all |
|
521 | ../archive_all | |
522 | ../archive_all/.hg_archival.txt |
|
522 | ../archive_all/.hg_archival.txt | |
523 | ../archive_all/.hgsub |
|
523 | ../archive_all/.hgsub | |
524 | ../archive_all/.hgsubstate |
|
524 | ../archive_all/.hgsubstate | |
525 | ../archive_all/main |
|
525 | ../archive_all/main | |
526 | ../archive_all/sub1 |
|
526 | ../archive_all/sub1 | |
527 | ../archive_all/sub1/.hgsub |
|
527 | ../archive_all/sub1/.hgsub | |
528 | ../archive_all/sub1/.hgsubstate |
|
528 | ../archive_all/sub1/.hgsubstate | |
529 | ../archive_all/sub1/sub1 |
|
529 | ../archive_all/sub1/sub1 | |
530 | ../archive_all/sub1/sub2 |
|
530 | ../archive_all/sub1/sub2 | |
531 | ../archive_all/sub1/sub2/folder |
|
531 | ../archive_all/sub1/sub2/folder | |
532 | ../archive_all/sub1/sub2/folder/test.txt |
|
532 | ../archive_all/sub1/sub2/folder/test.txt | |
533 | ../archive_all/sub1/sub2/sub2 |
|
533 | ../archive_all/sub1/sub2/sub2 | |
534 | ../archive_all/sub1/sub2/test.txt |
|
534 | ../archive_all/sub1/sub2/test.txt | |
535 |
|
535 | |||
536 | Check that archive -X works in deep subrepos |
|
536 | Check that archive -X works in deep subrepos | |
537 |
|
537 | |||
538 | $ hg --config extensions.largefiles=! archive -S -X '**test*' ../archive_exclude |
|
538 | $ hg --config extensions.largefiles=! archive -S -X '**test*' ../archive_exclude | |
539 | \r (no-eol) (esc) |
|
539 | \r (no-eol) (esc) | |
540 | archiving [ ] 0/3\r (no-eol) (esc) |
|
540 | archiving [ ] 0/3\r (no-eol) (esc) | |
541 | archiving [=============> ] 1/3\r (no-eol) (esc) |
|
541 | archiving [=============> ] 1/3\r (no-eol) (esc) | |
542 | archiving [===========================> ] 2/3\r (no-eol) (esc) |
|
542 | archiving [===========================> ] 2/3\r (no-eol) (esc) | |
543 | archiving [==========================================>] 3/3\r (no-eol) (esc) |
|
543 | archiving [==========================================>] 3/3\r (no-eol) (esc) | |
544 | \r (no-eol) (esc) |
|
544 | \r (no-eol) (esc) | |
545 | \r (no-eol) (esc) |
|
545 | \r (no-eol) (esc) | |
546 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) |
|
546 | archiving (sub1) [ ] 0/3\r (no-eol) (esc) | |
547 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) |
|
547 | archiving (sub1) [===========> ] 1/3\r (no-eol) (esc) | |
548 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) |
|
548 | archiving (sub1) [=======================> ] 2/3\r (no-eol) (esc) | |
549 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) |
|
549 | archiving (sub1) [===================================>] 3/3\r (no-eol) (esc) | |
550 | \r (no-eol) (esc) |
|
550 | \r (no-eol) (esc) | |
551 | \r (no-eol) (esc) |
|
551 | \r (no-eol) (esc) | |
552 | archiving (sub1/sub2) [ ] 0/1\r (no-eol) (esc) |
|
552 | archiving (sub1/sub2) [ ] 0/1\r (no-eol) (glob) (esc) | |
553 | archiving (sub1/sub2) [==============================>] 1/1\r (no-eol) (esc) |
|
553 | archiving (sub1/sub2) [==============================>] 1/1\r (no-eol) (glob) (esc) | |
554 | \r (no-eol) (esc) |
|
554 | \r (no-eol) (esc) | |
555 | $ find ../archive_exclude | sort |
|
555 | $ find ../archive_exclude | sort | |
556 | ../archive_exclude |
|
556 | ../archive_exclude | |
557 | ../archive_exclude/.hg_archival.txt |
|
557 | ../archive_exclude/.hg_archival.txt | |
558 | ../archive_exclude/.hgsub |
|
558 | ../archive_exclude/.hgsub | |
559 | ../archive_exclude/.hgsubstate |
|
559 | ../archive_exclude/.hgsubstate | |
560 | ../archive_exclude/main |
|
560 | ../archive_exclude/main | |
561 | ../archive_exclude/sub1 |
|
561 | ../archive_exclude/sub1 | |
562 | ../archive_exclude/sub1/.hgsub |
|
562 | ../archive_exclude/sub1/.hgsub | |
563 | ../archive_exclude/sub1/.hgsubstate |
|
563 | ../archive_exclude/sub1/.hgsubstate | |
564 | ../archive_exclude/sub1/sub1 |
|
564 | ../archive_exclude/sub1/sub1 | |
565 | ../archive_exclude/sub1/sub2 |
|
565 | ../archive_exclude/sub1/sub2 | |
566 | ../archive_exclude/sub1/sub2/sub2 |
|
566 | ../archive_exclude/sub1/sub2/sub2 | |
567 |
|
567 | |||
568 | $ hg --config extensions.largefiles=! archive -S -I '**test*' ../archive_include |
|
568 | $ hg --config extensions.largefiles=! archive -S -I '**test*' ../archive_include | |
569 | \r (no-eol) (esc) |
|
569 | \r (no-eol) (esc) | |
570 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) |
|
570 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) | |
571 | \r (no-eol) (esc) |
|
571 | \r (no-eol) (esc) | |
572 | \r (no-eol) (esc) |
|
572 | \r (no-eol) (esc) | |
573 | archiving (sub1/sub2) [ ] 0/2\r (no-eol) (esc) |
|
573 | archiving (sub1/sub2) [ ] 0/2\r (no-eol) (glob) (esc) | |
574 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (esc) |
|
574 | archiving (sub1/sub2) [==============> ] 1/2\r (no-eol) (glob) (esc) | |
575 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (esc) |
|
575 | archiving (sub1/sub2) [==============================>] 2/2\r (no-eol) (glob) (esc) | |
576 | \r (no-eol) (esc) |
|
576 | \r (no-eol) (esc) | |
577 | $ find ../archive_include | sort |
|
577 | $ find ../archive_include | sort | |
578 | ../archive_include |
|
578 | ../archive_include | |
579 | ../archive_include/sub1 |
|
579 | ../archive_include/sub1 | |
580 | ../archive_include/sub1/sub2 |
|
580 | ../archive_include/sub1/sub2 | |
581 | ../archive_include/sub1/sub2/folder |
|
581 | ../archive_include/sub1/sub2/folder | |
582 | ../archive_include/sub1/sub2/folder/test.txt |
|
582 | ../archive_include/sub1/sub2/folder/test.txt | |
583 | ../archive_include/sub1/sub2/test.txt |
|
583 | ../archive_include/sub1/sub2/test.txt | |
584 |
|
584 | |||
585 | Check that deep archive works with largefiles (which overrides hgsubrepo impl) |
|
585 | Check that deep archive works with largefiles (which overrides hgsubrepo impl) | |
586 | This also tests the repo.ui regression in 43fb170a23bd, and that lf subrepo |
|
586 | This also tests the repo.ui regression in 43fb170a23bd, and that lf subrepo | |
587 | subrepos are archived properly. |
|
587 | subrepos are archived properly. | |
588 | Note that add --large through a subrepo currently adds the file as a normal file |
|
588 | Note that add --large through a subrepo currently adds the file as a normal file | |
589 |
|
589 | |||
590 | $ echo "large" > sub1/sub2/large.bin |
|
590 | $ echo "large" > sub1/sub2/large.bin | |
591 | $ hg --config extensions.largefiles= add --large -R sub1/sub2 sub1/sub2/large.bin |
|
591 | $ hg --config extensions.largefiles= add --large -R sub1/sub2 sub1/sub2/large.bin | |
592 | $ echo "large" > large.bin |
|
592 | $ echo "large" > large.bin | |
593 | $ hg --config extensions.largefiles= add --large large.bin |
|
593 | $ hg --config extensions.largefiles= add --large large.bin | |
594 | $ hg --config extensions.largefiles= ci -S -m "add large files" |
|
594 | $ hg --config extensions.largefiles= ci -S -m "add large files" | |
595 | committing subrepository sub1 |
|
595 | committing subrepository sub1 | |
596 | committing subrepository sub1/sub2 (glob) |
|
596 | committing subrepository sub1/sub2 (glob) | |
597 |
|
597 | |||
598 | $ hg --config extensions.largefiles= archive -S ../archive_lf |
|
598 | $ hg --config extensions.largefiles= archive -S ../archive_lf | |
599 | $ find ../archive_lf | sort |
|
599 | $ find ../archive_lf | sort | |
600 | ../archive_lf |
|
600 | ../archive_lf | |
601 | ../archive_lf/.hg_archival.txt |
|
601 | ../archive_lf/.hg_archival.txt | |
602 | ../archive_lf/.hgsub |
|
602 | ../archive_lf/.hgsub | |
603 | ../archive_lf/.hgsubstate |
|
603 | ../archive_lf/.hgsubstate | |
604 | ../archive_lf/large.bin |
|
604 | ../archive_lf/large.bin | |
605 | ../archive_lf/main |
|
605 | ../archive_lf/main | |
606 | ../archive_lf/sub1 |
|
606 | ../archive_lf/sub1 | |
607 | ../archive_lf/sub1/.hgsub |
|
607 | ../archive_lf/sub1/.hgsub | |
608 | ../archive_lf/sub1/.hgsubstate |
|
608 | ../archive_lf/sub1/.hgsubstate | |
609 | ../archive_lf/sub1/sub1 |
|
609 | ../archive_lf/sub1/sub1 | |
610 | ../archive_lf/sub1/sub2 |
|
610 | ../archive_lf/sub1/sub2 | |
611 | ../archive_lf/sub1/sub2/folder |
|
611 | ../archive_lf/sub1/sub2/folder | |
612 | ../archive_lf/sub1/sub2/folder/test.txt |
|
612 | ../archive_lf/sub1/sub2/folder/test.txt | |
613 | ../archive_lf/sub1/sub2/large.bin |
|
613 | ../archive_lf/sub1/sub2/large.bin | |
614 | ../archive_lf/sub1/sub2/sub2 |
|
614 | ../archive_lf/sub1/sub2/sub2 | |
615 | ../archive_lf/sub1/sub2/test.txt |
|
615 | ../archive_lf/sub1/sub2/test.txt | |
616 | $ rm -rf ../archive_lf |
|
616 | $ rm -rf ../archive_lf | |
617 |
|
617 | |||
618 | Exclude large files from main and sub-sub repo |
|
618 | Exclude large files from main and sub-sub repo | |
619 |
|
619 | |||
620 | $ hg --config extensions.largefiles= archive -S -X '**.bin' ../archive_lf |
|
620 | $ hg --config extensions.largefiles= archive -S -X '**.bin' ../archive_lf | |
621 | $ find ../archive_lf | sort |
|
621 | $ find ../archive_lf | sort | |
622 | ../archive_lf |
|
622 | ../archive_lf | |
623 | ../archive_lf/.hg_archival.txt |
|
623 | ../archive_lf/.hg_archival.txt | |
624 | ../archive_lf/.hgsub |
|
624 | ../archive_lf/.hgsub | |
625 | ../archive_lf/.hgsubstate |
|
625 | ../archive_lf/.hgsubstate | |
626 | ../archive_lf/main |
|
626 | ../archive_lf/main | |
627 | ../archive_lf/sub1 |
|
627 | ../archive_lf/sub1 | |
628 | ../archive_lf/sub1/.hgsub |
|
628 | ../archive_lf/sub1/.hgsub | |
629 | ../archive_lf/sub1/.hgsubstate |
|
629 | ../archive_lf/sub1/.hgsubstate | |
630 | ../archive_lf/sub1/sub1 |
|
630 | ../archive_lf/sub1/sub1 | |
631 | ../archive_lf/sub1/sub2 |
|
631 | ../archive_lf/sub1/sub2 | |
632 | ../archive_lf/sub1/sub2/folder |
|
632 | ../archive_lf/sub1/sub2/folder | |
633 | ../archive_lf/sub1/sub2/folder/test.txt |
|
633 | ../archive_lf/sub1/sub2/folder/test.txt | |
634 | ../archive_lf/sub1/sub2/sub2 |
|
634 | ../archive_lf/sub1/sub2/sub2 | |
635 | ../archive_lf/sub1/sub2/test.txt |
|
635 | ../archive_lf/sub1/sub2/test.txt | |
636 | $ rm -rf ../archive_lf |
|
636 | $ rm -rf ../archive_lf | |
637 |
|
637 | |||
638 | Exclude normal files from main and sub-sub repo |
|
638 | Exclude normal files from main and sub-sub repo | |
639 |
|
639 | |||
640 | $ hg --config extensions.largefiles= archive -S -X '**.txt' -p '.' ../archive_lf.tgz |
|
640 | $ hg --config extensions.largefiles= archive -S -X '**.txt' -p '.' ../archive_lf.tgz | |
641 | $ tar -tzf ../archive_lf.tgz | sort |
|
641 | $ tar -tzf ../archive_lf.tgz | sort | |
642 | .hgsub |
|
642 | .hgsub | |
643 | .hgsubstate |
|
643 | .hgsubstate | |
644 | large.bin |
|
644 | large.bin | |
645 | main |
|
645 | main | |
646 | sub1/.hgsub |
|
646 | sub1/.hgsub | |
647 | sub1/.hgsubstate |
|
647 | sub1/.hgsubstate | |
648 | sub1/sub1 |
|
648 | sub1/sub1 | |
649 | sub1/sub2/large.bin |
|
649 | sub1/sub2/large.bin | |
650 | sub1/sub2/sub2 |
|
650 | sub1/sub2/sub2 | |
651 |
|
651 | |||
652 | Include normal files from within a largefiles subrepo |
|
652 | Include normal files from within a largefiles subrepo | |
653 |
|
653 | |||
654 | $ hg --config extensions.largefiles= archive -S -I '**.txt' ../archive_lf |
|
654 | $ hg --config extensions.largefiles= archive -S -I '**.txt' ../archive_lf | |
655 | $ find ../archive_lf | sort |
|
655 | $ find ../archive_lf | sort | |
656 | ../archive_lf |
|
656 | ../archive_lf | |
657 | ../archive_lf/.hg_archival.txt |
|
657 | ../archive_lf/.hg_archival.txt | |
658 | ../archive_lf/sub1 |
|
658 | ../archive_lf/sub1 | |
659 | ../archive_lf/sub1/sub2 |
|
659 | ../archive_lf/sub1/sub2 | |
660 | ../archive_lf/sub1/sub2/folder |
|
660 | ../archive_lf/sub1/sub2/folder | |
661 | ../archive_lf/sub1/sub2/folder/test.txt |
|
661 | ../archive_lf/sub1/sub2/folder/test.txt | |
662 | ../archive_lf/sub1/sub2/test.txt |
|
662 | ../archive_lf/sub1/sub2/test.txt | |
663 | $ rm -rf ../archive_lf |
|
663 | $ rm -rf ../archive_lf | |
664 |
|
664 | |||
665 | Include large files from within a largefiles subrepo |
|
665 | Include large files from within a largefiles subrepo | |
666 |
|
666 | |||
667 | $ hg --config extensions.largefiles= archive -S -I '**.bin' ../archive_lf |
|
667 | $ hg --config extensions.largefiles= archive -S -I '**.bin' ../archive_lf | |
668 | $ find ../archive_lf | sort |
|
668 | $ find ../archive_lf | sort | |
669 | ../archive_lf |
|
669 | ../archive_lf | |
670 | ../archive_lf/large.bin |
|
670 | ../archive_lf/large.bin | |
671 | ../archive_lf/sub1 |
|
671 | ../archive_lf/sub1 | |
672 | ../archive_lf/sub1/sub2 |
|
672 | ../archive_lf/sub1/sub2 | |
673 | ../archive_lf/sub1/sub2/large.bin |
|
673 | ../archive_lf/sub1/sub2/large.bin | |
674 | $ rm -rf ../archive_lf |
|
674 | $ rm -rf ../archive_lf | |
675 |
|
675 | |||
676 | Find an exact largefile match in a largefiles subrepo |
|
676 | Find an exact largefile match in a largefiles subrepo | |
677 |
|
677 | |||
678 | $ hg --config extensions.largefiles= archive -S -I 'sub1/sub2/large.bin' ../archive_lf |
|
678 | $ hg --config extensions.largefiles= archive -S -I 'sub1/sub2/large.bin' ../archive_lf | |
679 | $ find ../archive_lf | sort |
|
679 | $ find ../archive_lf | sort | |
680 | ../archive_lf |
|
680 | ../archive_lf | |
681 | ../archive_lf/sub1 |
|
681 | ../archive_lf/sub1 | |
682 | ../archive_lf/sub1/sub2 |
|
682 | ../archive_lf/sub1/sub2 | |
683 | ../archive_lf/sub1/sub2/large.bin |
|
683 | ../archive_lf/sub1/sub2/large.bin | |
684 | $ rm -rf ../archive_lf |
|
684 | $ rm -rf ../archive_lf | |
685 |
|
685 | |||
686 | The local repo enables largefiles if a largefiles repo is cloned |
|
686 | The local repo enables largefiles if a largefiles repo is cloned | |
687 | $ hg showconfig extensions |
|
687 | $ hg showconfig extensions | |
688 | abort: repository requires features unknown to this Mercurial: largefiles! |
|
688 | abort: repository requires features unknown to this Mercurial: largefiles! | |
689 | (see https://mercurial-scm.org/wiki/MissingRequirement for more information) |
|
689 | (see https://mercurial-scm.org/wiki/MissingRequirement for more information) | |
690 | [255] |
|
690 | [255] | |
691 | $ hg --config extensions.largefiles= clone -qU . ../lfclone |
|
691 | $ hg --config extensions.largefiles= clone -qU . ../lfclone | |
692 | $ cat ../lfclone/.hg/hgrc |
|
692 | $ cat ../lfclone/.hg/hgrc | |
693 | # example repository config (see "hg help config" for more info) |
|
693 | # example repository config (see "hg help config" for more info) | |
694 | [paths] |
|
694 | [paths] | |
695 | default = $TESTTMP/cloned (glob) |
|
695 | default = $TESTTMP/cloned (glob) | |
696 |
|
696 | |||
697 | # path aliases to other clones of this repo in URLs or filesystem paths |
|
697 | # path aliases to other clones of this repo in URLs or filesystem paths | |
698 | # (see "hg help config.paths" for more info) |
|
698 | # (see "hg help config.paths" for more info) | |
699 | # |
|
699 | # | |
700 | # default-push = ssh://jdoe@example.net/hg/jdoes-fork |
|
700 | # default-push = ssh://jdoe@example.net/hg/jdoes-fork | |
701 | # my-fork = ssh://jdoe@example.net/hg/jdoes-fork |
|
701 | # my-fork = ssh://jdoe@example.net/hg/jdoes-fork | |
702 | # my-clone = /home/jdoe/jdoes-clone |
|
702 | # my-clone = /home/jdoe/jdoes-clone | |
703 |
|
703 | |||
704 | [ui] |
|
704 | [ui] | |
705 | # name and email (local to this repository, optional), e.g. |
|
705 | # name and email (local to this repository, optional), e.g. | |
706 | # username = Jane Doe <jdoe@example.com> |
|
706 | # username = Jane Doe <jdoe@example.com> | |
707 |
|
707 | |||
708 | [extensions] |
|
708 | [extensions] | |
709 | largefiles= |
|
709 | largefiles= | |
710 |
|
710 | |||
711 | Find an exact match to a standin (should archive nothing) |
|
711 | Find an exact match to a standin (should archive nothing) | |
712 | $ hg --config extensions.largefiles= archive -S -I 'sub/sub2/.hglf/large.bin' ../archive_lf |
|
712 | $ hg --config extensions.largefiles= archive -S -I 'sub/sub2/.hglf/large.bin' ../archive_lf | |
713 | $ find ../archive_lf 2> /dev/null | sort |
|
713 | $ find ../archive_lf 2> /dev/null | sort | |
714 |
|
714 | |||
715 | $ cat >> $HGRCPATH <<EOF |
|
715 | $ cat >> $HGRCPATH <<EOF | |
716 | > [extensions] |
|
716 | > [extensions] | |
717 | > largefiles= |
|
717 | > largefiles= | |
718 | > [largefiles] |
|
718 | > [largefiles] | |
719 | > patterns=glob:**.dat |
|
719 | > patterns=glob:**.dat | |
720 | > EOF |
|
720 | > EOF | |
721 |
|
721 | |||
722 | Test forget through a deep subrepo with the largefiles extension, both a |
|
722 | Test forget through a deep subrepo with the largefiles extension, both a | |
723 | largefile and a normal file. Then a largefile that hasn't been committed yet. |
|
723 | largefile and a normal file. Then a largefile that hasn't been committed yet. | |
724 | $ touch sub1/sub2/untracked.txt |
|
724 | $ touch sub1/sub2/untracked.txt | |
725 | $ touch sub1/sub2/large.dat |
|
725 | $ touch sub1/sub2/large.dat | |
726 | $ hg forget sub1/sub2/large.bin sub1/sub2/test.txt sub1/sub2/untracked.txt |
|
726 | $ hg forget sub1/sub2/large.bin sub1/sub2/test.txt sub1/sub2/untracked.txt | |
727 | not removing sub1/sub2/untracked.txt: file is already untracked (glob) |
|
727 | not removing sub1/sub2/untracked.txt: file is already untracked (glob) | |
728 | [1] |
|
728 | [1] | |
729 | $ hg add --large --dry-run -v sub1/sub2/untracked.txt |
|
729 | $ hg add --large --dry-run -v sub1/sub2/untracked.txt | |
730 | adding sub1/sub2/untracked.txt as a largefile (glob) |
|
730 | adding sub1/sub2/untracked.txt as a largefile (glob) | |
731 | $ hg add --large -v sub1/sub2/untracked.txt |
|
731 | $ hg add --large -v sub1/sub2/untracked.txt | |
732 | adding sub1/sub2/untracked.txt as a largefile (glob) |
|
732 | adding sub1/sub2/untracked.txt as a largefile (glob) | |
733 | $ hg add --normal -v sub1/sub2/large.dat |
|
733 | $ hg add --normal -v sub1/sub2/large.dat | |
734 | adding sub1/sub2/large.dat (glob) |
|
734 | adding sub1/sub2/large.dat (glob) | |
735 | $ hg forget -v sub1/sub2/untracked.txt |
|
735 | $ hg forget -v sub1/sub2/untracked.txt | |
736 | removing sub1/sub2/untracked.txt (glob) |
|
736 | removing sub1/sub2/untracked.txt (glob) | |
737 | $ hg status -S |
|
737 | $ hg status -S | |
738 | A sub1/sub2/large.dat |
|
738 | A sub1/sub2/large.dat | |
739 | R sub1/sub2/large.bin |
|
739 | R sub1/sub2/large.bin | |
740 | R sub1/sub2/test.txt |
|
740 | R sub1/sub2/test.txt | |
741 | ? foo/bar/abc |
|
741 | ? foo/bar/abc | |
742 | ? sub1/sub2/untracked.txt |
|
742 | ? sub1/sub2/untracked.txt | |
743 | ? sub1/sub2/x.txt |
|
743 | ? sub1/sub2/x.txt | |
744 | $ hg add sub1/sub2 |
|
744 | $ hg add sub1/sub2 | |
745 |
|
745 | |||
746 | $ hg archive -S -r 'wdir()' ../wdir2 |
|
746 | $ hg archive -S -r 'wdir()' ../wdir2 | |
747 | $ diff -r . ../wdir2 | egrep -v '\.hg$|^Common subdirectories:' |
|
747 | $ diff -r . ../wdir2 | egrep -v '\.hg$|^Common subdirectories:' | |
748 | Only in ../wdir2: .hg_archival.txt |
|
748 | Only in ../wdir2: .hg_archival.txt | |
749 | Only in .: .hglf |
|
749 | Only in .: .hglf | |
750 | Only in .: foo |
|
750 | Only in .: foo | |
751 | Only in ./sub1/sub2: large.bin |
|
751 | Only in ./sub1/sub2: large.bin | |
752 | Only in ./sub1/sub2: test.txt |
|
752 | Only in ./sub1/sub2: test.txt | |
753 | Only in ./sub1/sub2: untracked.txt |
|
753 | Only in ./sub1/sub2: untracked.txt | |
754 | Only in ./sub1/sub2: x.txt |
|
754 | Only in ./sub1/sub2: x.txt | |
755 | $ find ../wdir2 -type f | sort |
|
755 | $ find ../wdir2 -type f | sort | |
756 | ../wdir2/.hg_archival.txt |
|
756 | ../wdir2/.hg_archival.txt | |
757 | ../wdir2/.hgsub |
|
757 | ../wdir2/.hgsub | |
758 | ../wdir2/.hgsubstate |
|
758 | ../wdir2/.hgsubstate | |
759 | ../wdir2/large.bin |
|
759 | ../wdir2/large.bin | |
760 | ../wdir2/main |
|
760 | ../wdir2/main | |
761 | ../wdir2/sub1/.hgsub |
|
761 | ../wdir2/sub1/.hgsub | |
762 | ../wdir2/sub1/.hgsubstate |
|
762 | ../wdir2/sub1/.hgsubstate | |
763 | ../wdir2/sub1/sub1 |
|
763 | ../wdir2/sub1/sub1 | |
764 | ../wdir2/sub1/sub2/folder/test.txt |
|
764 | ../wdir2/sub1/sub2/folder/test.txt | |
765 | ../wdir2/sub1/sub2/large.dat |
|
765 | ../wdir2/sub1/sub2/large.dat | |
766 | ../wdir2/sub1/sub2/sub2 |
|
766 | ../wdir2/sub1/sub2/sub2 | |
767 | $ hg status -S -mac -n | sort |
|
767 | $ hg status -S -mac -n | sort | |
768 | .hgsub |
|
768 | .hgsub | |
769 | .hgsubstate |
|
769 | .hgsubstate | |
770 | large.bin |
|
770 | large.bin | |
771 | main |
|
771 | main | |
772 | sub1/.hgsub |
|
772 | sub1/.hgsub | |
773 | sub1/.hgsubstate |
|
773 | sub1/.hgsubstate | |
774 | sub1/sub1 |
|
774 | sub1/sub1 | |
775 | sub1/sub2/folder/test.txt |
|
775 | sub1/sub2/folder/test.txt | |
776 | sub1/sub2/large.dat |
|
776 | sub1/sub2/large.dat | |
777 | sub1/sub2/sub2 |
|
777 | sub1/sub2/sub2 | |
778 |
|
778 | |||
779 | $ hg ci -Sqm 'forget testing' |
|
779 | $ hg ci -Sqm 'forget testing' | |
780 |
|
780 | |||
781 | Test 'wdir()' modified file archiving with largefiles |
|
781 | Test 'wdir()' modified file archiving with largefiles | |
782 | $ echo 'mod' > main |
|
782 | $ echo 'mod' > main | |
783 | $ echo 'mod' > large.bin |
|
783 | $ echo 'mod' > large.bin | |
784 | $ echo 'mod' > sub1/sub2/large.dat |
|
784 | $ echo 'mod' > sub1/sub2/large.dat | |
785 | $ hg archive -S -r 'wdir()' ../wdir3 |
|
785 | $ hg archive -S -r 'wdir()' ../wdir3 | |
786 | $ diff -r . ../wdir3 | egrep -v '\.hg$|^Common subdirectories' |
|
786 | $ diff -r . ../wdir3 | egrep -v '\.hg$|^Common subdirectories' | |
787 | Only in ../wdir3: .hg_archival.txt |
|
787 | Only in ../wdir3: .hg_archival.txt | |
788 | Only in .: .hglf |
|
788 | Only in .: .hglf | |
789 | Only in .: foo |
|
789 | Only in .: foo | |
790 | Only in ./sub1/sub2: large.bin |
|
790 | Only in ./sub1/sub2: large.bin | |
791 | Only in ./sub1/sub2: test.txt |
|
791 | Only in ./sub1/sub2: test.txt | |
792 | Only in ./sub1/sub2: untracked.txt |
|
792 | Only in ./sub1/sub2: untracked.txt | |
793 | Only in ./sub1/sub2: x.txt |
|
793 | Only in ./sub1/sub2: x.txt | |
794 | $ find ../wdir3 -type f | sort |
|
794 | $ find ../wdir3 -type f | sort | |
795 | ../wdir3/.hg_archival.txt |
|
795 | ../wdir3/.hg_archival.txt | |
796 | ../wdir3/.hgsub |
|
796 | ../wdir3/.hgsub | |
797 | ../wdir3/.hgsubstate |
|
797 | ../wdir3/.hgsubstate | |
798 | ../wdir3/large.bin |
|
798 | ../wdir3/large.bin | |
799 | ../wdir3/main |
|
799 | ../wdir3/main | |
800 | ../wdir3/sub1/.hgsub |
|
800 | ../wdir3/sub1/.hgsub | |
801 | ../wdir3/sub1/.hgsubstate |
|
801 | ../wdir3/sub1/.hgsubstate | |
802 | ../wdir3/sub1/sub1 |
|
802 | ../wdir3/sub1/sub1 | |
803 | ../wdir3/sub1/sub2/folder/test.txt |
|
803 | ../wdir3/sub1/sub2/folder/test.txt | |
804 | ../wdir3/sub1/sub2/large.dat |
|
804 | ../wdir3/sub1/sub2/large.dat | |
805 | ../wdir3/sub1/sub2/sub2 |
|
805 | ../wdir3/sub1/sub2/sub2 | |
806 | $ hg up -Cq |
|
806 | $ hg up -Cq | |
807 |
|
807 | |||
808 | Test issue4330: commit a directory where only normal files have changed |
|
808 | Test issue4330: commit a directory where only normal files have changed | |
809 | $ touch foo/bar/large.dat |
|
809 | $ touch foo/bar/large.dat | |
810 | $ hg add --large foo/bar/large.dat |
|
810 | $ hg add --large foo/bar/large.dat | |
811 | $ hg ci -m 'add foo/bar/large.dat' |
|
811 | $ hg ci -m 'add foo/bar/large.dat' | |
812 | $ touch a.txt |
|
812 | $ touch a.txt | |
813 | $ touch a.dat |
|
813 | $ touch a.dat | |
814 | $ hg add -v foo/bar/abc a.txt a.dat |
|
814 | $ hg add -v foo/bar/abc a.txt a.dat | |
815 | adding a.dat as a largefile |
|
815 | adding a.dat as a largefile | |
816 | adding a.txt |
|
816 | adding a.txt | |
817 | adding foo/bar/abc (glob) |
|
817 | adding foo/bar/abc (glob) | |
818 | $ hg ci -m 'dir commit with only normal file deltas' foo/bar |
|
818 | $ hg ci -m 'dir commit with only normal file deltas' foo/bar | |
819 | $ hg status |
|
819 | $ hg status | |
820 | A a.dat |
|
820 | A a.dat | |
821 | A a.txt |
|
821 | A a.txt | |
822 |
|
822 | |||
823 | Test a directory commit with a changed largefile and a changed normal file |
|
823 | Test a directory commit with a changed largefile and a changed normal file | |
824 | $ echo changed > foo/bar/large.dat |
|
824 | $ echo changed > foo/bar/large.dat | |
825 | $ echo changed > foo/bar/abc |
|
825 | $ echo changed > foo/bar/abc | |
826 | $ hg ci -m 'dir commit with normal and lf file deltas' foo |
|
826 | $ hg ci -m 'dir commit with normal and lf file deltas' foo | |
827 | $ hg status |
|
827 | $ hg status | |
828 | A a.dat |
|
828 | A a.dat | |
829 | A a.txt |
|
829 | A a.txt | |
830 |
|
830 | |||
831 | $ hg ci -m "add a.*" |
|
831 | $ hg ci -m "add a.*" | |
832 | $ hg mv a.dat b.dat |
|
832 | $ hg mv a.dat b.dat | |
833 | $ hg mv foo/bar/abc foo/bar/def |
|
833 | $ hg mv foo/bar/abc foo/bar/def | |
834 | $ hg status -C |
|
834 | $ hg status -C | |
835 | A b.dat |
|
835 | A b.dat | |
836 | a.dat |
|
836 | a.dat | |
837 | A foo/bar/def |
|
837 | A foo/bar/def | |
838 | foo/bar/abc |
|
838 | foo/bar/abc | |
839 | R a.dat |
|
839 | R a.dat | |
840 | R foo/bar/abc |
|
840 | R foo/bar/abc | |
841 |
|
841 | |||
842 | $ hg ci -m "move large and normal" |
|
842 | $ hg ci -m "move large and normal" | |
843 | $ hg status -C --rev '.^' --rev . |
|
843 | $ hg status -C --rev '.^' --rev . | |
844 | A b.dat |
|
844 | A b.dat | |
845 | a.dat |
|
845 | a.dat | |
846 | A foo/bar/def |
|
846 | A foo/bar/def | |
847 | foo/bar/abc |
|
847 | foo/bar/abc | |
848 | R a.dat |
|
848 | R a.dat | |
849 | R foo/bar/abc |
|
849 | R foo/bar/abc | |
850 |
|
850 | |||
851 |
|
851 | |||
852 | $ echo foo > main |
|
852 | $ echo foo > main | |
853 | $ hg ci -m "mod parent only" |
|
853 | $ hg ci -m "mod parent only" | |
854 | $ hg init sub3 |
|
854 | $ hg init sub3 | |
855 | $ echo "sub3 = sub3" >> .hgsub |
|
855 | $ echo "sub3 = sub3" >> .hgsub | |
856 | $ echo xyz > sub3/a.txt |
|
856 | $ echo xyz > sub3/a.txt | |
857 | $ hg add sub3/a.txt |
|
857 | $ hg add sub3/a.txt | |
858 | $ hg ci -Sm "add sub3" |
|
858 | $ hg ci -Sm "add sub3" | |
859 | committing subrepository sub3 |
|
859 | committing subrepository sub3 | |
860 | $ cat .hgsub | grep -v sub3 > .hgsub1 |
|
860 | $ cat .hgsub | grep -v sub3 > .hgsub1 | |
861 | $ mv .hgsub1 .hgsub |
|
861 | $ mv .hgsub1 .hgsub | |
862 | $ hg ci -m "remove sub3" |
|
862 | $ hg ci -m "remove sub3" | |
863 |
|
863 | |||
864 | $ hg log -r "subrepo()" --style compact |
|
864 | $ hg log -r "subrepo()" --style compact | |
865 | 0 7f491f53a367 1970-01-01 00:00 +0000 test |
|
865 | 0 7f491f53a367 1970-01-01 00:00 +0000 test | |
866 | main import |
|
866 | main import | |
867 |
|
867 | |||
868 | 1 ffe6649062fe 1970-01-01 00:00 +0000 test |
|
868 | 1 ffe6649062fe 1970-01-01 00:00 +0000 test | |
869 | deep nested modif should trigger a commit |
|
869 | deep nested modif should trigger a commit | |
870 |
|
870 | |||
871 | 2 9bb10eebee29 1970-01-01 00:00 +0000 test |
|
871 | 2 9bb10eebee29 1970-01-01 00:00 +0000 test | |
872 | add test.txt |
|
872 | add test.txt | |
873 |
|
873 | |||
874 | 3 7c64f035294f 1970-01-01 00:00 +0000 test |
|
874 | 3 7c64f035294f 1970-01-01 00:00 +0000 test | |
875 | add large files |
|
875 | add large files | |
876 |
|
876 | |||
877 | 4 f734a59e2e35 1970-01-01 00:00 +0000 test |
|
877 | 4 f734a59e2e35 1970-01-01 00:00 +0000 test | |
878 | forget testing |
|
878 | forget testing | |
879 |
|
879 | |||
880 | 11 9685a22af5db 1970-01-01 00:00 +0000 test |
|
880 | 11 9685a22af5db 1970-01-01 00:00 +0000 test | |
881 | add sub3 |
|
881 | add sub3 | |
882 |
|
882 | |||
883 | 12[tip] 2e0485b475b9 1970-01-01 00:00 +0000 test |
|
883 | 12[tip] 2e0485b475b9 1970-01-01 00:00 +0000 test | |
884 | remove sub3 |
|
884 | remove sub3 | |
885 |
|
885 | |||
886 | $ hg log -r "subrepo('sub3')" --style compact |
|
886 | $ hg log -r "subrepo('sub3')" --style compact | |
887 | 11 9685a22af5db 1970-01-01 00:00 +0000 test |
|
887 | 11 9685a22af5db 1970-01-01 00:00 +0000 test | |
888 | add sub3 |
|
888 | add sub3 | |
889 |
|
889 | |||
890 | 12[tip] 2e0485b475b9 1970-01-01 00:00 +0000 test |
|
890 | 12[tip] 2e0485b475b9 1970-01-01 00:00 +0000 test | |
891 | remove sub3 |
|
891 | remove sub3 | |
892 |
|
892 | |||
893 | $ hg log -r "subrepo('bogus')" --style compact |
|
893 | $ hg log -r "subrepo('bogus')" --style compact | |
894 |
|
894 | |||
895 |
|
895 | |||
896 | Test .hgsubstate in the R state |
|
896 | Test .hgsubstate in the R state | |
897 |
|
897 | |||
898 | $ hg rm .hgsub .hgsubstate |
|
898 | $ hg rm .hgsub .hgsubstate | |
899 | \r (no-eol) (esc) |
|
899 | \r (no-eol) (esc) | |
900 | deleting [=====================> ] 1/2\r (no-eol) (esc) |
|
900 | deleting [=====================> ] 1/2\r (no-eol) (esc) | |
901 | deleting [===========================================>] 2/2\r (no-eol) (esc) |
|
901 | deleting [===========================================>] 2/2\r (no-eol) (esc) | |
902 | \r (no-eol) (esc) |
|
902 | \r (no-eol) (esc) | |
903 | $ hg ci -m 'trash subrepo tracking' |
|
903 | $ hg ci -m 'trash subrepo tracking' | |
904 |
|
904 | |||
905 | $ hg log -r "subrepo('re:sub\d+')" --style compact |
|
905 | $ hg log -r "subrepo('re:sub\d+')" --style compact | |
906 | 0 7f491f53a367 1970-01-01 00:00 +0000 test |
|
906 | 0 7f491f53a367 1970-01-01 00:00 +0000 test | |
907 | main import |
|
907 | main import | |
908 |
|
908 | |||
909 | 1 ffe6649062fe 1970-01-01 00:00 +0000 test |
|
909 | 1 ffe6649062fe 1970-01-01 00:00 +0000 test | |
910 | deep nested modif should trigger a commit |
|
910 | deep nested modif should trigger a commit | |
911 |
|
911 | |||
912 | 2 9bb10eebee29 1970-01-01 00:00 +0000 test |
|
912 | 2 9bb10eebee29 1970-01-01 00:00 +0000 test | |
913 | add test.txt |
|
913 | add test.txt | |
914 |
|
914 | |||
915 | 3 7c64f035294f 1970-01-01 00:00 +0000 test |
|
915 | 3 7c64f035294f 1970-01-01 00:00 +0000 test | |
916 | add large files |
|
916 | add large files | |
917 |
|
917 | |||
918 | 4 f734a59e2e35 1970-01-01 00:00 +0000 test |
|
918 | 4 f734a59e2e35 1970-01-01 00:00 +0000 test | |
919 | forget testing |
|
919 | forget testing | |
920 |
|
920 | |||
921 | 11 9685a22af5db 1970-01-01 00:00 +0000 test |
|
921 | 11 9685a22af5db 1970-01-01 00:00 +0000 test | |
922 | add sub3 |
|
922 | add sub3 | |
923 |
|
923 | |||
924 | 12 2e0485b475b9 1970-01-01 00:00 +0000 test |
|
924 | 12 2e0485b475b9 1970-01-01 00:00 +0000 test | |
925 | remove sub3 |
|
925 | remove sub3 | |
926 |
|
926 | |||
927 | 13[tip] a68b2c361653 1970-01-01 00:00 +0000 test |
|
927 | 13[tip] a68b2c361653 1970-01-01 00:00 +0000 test | |
928 | trash subrepo tracking |
|
928 | trash subrepo tracking | |
929 |
|
929 | |||
930 |
|
930 | |||
931 | Restore the trashed subrepo tracking |
|
931 | Restore the trashed subrepo tracking | |
932 |
|
932 | |||
933 | $ hg rollback -q |
|
933 | $ hg rollback -q | |
934 | $ hg update -Cq . |
|
934 | $ hg update -Cq . | |
935 |
|
935 | |||
936 | Interaction with extdiff, largefiles and subrepos |
|
936 | Interaction with extdiff, largefiles and subrepos | |
937 |
|
937 | |||
938 | $ hg --config extensions.extdiff= pdiff -S |
|
938 | $ hg --config extensions.extdiff= pdiff -S | |
939 |
|
939 | |||
940 | $ hg --config extensions.extdiff= pdiff -r '.^' -S |
|
940 | $ hg --config extensions.extdiff= pdiff -r '.^' -S | |
941 | \r (no-eol) (esc) |
|
941 | \r (no-eol) (esc) | |
942 | archiving [ ] 0/2\r (no-eol) (esc) |
|
942 | archiving [ ] 0/2\r (no-eol) (esc) | |
943 | archiving [====================> ] 1/2\r (no-eol) (esc) |
|
943 | archiving [====================> ] 1/2\r (no-eol) (esc) | |
944 | archiving [==========================================>] 2/2\r (no-eol) (esc) |
|
944 | archiving [==========================================>] 2/2\r (no-eol) (esc) | |
945 | \r (no-eol) (esc) |
|
945 | \r (no-eol) (esc) | |
946 | \r (no-eol) (esc) |
|
946 | \r (no-eol) (esc) | |
947 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) |
|
947 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) | |
948 | \r (no-eol) (esc) |
|
948 | \r (no-eol) (esc) | |
949 | \r (no-eol) (esc) |
|
949 | \r (no-eol) (esc) | |
950 | archiving (sub1/sub2) [ <=> ] 0\r (no-eol) (esc) |
|
950 | archiving (sub1/sub2) [ <=> ] 0\r (no-eol) (glob) (esc) | |
951 | \r (no-eol) (esc) |
|
951 | \r (no-eol) (esc) | |
952 | \r (no-eol) (esc) |
|
952 | \r (no-eol) (esc) | |
953 | archiving (sub3) [ <=> ] 0\r (no-eol) (esc) |
|
953 | archiving (sub3) [ <=> ] 0\r (no-eol) (esc) | |
954 | \r (no-eol) (esc) |
|
954 | \r (no-eol) (esc) | |
955 | \r (no-eol) (esc) |
|
955 | \r (no-eol) (esc) | |
956 | archiving [ ] 0/2\r (no-eol) (esc) |
|
956 | archiving [ ] 0/2\r (no-eol) (esc) | |
957 | archiving [====================> ] 1/2\r (no-eol) (esc) |
|
957 | archiving [====================> ] 1/2\r (no-eol) (esc) | |
958 | archiving [==========================================>] 2/2\r (no-eol) (esc) |
|
958 | archiving [==========================================>] 2/2\r (no-eol) (esc) | |
959 | \r (no-eol) (esc) |
|
959 | \r (no-eol) (esc) | |
960 | \r (no-eol) (esc) |
|
960 | \r (no-eol) (esc) | |
961 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) |
|
961 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) | |
962 | \r (no-eol) (esc) |
|
962 | \r (no-eol) (esc) | |
963 | \r (no-eol) (esc) |
|
963 | \r (no-eol) (esc) | |
964 | archiving (sub1/sub2) [ <=> ] 0\r (no-eol) (esc) |
|
964 | archiving (sub1/sub2) [ <=> ] 0\r (no-eol) (glob) (esc) | |
965 | \r (no-eol) (esc) |
|
965 | \r (no-eol) (esc) | |
966 | diff -Nru cloned.*/.hgsub cloned/.hgsub (glob) |
|
966 | diff -Nru cloned.*/.hgsub cloned/.hgsub (glob) | |
967 | --- cloned.*/.hgsub * (glob) |
|
967 | --- cloned.*/.hgsub * (glob) | |
968 | +++ cloned/.hgsub * (glob) |
|
968 | +++ cloned/.hgsub * (glob) | |
969 | @@ -1,2 +1* @@ (glob) |
|
969 | @@ -1,2 +1* @@ (glob) | |
970 | sub1 = ../sub1 |
|
970 | sub1 = ../sub1 | |
971 | -sub3 = sub3 |
|
971 | -sub3 = sub3 | |
972 | diff -Nru cloned.*/.hgsubstate cloned/.hgsubstate (glob) |
|
972 | diff -Nru cloned.*/.hgsubstate cloned/.hgsubstate (glob) | |
973 | --- cloned.*/.hgsubstate * (glob) |
|
973 | --- cloned.*/.hgsubstate * (glob) | |
974 | +++ cloned/.hgsubstate * (glob) |
|
974 | +++ cloned/.hgsubstate * (glob) | |
975 | @@ -1,2 +1* @@ (glob) |
|
975 | @@ -1,2 +1* @@ (glob) | |
976 | 7a36fa02b66e61f27f3d4a822809f159479b8ab2 sub1 |
|
976 | 7a36fa02b66e61f27f3d4a822809f159479b8ab2 sub1 | |
977 | -b1a26de6f2a045a9f079323693614ee322f1ff7e sub3 |
|
977 | -b1a26de6f2a045a9f079323693614ee322f1ff7e sub3 | |
978 | [1] |
|
978 | [1] | |
979 |
|
979 | |||
980 | $ hg --config extensions.extdiff= pdiff -r 0 -r '.^' -S |
|
980 | $ hg --config extensions.extdiff= pdiff -r 0 -r '.^' -S | |
981 | \r (no-eol) (esc) |
|
981 | \r (no-eol) (esc) | |
982 | archiving [ ] 0/3\r (no-eol) (esc) |
|
982 | archiving [ ] 0/3\r (no-eol) (esc) | |
983 | archiving [=============> ] 1/3\r (no-eol) (esc) |
|
983 | archiving [=============> ] 1/3\r (no-eol) (esc) | |
984 | archiving [===========================> ] 2/3\r (no-eol) (esc) |
|
984 | archiving [===========================> ] 2/3\r (no-eol) (esc) | |
985 | archiving [==========================================>] 3/3\r (no-eol) (esc) |
|
985 | archiving [==========================================>] 3/3\r (no-eol) (esc) | |
986 | \r (no-eol) (esc) |
|
986 | \r (no-eol) (esc) | |
987 | \r (no-eol) (esc) |
|
987 | \r (no-eol) (esc) | |
988 | archiving (sub1) [ ] 0/1\r (no-eol) (esc) |
|
988 | archiving (sub1) [ ] 0/1\r (no-eol) (esc) | |
989 | archiving (sub1) [===================================>] 1/1\r (no-eol) (esc) |
|
989 | archiving (sub1) [===================================>] 1/1\r (no-eol) (esc) | |
990 | \r (no-eol) (esc) |
|
990 | \r (no-eol) (esc) | |
991 | \r (no-eol) (esc) |
|
991 | \r (no-eol) (esc) | |
992 | archiving (sub1/sub2) [ ] 0/1\r (no-eol) (esc) |
|
992 | archiving (sub1/sub2) [ ] 0/1\r (no-eol) (glob) (esc) | |
993 | archiving (sub1/sub2) [==============================>] 1/1\r (no-eol) (esc) |
|
993 | archiving (sub1/sub2) [==============================>] 1/1\r (no-eol) (glob) (esc) | |
994 | \r (no-eol) (esc) |
|
994 | \r (no-eol) (esc) | |
995 | \r (no-eol) (esc) |
|
995 | \r (no-eol) (esc) | |
996 | archiving [ ] 0/8\r (no-eol) (esc) |
|
996 | archiving [ ] 0/8\r (no-eol) (esc) | |
997 | archiving [====> ] 1/8\r (no-eol) (esc) |
|
997 | archiving [====> ] 1/8\r (no-eol) (esc) | |
998 | archiving [=========> ] 2/8\r (no-eol) (esc) |
|
998 | archiving [=========> ] 2/8\r (no-eol) (esc) | |
999 | archiving [===============> ] 3/8\r (no-eol) (esc) |
|
999 | archiving [===============> ] 3/8\r (no-eol) (esc) | |
1000 | archiving [====================> ] 4/8\r (no-eol) (esc) |
|
1000 | archiving [====================> ] 4/8\r (no-eol) (esc) | |
1001 | archiving [=========================> ] 5/8\r (no-eol) (esc) |
|
1001 | archiving [=========================> ] 5/8\r (no-eol) (esc) | |
1002 | archiving [===============================> ] 6/8\r (no-eol) (esc) |
|
1002 | archiving [===============================> ] 6/8\r (no-eol) (esc) | |
1003 | archiving [====================================> ] 7/8\r (no-eol) (esc) |
|
1003 | archiving [====================================> ] 7/8\r (no-eol) (esc) | |
1004 | archiving [==========================================>] 8/8\r (no-eol) (esc) |
|
1004 | archiving [==========================================>] 8/8\r (no-eol) (esc) | |
1005 | \r (no-eol) (esc) |
|
1005 | \r (no-eol) (esc) | |
1006 | \r (no-eol) (esc) |
|
1006 | \r (no-eol) (esc) | |
1007 | archiving (sub1) [ ] 0/1\r (no-eol) (esc) |
|
1007 | archiving (sub1) [ ] 0/1\r (no-eol) (esc) | |
1008 | archiving (sub1) [===================================>] 1/1\r (no-eol) (esc) |
|
1008 | archiving (sub1) [===================================>] 1/1\r (no-eol) (esc) | |
1009 | \r (no-eol) (esc) |
|
1009 | \r (no-eol) (esc) | |
1010 | \r (no-eol) (esc) |
|
1010 | \r (no-eol) (esc) | |
1011 | archiving (sub1/sub2) [ ] 0/3\r (no-eol) (esc) |
|
1011 | archiving (sub1/sub2) [ ] 0/3\r (no-eol) (glob) (esc) | |
1012 | archiving (sub1/sub2) [=========> ] 1/3\r (no-eol) (esc) |
|
1012 | archiving (sub1/sub2) [=========> ] 1/3\r (no-eol) (glob) (esc) | |
1013 | archiving (sub1/sub2) [===================> ] 2/3\r (no-eol) (esc) |
|
1013 | archiving (sub1/sub2) [===================> ] 2/3\r (no-eol) (glob) (esc) | |
1014 | archiving (sub1/sub2) [==============================>] 3/3\r (no-eol) (esc) |
|
1014 | archiving (sub1/sub2) [==============================>] 3/3\r (no-eol) (glob) (esc) | |
1015 | \r (no-eol) (esc) |
|
1015 | \r (no-eol) (esc) | |
1016 | \r (no-eol) (esc) |
|
1016 | \r (no-eol) (esc) | |
1017 | archiving (sub3) [ ] 0/1\r (no-eol) (esc) |
|
1017 | archiving (sub3) [ ] 0/1\r (no-eol) (esc) | |
1018 | archiving (sub3) [===================================>] 1/1\r (no-eol) (esc) |
|
1018 | archiving (sub3) [===================================>] 1/1\r (no-eol) (esc) | |
1019 | \r (no-eol) (esc) |
|
1019 | \r (no-eol) (esc) | |
1020 | diff -Nru cloned.*/.hglf/b.dat cloned.*/.hglf/b.dat (glob) |
|
1020 | diff -Nru cloned.*/.hglf/b.dat cloned.*/.hglf/b.dat (glob) | |
1021 | --- cloned.*/.hglf/b.dat * (glob) |
|
1021 | --- cloned.*/.hglf/b.dat * (glob) | |
1022 | +++ cloned.*/.hglf/b.dat * (glob) |
|
1022 | +++ cloned.*/.hglf/b.dat * (glob) | |
1023 | @@ -*,0 +1* @@ (glob) |
|
1023 | @@ -*,0 +1* @@ (glob) | |
1024 | +da39a3ee5e6b4b0d3255bfef95601890afd80709 |
|
1024 | +da39a3ee5e6b4b0d3255bfef95601890afd80709 | |
1025 | diff -Nru cloned.*/.hglf/foo/bar/large.dat cloned.*/.hglf/foo/bar/large.dat (glob) |
|
1025 | diff -Nru cloned.*/.hglf/foo/bar/large.dat cloned.*/.hglf/foo/bar/large.dat (glob) | |
1026 | --- cloned.*/.hglf/foo/bar/large.dat * (glob) |
|
1026 | --- cloned.*/.hglf/foo/bar/large.dat * (glob) | |
1027 | +++ cloned.*/.hglf/foo/bar/large.dat * (glob) |
|
1027 | +++ cloned.*/.hglf/foo/bar/large.dat * (glob) | |
1028 | @@ -*,0 +1* @@ (glob) |
|
1028 | @@ -*,0 +1* @@ (glob) | |
1029 | +2f6933b5ee0f5fdd823d9717d8729f3c2523811b |
|
1029 | +2f6933b5ee0f5fdd823d9717d8729f3c2523811b | |
1030 | diff -Nru cloned.*/.hglf/large.bin cloned.*/.hglf/large.bin (glob) |
|
1030 | diff -Nru cloned.*/.hglf/large.bin cloned.*/.hglf/large.bin (glob) | |
1031 | --- cloned.*/.hglf/large.bin * (glob) |
|
1031 | --- cloned.*/.hglf/large.bin * (glob) | |
1032 | +++ cloned.*/.hglf/large.bin * (glob) |
|
1032 | +++ cloned.*/.hglf/large.bin * (glob) | |
1033 | @@ -*,0 +1* @@ (glob) |
|
1033 | @@ -*,0 +1* @@ (glob) | |
1034 | +7f7097b041ccf68cc5561e9600da4655d21c6d18 |
|
1034 | +7f7097b041ccf68cc5561e9600da4655d21c6d18 | |
1035 | diff -Nru cloned.*/.hgsub cloned.*/.hgsub (glob) |
|
1035 | diff -Nru cloned.*/.hgsub cloned.*/.hgsub (glob) | |
1036 | --- cloned.*/.hgsub * (glob) |
|
1036 | --- cloned.*/.hgsub * (glob) | |
1037 | +++ cloned.*/.hgsub * (glob) |
|
1037 | +++ cloned.*/.hgsub * (glob) | |
1038 | @@ -1* +1,2 @@ (glob) |
|
1038 | @@ -1* +1,2 @@ (glob) | |
1039 | sub1 = ../sub1 |
|
1039 | sub1 = ../sub1 | |
1040 | +sub3 = sub3 |
|
1040 | +sub3 = sub3 | |
1041 | diff -Nru cloned.*/.hgsubstate cloned.*/.hgsubstate (glob) |
|
1041 | diff -Nru cloned.*/.hgsubstate cloned.*/.hgsubstate (glob) | |
1042 | --- cloned.*/.hgsubstate * (glob) |
|
1042 | --- cloned.*/.hgsubstate * (glob) | |
1043 | +++ cloned.*/.hgsubstate * (glob) |
|
1043 | +++ cloned.*/.hgsubstate * (glob) | |
1044 | @@ -1* +1,2 @@ (glob) |
|
1044 | @@ -1* +1,2 @@ (glob) | |
1045 | -fc3b4ce2696f7741438c79207583768f2ce6b0dd sub1 |
|
1045 | -fc3b4ce2696f7741438c79207583768f2ce6b0dd sub1 | |
1046 | +7a36fa02b66e61f27f3d4a822809f159479b8ab2 sub1 |
|
1046 | +7a36fa02b66e61f27f3d4a822809f159479b8ab2 sub1 | |
1047 | +b1a26de6f2a045a9f079323693614ee322f1ff7e sub3 |
|
1047 | +b1a26de6f2a045a9f079323693614ee322f1ff7e sub3 | |
1048 | diff -Nru cloned.*/foo/bar/def cloned.*/foo/bar/def (glob) |
|
1048 | diff -Nru cloned.*/foo/bar/def cloned.*/foo/bar/def (glob) | |
1049 | --- cloned.*/foo/bar/def * (glob) |
|
1049 | --- cloned.*/foo/bar/def * (glob) | |
1050 | +++ cloned.*/foo/bar/def * (glob) |
|
1050 | +++ cloned.*/foo/bar/def * (glob) | |
1051 | @@ -*,0 +1* @@ (glob) |
|
1051 | @@ -*,0 +1* @@ (glob) | |
1052 | +changed |
|
1052 | +changed | |
1053 | diff -Nru cloned.*/main cloned.*/main (glob) |
|
1053 | diff -Nru cloned.*/main cloned.*/main (glob) | |
1054 | --- cloned.*/main * (glob) |
|
1054 | --- cloned.*/main * (glob) | |
1055 | +++ cloned.*/main * (glob) |
|
1055 | +++ cloned.*/main * (glob) | |
1056 | @@ -1* +1* @@ (glob) |
|
1056 | @@ -1* +1* @@ (glob) | |
1057 | -main |
|
1057 | -main | |
1058 | +foo |
|
1058 | +foo | |
1059 | diff -Nru cloned.*/sub1/.hgsubstate cloned.*/sub1/.hgsubstate (glob) |
|
1059 | diff -Nru cloned.*/sub1/.hgsubstate cloned.*/sub1/.hgsubstate (glob) | |
1060 | --- cloned.*/sub1/.hgsubstate * (glob) |
|
1060 | --- cloned.*/sub1/.hgsubstate * (glob) | |
1061 | +++ cloned.*/sub1/.hgsubstate * (glob) |
|
1061 | +++ cloned.*/sub1/.hgsubstate * (glob) | |
1062 | @@ -1* +1* @@ (glob) |
|
1062 | @@ -1* +1* @@ (glob) | |
1063 | -c57a0840e3badd667ef3c3ef65471609acb2ba3c sub2 |
|
1063 | -c57a0840e3badd667ef3c3ef65471609acb2ba3c sub2 | |
1064 | +c77908c81ccea3794a896c79e98b0e004aee2e9e sub2 |
|
1064 | +c77908c81ccea3794a896c79e98b0e004aee2e9e sub2 | |
1065 | diff -Nru cloned.*/sub1/sub2/folder/test.txt cloned.*/sub1/sub2/folder/test.txt (glob) |
|
1065 | diff -Nru cloned.*/sub1/sub2/folder/test.txt cloned.*/sub1/sub2/folder/test.txt (glob) | |
1066 | --- cloned.*/sub1/sub2/folder/test.txt * (glob) |
|
1066 | --- cloned.*/sub1/sub2/folder/test.txt * (glob) | |
1067 | +++ cloned.*/sub1/sub2/folder/test.txt * (glob) |
|
1067 | +++ cloned.*/sub1/sub2/folder/test.txt * (glob) | |
1068 | @@ -*,0 +1* @@ (glob) |
|
1068 | @@ -*,0 +1* @@ (glob) | |
1069 | +subfolder |
|
1069 | +subfolder | |
1070 | diff -Nru cloned.*/sub1/sub2/sub2 cloned.*/sub1/sub2/sub2 (glob) |
|
1070 | diff -Nru cloned.*/sub1/sub2/sub2 cloned.*/sub1/sub2/sub2 (glob) | |
1071 | --- cloned.*/sub1/sub2/sub2 * (glob) |
|
1071 | --- cloned.*/sub1/sub2/sub2 * (glob) | |
1072 | +++ cloned.*/sub1/sub2/sub2 * (glob) |
|
1072 | +++ cloned.*/sub1/sub2/sub2 * (glob) | |
1073 | @@ -1* +1* @@ (glob) |
|
1073 | @@ -1* +1* @@ (glob) | |
1074 | -sub2 |
|
1074 | -sub2 | |
1075 | +modified |
|
1075 | +modified | |
1076 | diff -Nru cloned.*/sub3/a.txt cloned.*/sub3/a.txt (glob) |
|
1076 | diff -Nru cloned.*/sub3/a.txt cloned.*/sub3/a.txt (glob) | |
1077 | --- cloned.*/sub3/a.txt * (glob) |
|
1077 | --- cloned.*/sub3/a.txt * (glob) | |
1078 | +++ cloned.*/sub3/a.txt * (glob) |
|
1078 | +++ cloned.*/sub3/a.txt * (glob) | |
1079 | @@ -*,0 +1* @@ (glob) |
|
1079 | @@ -*,0 +1* @@ (glob) | |
1080 | +xyz |
|
1080 | +xyz | |
1081 | [1] |
|
1081 | [1] | |
1082 |
|
1082 | |||
1083 | $ echo mod > sub1/sub2/sub2 |
|
1083 | $ echo mod > sub1/sub2/sub2 | |
1084 | $ hg --config extensions.extdiff= pdiff -S |
|
1084 | $ hg --config extensions.extdiff= pdiff -S | |
1085 | \r (no-eol) (esc) |
|
1085 | \r (no-eol) (esc) | |
1086 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) |
|
1086 | archiving (sub1) [ <=> ] 0\r (no-eol) (esc) | |
1087 | \r (no-eol) (esc) |
|
1087 | \r (no-eol) (esc) | |
1088 | \r (no-eol) (esc) |
|
1088 | \r (no-eol) (esc) | |
1089 | archiving (sub1/sub2) [ ] 0/1\r (no-eol) (esc) |
|
1089 | archiving (sub1/sub2) [ ] 0/1\r (no-eol) (glob) (esc) | |
1090 | archiving (sub1/sub2) [==============================>] 1/1\r (no-eol) (esc) |
|
1090 | archiving (sub1/sub2) [==============================>] 1/1\r (no-eol) (glob) (esc) | |
1091 | \r (no-eol) (esc) |
|
1091 | \r (no-eol) (esc) | |
1092 | --- */cloned.*/sub1/sub2/sub2 * (glob) |
|
1092 | --- */cloned.*/sub1/sub2/sub2 * (glob) | |
1093 | +++ */cloned/sub1/sub2/sub2 * (glob) |
|
1093 | +++ */cloned/sub1/sub2/sub2 * (glob) | |
1094 | @@ -1* +1* @@ (glob) |
|
1094 | @@ -1* +1* @@ (glob) | |
1095 | -modified |
|
1095 | -modified | |
1096 | +mod |
|
1096 | +mod | |
1097 | [1] |
|
1097 | [1] | |
1098 |
|
1098 | |||
1099 | $ cd .. |
|
1099 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now