Show More
@@ -1,888 +1,892 | |||||
1 | # ui.py - user interface bits for mercurial |
|
1 | # ui.py - user interface bits for mercurial | |
2 | # |
|
2 | # | |
3 | # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
|
3 | # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> | |
4 | # |
|
4 | # | |
5 | # This software may be used and distributed according to the terms of the |
|
5 | # This software may be used and distributed according to the terms of the | |
6 | # GNU General Public License version 2 or any later version. |
|
6 | # GNU General Public License version 2 or any later version. | |
7 |
|
7 | |||
8 | from i18n import _ |
|
8 | from i18n import _ | |
9 | import errno, getpass, os, socket, sys, tempfile, traceback |
|
9 | import errno, getpass, os, socket, sys, tempfile, traceback | |
10 | import config, scmutil, util, error, formatter |
|
10 | import config, scmutil, util, error, formatter | |
11 | from node import hex |
|
11 | from node import hex | |
12 |
|
12 | |||
13 | samplehgrcs = { |
|
13 | samplehgrcs = { | |
14 | 'user': |
|
14 | 'user': | |
15 | """# example user config (see "hg help config" for more info) |
|
15 | """# example user config (see "hg help config" for more info) | |
16 | [ui] |
|
16 | [ui] | |
17 | # name and email, e.g. |
|
17 | # name and email, e.g. | |
18 | # username = Jane Doe <jdoe@example.com> |
|
18 | # username = Jane Doe <jdoe@example.com> | |
19 | username = |
|
19 | username = | |
20 |
|
20 | |||
21 | [extensions] |
|
21 | [extensions] | |
22 | # uncomment these lines to enable some popular extensions |
|
22 | # uncomment these lines to enable some popular extensions | |
23 | # (see "hg help extensions" for more info) |
|
23 | # (see "hg help extensions" for more info) | |
24 | # |
|
24 | # | |
25 | # pager = |
|
25 | # pager = | |
26 | # progress = |
|
26 | # progress = | |
27 | # color =""", |
|
27 | # color =""", | |
28 |
|
28 | |||
29 | 'local': |
|
29 | 'local': | |
30 | """# example repository config (see "hg help config" for more info) |
|
30 | """# example repository config (see "hg help config" for more info) | |
31 | """, |
|
31 | """, | |
32 |
|
32 | |||
33 | 'global': |
|
33 | 'global': | |
34 | """# example system-wide hg config (see "hg help config" for more info) |
|
34 | """# example system-wide hg config (see "hg help config" for more info) | |
35 |
|
35 | |||
36 | [extensions] |
|
36 | [extensions] | |
37 | # uncomment these lines to enable some popular extensions |
|
37 | # uncomment these lines to enable some popular extensions | |
38 | # (see "hg help extensions" for more info) |
|
38 | # (see "hg help extensions" for more info) | |
39 | # |
|
39 | # | |
40 | # blackbox = |
|
40 | # blackbox = | |
41 | # progress = |
|
41 | # progress = | |
42 | # color = |
|
42 | # color = | |
43 | # pager =""", |
|
43 | # pager =""", | |
44 | } |
|
44 | } | |
45 |
|
45 | |||
46 | class ui(object): |
|
46 | class ui(object): | |
47 | def __init__(self, src=None): |
|
47 | def __init__(self, src=None): | |
48 | # _buffers: used for temporary capture of output |
|
48 | # _buffers: used for temporary capture of output | |
49 | self._buffers = [] |
|
49 | self._buffers = [] | |
50 | # _bufferstates: Should the temporary capture includes stderr |
|
50 | # _bufferstates: Should the temporary capture includes stderr | |
51 | self._bufferstates = [] |
|
51 | self._bufferstates = [] | |
52 | self.quiet = self.verbose = self.debugflag = self.tracebackflag = False |
|
52 | self.quiet = self.verbose = self.debugflag = self.tracebackflag = False | |
53 | self._reportuntrusted = True |
|
53 | self._reportuntrusted = True | |
54 | self._ocfg = config.config() # overlay |
|
54 | self._ocfg = config.config() # overlay | |
55 | self._tcfg = config.config() # trusted |
|
55 | self._tcfg = config.config() # trusted | |
56 | self._ucfg = config.config() # untrusted |
|
56 | self._ucfg = config.config() # untrusted | |
57 | self._trustusers = set() |
|
57 | self._trustusers = set() | |
58 | self._trustgroups = set() |
|
58 | self._trustgroups = set() | |
59 | self.callhooks = True |
|
59 | self.callhooks = True | |
60 |
|
60 | |||
61 | if src: |
|
61 | if src: | |
62 | self.fout = src.fout |
|
62 | self.fout = src.fout | |
63 | self.ferr = src.ferr |
|
63 | self.ferr = src.ferr | |
64 | self.fin = src.fin |
|
64 | self.fin = src.fin | |
65 |
|
65 | |||
66 | self._tcfg = src._tcfg.copy() |
|
66 | self._tcfg = src._tcfg.copy() | |
67 | self._ucfg = src._ucfg.copy() |
|
67 | self._ucfg = src._ucfg.copy() | |
68 | self._ocfg = src._ocfg.copy() |
|
68 | self._ocfg = src._ocfg.copy() | |
69 | self._trustusers = src._trustusers.copy() |
|
69 | self._trustusers = src._trustusers.copy() | |
70 | self._trustgroups = src._trustgroups.copy() |
|
70 | self._trustgroups = src._trustgroups.copy() | |
71 | self.environ = src.environ |
|
71 | self.environ = src.environ | |
72 | self.callhooks = src.callhooks |
|
72 | self.callhooks = src.callhooks | |
73 | self.fixconfig() |
|
73 | self.fixconfig() | |
74 | else: |
|
74 | else: | |
75 | self.fout = sys.stdout |
|
75 | self.fout = sys.stdout | |
76 | self.ferr = sys.stderr |
|
76 | self.ferr = sys.stderr | |
77 | self.fin = sys.stdin |
|
77 | self.fin = sys.stdin | |
78 |
|
78 | |||
79 | # shared read-only environment |
|
79 | # shared read-only environment | |
80 | self.environ = os.environ |
|
80 | self.environ = os.environ | |
81 | # we always trust global config files |
|
81 | # we always trust global config files | |
82 | for f in scmutil.rcpath(): |
|
82 | for f in scmutil.rcpath(): | |
83 | self.readconfig(f, trust=True) |
|
83 | self.readconfig(f, trust=True) | |
84 |
|
84 | |||
85 | def copy(self): |
|
85 | def copy(self): | |
86 | return self.__class__(self) |
|
86 | return self.__class__(self) | |
87 |
|
87 | |||
88 | def formatter(self, topic, opts): |
|
88 | def formatter(self, topic, opts): | |
89 | return formatter.formatter(self, topic, opts) |
|
89 | return formatter.formatter(self, topic, opts) | |
90 |
|
90 | |||
91 | def _trusted(self, fp, f): |
|
91 | def _trusted(self, fp, f): | |
92 | st = util.fstat(fp) |
|
92 | st = util.fstat(fp) | |
93 | if util.isowner(st): |
|
93 | if util.isowner(st): | |
94 | return True |
|
94 | return True | |
95 |
|
95 | |||
96 | tusers, tgroups = self._trustusers, self._trustgroups |
|
96 | tusers, tgroups = self._trustusers, self._trustgroups | |
97 | if '*' in tusers or '*' in tgroups: |
|
97 | if '*' in tusers or '*' in tgroups: | |
98 | return True |
|
98 | return True | |
99 |
|
99 | |||
100 | user = util.username(st.st_uid) |
|
100 | user = util.username(st.st_uid) | |
101 | group = util.groupname(st.st_gid) |
|
101 | group = util.groupname(st.st_gid) | |
102 | if user in tusers or group in tgroups or user == util.username(): |
|
102 | if user in tusers or group in tgroups or user == util.username(): | |
103 | return True |
|
103 | return True | |
104 |
|
104 | |||
105 | if self._reportuntrusted: |
|
105 | if self._reportuntrusted: | |
106 | self.warn(_('not trusting file %s from untrusted ' |
|
106 | self.warn(_('not trusting file %s from untrusted ' | |
107 | 'user %s, group %s\n') % (f, user, group)) |
|
107 | 'user %s, group %s\n') % (f, user, group)) | |
108 | return False |
|
108 | return False | |
109 |
|
109 | |||
110 | def readconfig(self, filename, root=None, trust=False, |
|
110 | def readconfig(self, filename, root=None, trust=False, | |
111 | sections=None, remap=None): |
|
111 | sections=None, remap=None): | |
112 | try: |
|
112 | try: | |
113 | fp = open(filename) |
|
113 | fp = open(filename) | |
114 | except IOError: |
|
114 | except IOError: | |
115 | if not sections: # ignore unless we were looking for something |
|
115 | if not sections: # ignore unless we were looking for something | |
116 | return |
|
116 | return | |
117 | raise |
|
117 | raise | |
118 |
|
118 | |||
119 | cfg = config.config() |
|
119 | cfg = config.config() | |
120 | trusted = sections or trust or self._trusted(fp, filename) |
|
120 | trusted = sections or trust or self._trusted(fp, filename) | |
121 |
|
121 | |||
122 | try: |
|
122 | try: | |
123 | cfg.read(filename, fp, sections=sections, remap=remap) |
|
123 | cfg.read(filename, fp, sections=sections, remap=remap) | |
124 | fp.close() |
|
124 | fp.close() | |
125 | except error.ConfigError, inst: |
|
125 | except error.ConfigError, inst: | |
126 | if trusted: |
|
126 | if trusted: | |
127 | raise |
|
127 | raise | |
128 | self.warn(_("ignored: %s\n") % str(inst)) |
|
128 | self.warn(_("ignored: %s\n") % str(inst)) | |
129 |
|
129 | |||
130 | if self.plain(): |
|
130 | if self.plain(): | |
131 | for k in ('debug', 'fallbackencoding', 'quiet', 'slash', |
|
131 | for k in ('debug', 'fallbackencoding', 'quiet', 'slash', | |
132 | 'logtemplate', 'style', |
|
132 | 'logtemplate', 'style', | |
133 | 'traceback', 'verbose'): |
|
133 | 'traceback', 'verbose'): | |
134 | if k in cfg['ui']: |
|
134 | if k in cfg['ui']: | |
135 | del cfg['ui'][k] |
|
135 | del cfg['ui'][k] | |
136 | for k, v in cfg.items('defaults'): |
|
136 | for k, v in cfg.items('defaults'): | |
137 | del cfg['defaults'][k] |
|
137 | del cfg['defaults'][k] | |
138 | # Don't remove aliases from the configuration if in the exceptionlist |
|
138 | # Don't remove aliases from the configuration if in the exceptionlist | |
139 | if self.plain('alias'): |
|
139 | if self.plain('alias'): | |
140 | for k, v in cfg.items('alias'): |
|
140 | for k, v in cfg.items('alias'): | |
141 | del cfg['alias'][k] |
|
141 | del cfg['alias'][k] | |
142 |
|
142 | |||
143 | if trusted: |
|
143 | if trusted: | |
144 | self._tcfg.update(cfg) |
|
144 | self._tcfg.update(cfg) | |
145 | self._tcfg.update(self._ocfg) |
|
145 | self._tcfg.update(self._ocfg) | |
146 | self._ucfg.update(cfg) |
|
146 | self._ucfg.update(cfg) | |
147 | self._ucfg.update(self._ocfg) |
|
147 | self._ucfg.update(self._ocfg) | |
148 |
|
148 | |||
149 | if root is None: |
|
149 | if root is None: | |
150 | root = os.path.expanduser('~') |
|
150 | root = os.path.expanduser('~') | |
151 | self.fixconfig(root=root) |
|
151 | self.fixconfig(root=root) | |
152 |
|
152 | |||
153 | def fixconfig(self, root=None, section=None): |
|
153 | def fixconfig(self, root=None, section=None): | |
154 | if section in (None, 'paths'): |
|
154 | if section in (None, 'paths'): | |
155 | # expand vars and ~ |
|
155 | # expand vars and ~ | |
156 | # translate paths relative to root (or home) into absolute paths |
|
156 | # translate paths relative to root (or home) into absolute paths | |
157 | root = root or os.getcwd() |
|
157 | root = root or os.getcwd() | |
158 | for c in self._tcfg, self._ucfg, self._ocfg: |
|
158 | for c in self._tcfg, self._ucfg, self._ocfg: | |
159 | for n, p in c.items('paths'): |
|
159 | for n, p in c.items('paths'): | |
160 | if not p: |
|
160 | if not p: | |
161 | continue |
|
161 | continue | |
162 | if '%%' in p: |
|
162 | if '%%' in p: | |
163 | self.warn(_("(deprecated '%%' in path %s=%s from %s)\n") |
|
163 | self.warn(_("(deprecated '%%' in path %s=%s from %s)\n") | |
164 | % (n, p, self.configsource('paths', n))) |
|
164 | % (n, p, self.configsource('paths', n))) | |
165 | p = p.replace('%%', '%') |
|
165 | p = p.replace('%%', '%') | |
166 | p = util.expandpath(p) |
|
166 | p = util.expandpath(p) | |
167 | if not util.hasscheme(p) and not os.path.isabs(p): |
|
167 | if not util.hasscheme(p) and not os.path.isabs(p): | |
168 | p = os.path.normpath(os.path.join(root, p)) |
|
168 | p = os.path.normpath(os.path.join(root, p)) | |
169 | c.set("paths", n, p) |
|
169 | c.set("paths", n, p) | |
170 |
|
170 | |||
171 | if section in (None, 'ui'): |
|
171 | if section in (None, 'ui'): | |
172 | # update ui options |
|
172 | # update ui options | |
173 | self.debugflag = self.configbool('ui', 'debug') |
|
173 | self.debugflag = self.configbool('ui', 'debug') | |
174 | self.verbose = self.debugflag or self.configbool('ui', 'verbose') |
|
174 | self.verbose = self.debugflag or self.configbool('ui', 'verbose') | |
175 | self.quiet = not self.debugflag and self.configbool('ui', 'quiet') |
|
175 | self.quiet = not self.debugflag and self.configbool('ui', 'quiet') | |
176 | if self.verbose and self.quiet: |
|
176 | if self.verbose and self.quiet: | |
177 | self.quiet = self.verbose = False |
|
177 | self.quiet = self.verbose = False | |
178 | self._reportuntrusted = self.debugflag or self.configbool("ui", |
|
178 | self._reportuntrusted = self.debugflag or self.configbool("ui", | |
179 | "report_untrusted", True) |
|
179 | "report_untrusted", True) | |
180 | self.tracebackflag = self.configbool('ui', 'traceback', False) |
|
180 | self.tracebackflag = self.configbool('ui', 'traceback', False) | |
181 |
|
181 | |||
182 | if section in (None, 'trusted'): |
|
182 | if section in (None, 'trusted'): | |
183 | # update trust information |
|
183 | # update trust information | |
184 | self._trustusers.update(self.configlist('trusted', 'users')) |
|
184 | self._trustusers.update(self.configlist('trusted', 'users')) | |
185 | self._trustgroups.update(self.configlist('trusted', 'groups')) |
|
185 | self._trustgroups.update(self.configlist('trusted', 'groups')) | |
186 |
|
186 | |||
187 | def backupconfig(self, section, item): |
|
187 | def backupconfig(self, section, item): | |
188 | return (self._ocfg.backup(section, item), |
|
188 | return (self._ocfg.backup(section, item), | |
189 | self._tcfg.backup(section, item), |
|
189 | self._tcfg.backup(section, item), | |
190 | self._ucfg.backup(section, item),) |
|
190 | self._ucfg.backup(section, item),) | |
191 | def restoreconfig(self, data): |
|
191 | def restoreconfig(self, data): | |
192 | self._ocfg.restore(data[0]) |
|
192 | self._ocfg.restore(data[0]) | |
193 | self._tcfg.restore(data[1]) |
|
193 | self._tcfg.restore(data[1]) | |
194 | self._ucfg.restore(data[2]) |
|
194 | self._ucfg.restore(data[2]) | |
195 |
|
195 | |||
196 | def setconfig(self, section, name, value, source=''): |
|
196 | def setconfig(self, section, name, value, source=''): | |
197 | for cfg in (self._ocfg, self._tcfg, self._ucfg): |
|
197 | for cfg in (self._ocfg, self._tcfg, self._ucfg): | |
198 | cfg.set(section, name, value, source) |
|
198 | cfg.set(section, name, value, source) | |
199 | self.fixconfig(section=section) |
|
199 | self.fixconfig(section=section) | |
200 |
|
200 | |||
201 | def _data(self, untrusted): |
|
201 | def _data(self, untrusted): | |
202 | return untrusted and self._ucfg or self._tcfg |
|
202 | return untrusted and self._ucfg or self._tcfg | |
203 |
|
203 | |||
204 | def configsource(self, section, name, untrusted=False): |
|
204 | def configsource(self, section, name, untrusted=False): | |
205 | return self._data(untrusted).source(section, name) or 'none' |
|
205 | return self._data(untrusted).source(section, name) or 'none' | |
206 |
|
206 | |||
207 | def config(self, section, name, default=None, untrusted=False): |
|
207 | def config(self, section, name, default=None, untrusted=False): | |
208 | if isinstance(name, list): |
|
208 | if isinstance(name, list): | |
209 | alternates = name |
|
209 | alternates = name | |
210 | else: |
|
210 | else: | |
211 | alternates = [name] |
|
211 | alternates = [name] | |
212 |
|
212 | |||
213 | for n in alternates: |
|
213 | for n in alternates: | |
214 | value = self._data(untrusted).get(section, n, None) |
|
214 | value = self._data(untrusted).get(section, n, None) | |
215 | if value is not None: |
|
215 | if value is not None: | |
216 | name = n |
|
216 | name = n | |
217 | break |
|
217 | break | |
218 | else: |
|
218 | else: | |
219 | value = default |
|
219 | value = default | |
220 |
|
220 | |||
221 | if self.debugflag and not untrusted and self._reportuntrusted: |
|
221 | if self.debugflag and not untrusted and self._reportuntrusted: | |
222 | for n in alternates: |
|
222 | for n in alternates: | |
223 | uvalue = self._ucfg.get(section, n) |
|
223 | uvalue = self._ucfg.get(section, n) | |
224 | if uvalue is not None and uvalue != value: |
|
224 | if uvalue is not None and uvalue != value: | |
225 | self.debug("ignoring untrusted configuration option " |
|
225 | self.debug("ignoring untrusted configuration option " | |
226 | "%s.%s = %s\n" % (section, n, uvalue)) |
|
226 | "%s.%s = %s\n" % (section, n, uvalue)) | |
227 | return value |
|
227 | return value | |
228 |
|
228 | |||
229 | def configpath(self, section, name, default=None, untrusted=False): |
|
229 | def configpath(self, section, name, default=None, untrusted=False): | |
230 | 'get a path config item, expanded relative to repo root or config file' |
|
230 | 'get a path config item, expanded relative to repo root or config file' | |
231 | v = self.config(section, name, default, untrusted) |
|
231 | v = self.config(section, name, default, untrusted) | |
232 | if v is None: |
|
232 | if v is None: | |
233 | return None |
|
233 | return None | |
234 | if not os.path.isabs(v) or "://" not in v: |
|
234 | if not os.path.isabs(v) or "://" not in v: | |
235 | src = self.configsource(section, name, untrusted) |
|
235 | src = self.configsource(section, name, untrusted) | |
236 | if ':' in src: |
|
236 | if ':' in src: | |
237 | base = os.path.dirname(src.rsplit(':')[0]) |
|
237 | base = os.path.dirname(src.rsplit(':')[0]) | |
238 | v = os.path.join(base, os.path.expanduser(v)) |
|
238 | v = os.path.join(base, os.path.expanduser(v)) | |
239 | return v |
|
239 | return v | |
240 |
|
240 | |||
241 | def configbool(self, section, name, default=False, untrusted=False): |
|
241 | def configbool(self, section, name, default=False, untrusted=False): | |
242 | """parse a configuration element as a boolean |
|
242 | """parse a configuration element as a boolean | |
243 |
|
243 | |||
244 | >>> u = ui(); s = 'foo' |
|
244 | >>> u = ui(); s = 'foo' | |
245 | >>> u.setconfig(s, 'true', 'yes') |
|
245 | >>> u.setconfig(s, 'true', 'yes') | |
246 | >>> u.configbool(s, 'true') |
|
246 | >>> u.configbool(s, 'true') | |
247 | True |
|
247 | True | |
248 | >>> u.setconfig(s, 'false', 'no') |
|
248 | >>> u.setconfig(s, 'false', 'no') | |
249 | >>> u.configbool(s, 'false') |
|
249 | >>> u.configbool(s, 'false') | |
250 | False |
|
250 | False | |
251 | >>> u.configbool(s, 'unknown') |
|
251 | >>> u.configbool(s, 'unknown') | |
252 | False |
|
252 | False | |
253 | >>> u.configbool(s, 'unknown', True) |
|
253 | >>> u.configbool(s, 'unknown', True) | |
254 | True |
|
254 | True | |
255 | >>> u.setconfig(s, 'invalid', 'somevalue') |
|
255 | >>> u.setconfig(s, 'invalid', 'somevalue') | |
256 | >>> u.configbool(s, 'invalid') |
|
256 | >>> u.configbool(s, 'invalid') | |
257 | Traceback (most recent call last): |
|
257 | Traceback (most recent call last): | |
258 | ... |
|
258 | ... | |
259 | ConfigError: foo.invalid is not a boolean ('somevalue') |
|
259 | ConfigError: foo.invalid is not a boolean ('somevalue') | |
260 | """ |
|
260 | """ | |
261 |
|
261 | |||
262 | v = self.config(section, name, None, untrusted) |
|
262 | v = self.config(section, name, None, untrusted) | |
263 | if v is None: |
|
263 | if v is None: | |
264 | return default |
|
264 | return default | |
265 | if isinstance(v, bool): |
|
265 | if isinstance(v, bool): | |
266 | return v |
|
266 | return v | |
267 | b = util.parsebool(v) |
|
267 | b = util.parsebool(v) | |
268 | if b is None: |
|
268 | if b is None: | |
269 | raise error.ConfigError(_("%s.%s is not a boolean ('%s')") |
|
269 | raise error.ConfigError(_("%s.%s is not a boolean ('%s')") | |
270 | % (section, name, v)) |
|
270 | % (section, name, v)) | |
271 | return b |
|
271 | return b | |
272 |
|
272 | |||
273 | def configint(self, section, name, default=None, untrusted=False): |
|
273 | def configint(self, section, name, default=None, untrusted=False): | |
274 | """parse a configuration element as an integer |
|
274 | """parse a configuration element as an integer | |
275 |
|
275 | |||
276 | >>> u = ui(); s = 'foo' |
|
276 | >>> u = ui(); s = 'foo' | |
277 | >>> u.setconfig(s, 'int1', '42') |
|
277 | >>> u.setconfig(s, 'int1', '42') | |
278 | >>> u.configint(s, 'int1') |
|
278 | >>> u.configint(s, 'int1') | |
279 | 42 |
|
279 | 42 | |
280 | >>> u.setconfig(s, 'int2', '-42') |
|
280 | >>> u.setconfig(s, 'int2', '-42') | |
281 | >>> u.configint(s, 'int2') |
|
281 | >>> u.configint(s, 'int2') | |
282 | -42 |
|
282 | -42 | |
283 | >>> u.configint(s, 'unknown', 7) |
|
283 | >>> u.configint(s, 'unknown', 7) | |
284 | 7 |
|
284 | 7 | |
285 | >>> u.setconfig(s, 'invalid', 'somevalue') |
|
285 | >>> u.setconfig(s, 'invalid', 'somevalue') | |
286 | >>> u.configint(s, 'invalid') |
|
286 | >>> u.configint(s, 'invalid') | |
287 | Traceback (most recent call last): |
|
287 | Traceback (most recent call last): | |
288 | ... |
|
288 | ... | |
289 | ConfigError: foo.invalid is not an integer ('somevalue') |
|
289 | ConfigError: foo.invalid is not an integer ('somevalue') | |
290 | """ |
|
290 | """ | |
291 |
|
291 | |||
292 | v = self.config(section, name, None, untrusted) |
|
292 | v = self.config(section, name, None, untrusted) | |
293 | if v is None: |
|
293 | if v is None: | |
294 | return default |
|
294 | return default | |
295 | try: |
|
295 | try: | |
296 | return int(v) |
|
296 | return int(v) | |
297 | except ValueError: |
|
297 | except ValueError: | |
298 | raise error.ConfigError(_("%s.%s is not an integer ('%s')") |
|
298 | raise error.ConfigError(_("%s.%s is not an integer ('%s')") | |
299 | % (section, name, v)) |
|
299 | % (section, name, v)) | |
300 |
|
300 | |||
301 | def configbytes(self, section, name, default=0, untrusted=False): |
|
301 | def configbytes(self, section, name, default=0, untrusted=False): | |
302 | """parse a configuration element as a quantity in bytes |
|
302 | """parse a configuration element as a quantity in bytes | |
303 |
|
303 | |||
304 | Units can be specified as b (bytes), k or kb (kilobytes), m or |
|
304 | Units can be specified as b (bytes), k or kb (kilobytes), m or | |
305 | mb (megabytes), g or gb (gigabytes). |
|
305 | mb (megabytes), g or gb (gigabytes). | |
306 |
|
306 | |||
307 | >>> u = ui(); s = 'foo' |
|
307 | >>> u = ui(); s = 'foo' | |
308 | >>> u.setconfig(s, 'val1', '42') |
|
308 | >>> u.setconfig(s, 'val1', '42') | |
309 | >>> u.configbytes(s, 'val1') |
|
309 | >>> u.configbytes(s, 'val1') | |
310 | 42 |
|
310 | 42 | |
311 | >>> u.setconfig(s, 'val2', '42.5 kb') |
|
311 | >>> u.setconfig(s, 'val2', '42.5 kb') | |
312 | >>> u.configbytes(s, 'val2') |
|
312 | >>> u.configbytes(s, 'val2') | |
313 | 43520 |
|
313 | 43520 | |
314 | >>> u.configbytes(s, 'unknown', '7 MB') |
|
314 | >>> u.configbytes(s, 'unknown', '7 MB') | |
315 | 7340032 |
|
315 | 7340032 | |
316 | >>> u.setconfig(s, 'invalid', 'somevalue') |
|
316 | >>> u.setconfig(s, 'invalid', 'somevalue') | |
317 | >>> u.configbytes(s, 'invalid') |
|
317 | >>> u.configbytes(s, 'invalid') | |
318 | Traceback (most recent call last): |
|
318 | Traceback (most recent call last): | |
319 | ... |
|
319 | ... | |
320 | ConfigError: foo.invalid is not a byte quantity ('somevalue') |
|
320 | ConfigError: foo.invalid is not a byte quantity ('somevalue') | |
321 | """ |
|
321 | """ | |
322 |
|
322 | |||
323 | value = self.config(section, name) |
|
323 | value = self.config(section, name) | |
324 | if value is None: |
|
324 | if value is None: | |
325 | if not isinstance(default, str): |
|
325 | if not isinstance(default, str): | |
326 | return default |
|
326 | return default | |
327 | value = default |
|
327 | value = default | |
328 | try: |
|
328 | try: | |
329 | return util.sizetoint(value) |
|
329 | return util.sizetoint(value) | |
330 | except error.ParseError: |
|
330 | except error.ParseError: | |
331 | raise error.ConfigError(_("%s.%s is not a byte quantity ('%s')") |
|
331 | raise error.ConfigError(_("%s.%s is not a byte quantity ('%s')") | |
332 | % (section, name, value)) |
|
332 | % (section, name, value)) | |
333 |
|
333 | |||
334 | def configlist(self, section, name, default=None, untrusted=False): |
|
334 | def configlist(self, section, name, default=None, untrusted=False): | |
335 | """parse a configuration element as a list of comma/space separated |
|
335 | """parse a configuration element as a list of comma/space separated | |
336 | strings |
|
336 | strings | |
337 |
|
337 | |||
338 | >>> u = ui(); s = 'foo' |
|
338 | >>> u = ui(); s = 'foo' | |
339 | >>> u.setconfig(s, 'list1', 'this,is "a small" ,test') |
|
339 | >>> u.setconfig(s, 'list1', 'this,is "a small" ,test') | |
340 | >>> u.configlist(s, 'list1') |
|
340 | >>> u.configlist(s, 'list1') | |
341 | ['this', 'is', 'a small', 'test'] |
|
341 | ['this', 'is', 'a small', 'test'] | |
342 | """ |
|
342 | """ | |
343 |
|
343 | |||
344 | def _parse_plain(parts, s, offset): |
|
344 | def _parse_plain(parts, s, offset): | |
345 | whitespace = False |
|
345 | whitespace = False | |
346 | while offset < len(s) and (s[offset].isspace() or s[offset] == ','): |
|
346 | while offset < len(s) and (s[offset].isspace() or s[offset] == ','): | |
347 | whitespace = True |
|
347 | whitespace = True | |
348 | offset += 1 |
|
348 | offset += 1 | |
349 | if offset >= len(s): |
|
349 | if offset >= len(s): | |
350 | return None, parts, offset |
|
350 | return None, parts, offset | |
351 | if whitespace: |
|
351 | if whitespace: | |
352 | parts.append('') |
|
352 | parts.append('') | |
353 | if s[offset] == '"' and not parts[-1]: |
|
353 | if s[offset] == '"' and not parts[-1]: | |
354 | return _parse_quote, parts, offset + 1 |
|
354 | return _parse_quote, parts, offset + 1 | |
355 | elif s[offset] == '"' and parts[-1][-1] == '\\': |
|
355 | elif s[offset] == '"' and parts[-1][-1] == '\\': | |
356 | parts[-1] = parts[-1][:-1] + s[offset] |
|
356 | parts[-1] = parts[-1][:-1] + s[offset] | |
357 | return _parse_plain, parts, offset + 1 |
|
357 | return _parse_plain, parts, offset + 1 | |
358 | parts[-1] += s[offset] |
|
358 | parts[-1] += s[offset] | |
359 | return _parse_plain, parts, offset + 1 |
|
359 | return _parse_plain, parts, offset + 1 | |
360 |
|
360 | |||
361 | def _parse_quote(parts, s, offset): |
|
361 | def _parse_quote(parts, s, offset): | |
362 | if offset < len(s) and s[offset] == '"': # "" |
|
362 | if offset < len(s) and s[offset] == '"': # "" | |
363 | parts.append('') |
|
363 | parts.append('') | |
364 | offset += 1 |
|
364 | offset += 1 | |
365 | while offset < len(s) and (s[offset].isspace() or |
|
365 | while offset < len(s) and (s[offset].isspace() or | |
366 | s[offset] == ','): |
|
366 | s[offset] == ','): | |
367 | offset += 1 |
|
367 | offset += 1 | |
368 | return _parse_plain, parts, offset |
|
368 | return _parse_plain, parts, offset | |
369 |
|
369 | |||
370 | while offset < len(s) and s[offset] != '"': |
|
370 | while offset < len(s) and s[offset] != '"': | |
371 | if (s[offset] == '\\' and offset + 1 < len(s) |
|
371 | if (s[offset] == '\\' and offset + 1 < len(s) | |
372 | and s[offset + 1] == '"'): |
|
372 | and s[offset + 1] == '"'): | |
373 | offset += 1 |
|
373 | offset += 1 | |
374 | parts[-1] += '"' |
|
374 | parts[-1] += '"' | |
375 | else: |
|
375 | else: | |
376 | parts[-1] += s[offset] |
|
376 | parts[-1] += s[offset] | |
377 | offset += 1 |
|
377 | offset += 1 | |
378 |
|
378 | |||
379 | if offset >= len(s): |
|
379 | if offset >= len(s): | |
380 | real_parts = _configlist(parts[-1]) |
|
380 | real_parts = _configlist(parts[-1]) | |
381 | if not real_parts: |
|
381 | if not real_parts: | |
382 | parts[-1] = '"' |
|
382 | parts[-1] = '"' | |
383 | else: |
|
383 | else: | |
384 | real_parts[0] = '"' + real_parts[0] |
|
384 | real_parts[0] = '"' + real_parts[0] | |
385 | parts = parts[:-1] |
|
385 | parts = parts[:-1] | |
386 | parts.extend(real_parts) |
|
386 | parts.extend(real_parts) | |
387 | return None, parts, offset |
|
387 | return None, parts, offset | |
388 |
|
388 | |||
389 | offset += 1 |
|
389 | offset += 1 | |
390 | while offset < len(s) and s[offset] in [' ', ',']: |
|
390 | while offset < len(s) and s[offset] in [' ', ',']: | |
391 | offset += 1 |
|
391 | offset += 1 | |
392 |
|
392 | |||
393 | if offset < len(s): |
|
393 | if offset < len(s): | |
394 | if offset + 1 == len(s) and s[offset] == '"': |
|
394 | if offset + 1 == len(s) and s[offset] == '"': | |
395 | parts[-1] += '"' |
|
395 | parts[-1] += '"' | |
396 | offset += 1 |
|
396 | offset += 1 | |
397 | else: |
|
397 | else: | |
398 | parts.append('') |
|
398 | parts.append('') | |
399 | else: |
|
399 | else: | |
400 | return None, parts, offset |
|
400 | return None, parts, offset | |
401 |
|
401 | |||
402 | return _parse_plain, parts, offset |
|
402 | return _parse_plain, parts, offset | |
403 |
|
403 | |||
404 | def _configlist(s): |
|
404 | def _configlist(s): | |
405 | s = s.rstrip(' ,') |
|
405 | s = s.rstrip(' ,') | |
406 | if not s: |
|
406 | if not s: | |
407 | return [] |
|
407 | return [] | |
408 | parser, parts, offset = _parse_plain, [''], 0 |
|
408 | parser, parts, offset = _parse_plain, [''], 0 | |
409 | while parser: |
|
409 | while parser: | |
410 | parser, parts, offset = parser(parts, s, offset) |
|
410 | parser, parts, offset = parser(parts, s, offset) | |
411 | return parts |
|
411 | return parts | |
412 |
|
412 | |||
413 | result = self.config(section, name, untrusted=untrusted) |
|
413 | result = self.config(section, name, untrusted=untrusted) | |
414 | if result is None: |
|
414 | if result is None: | |
415 | result = default or [] |
|
415 | result = default or [] | |
416 | if isinstance(result, basestring): |
|
416 | if isinstance(result, basestring): | |
417 | result = _configlist(result.lstrip(' ,\n')) |
|
417 | result = _configlist(result.lstrip(' ,\n')) | |
418 | if result is None: |
|
418 | if result is None: | |
419 | result = default or [] |
|
419 | result = default or [] | |
420 | return result |
|
420 | return result | |
421 |
|
421 | |||
422 | def has_section(self, section, untrusted=False): |
|
422 | def has_section(self, section, untrusted=False): | |
423 | '''tell whether section exists in config.''' |
|
423 | '''tell whether section exists in config.''' | |
424 | return section in self._data(untrusted) |
|
424 | return section in self._data(untrusted) | |
425 |
|
425 | |||
426 | def configitems(self, section, untrusted=False): |
|
426 | def configitems(self, section, untrusted=False): | |
427 | items = self._data(untrusted).items(section) |
|
427 | items = self._data(untrusted).items(section) | |
428 | if self.debugflag and not untrusted and self._reportuntrusted: |
|
428 | if self.debugflag and not untrusted and self._reportuntrusted: | |
429 | for k, v in self._ucfg.items(section): |
|
429 | for k, v in self._ucfg.items(section): | |
430 | if self._tcfg.get(section, k) != v: |
|
430 | if self._tcfg.get(section, k) != v: | |
431 | self.debug("ignoring untrusted configuration option " |
|
431 | self.debug("ignoring untrusted configuration option " | |
432 | "%s.%s = %s\n" % (section, k, v)) |
|
432 | "%s.%s = %s\n" % (section, k, v)) | |
433 | return items |
|
433 | return items | |
434 |
|
434 | |||
435 | def walkconfig(self, untrusted=False): |
|
435 | def walkconfig(self, untrusted=False): | |
436 | cfg = self._data(untrusted) |
|
436 | cfg = self._data(untrusted) | |
437 | for section in cfg.sections(): |
|
437 | for section in cfg.sections(): | |
438 | for name, value in self.configitems(section, untrusted): |
|
438 | for name, value in self.configitems(section, untrusted): | |
439 | yield section, name, value |
|
439 | yield section, name, value | |
440 |
|
440 | |||
441 | def plain(self, feature=None): |
|
441 | def plain(self, feature=None): | |
442 | '''is plain mode active? |
|
442 | '''is plain mode active? | |
443 |
|
443 | |||
444 | Plain mode means that all configuration variables which affect |
|
444 | Plain mode means that all configuration variables which affect | |
445 | the behavior and output of Mercurial should be |
|
445 | the behavior and output of Mercurial should be | |
446 | ignored. Additionally, the output should be stable, |
|
446 | ignored. Additionally, the output should be stable, | |
447 | reproducible and suitable for use in scripts or applications. |
|
447 | reproducible and suitable for use in scripts or applications. | |
448 |
|
448 | |||
449 | The only way to trigger plain mode is by setting either the |
|
449 | The only way to trigger plain mode is by setting either the | |
450 | `HGPLAIN' or `HGPLAINEXCEPT' environment variables. |
|
450 | `HGPLAIN' or `HGPLAINEXCEPT' environment variables. | |
451 |
|
451 | |||
452 | The return value can either be |
|
452 | The return value can either be | |
453 | - False if HGPLAIN is not set, or feature is in HGPLAINEXCEPT |
|
453 | - False if HGPLAIN is not set, or feature is in HGPLAINEXCEPT | |
454 | - True otherwise |
|
454 | - True otherwise | |
455 | ''' |
|
455 | ''' | |
456 | if 'HGPLAIN' not in os.environ and 'HGPLAINEXCEPT' not in os.environ: |
|
456 | if 'HGPLAIN' not in os.environ and 'HGPLAINEXCEPT' not in os.environ: | |
457 | return False |
|
457 | return False | |
458 | exceptions = os.environ.get('HGPLAINEXCEPT', '').strip().split(',') |
|
458 | exceptions = os.environ.get('HGPLAINEXCEPT', '').strip().split(',') | |
459 | if feature and exceptions: |
|
459 | if feature and exceptions: | |
460 | return feature not in exceptions |
|
460 | return feature not in exceptions | |
461 | return True |
|
461 | return True | |
462 |
|
462 | |||
463 | def username(self): |
|
463 | def username(self): | |
464 | """Return default username to be used in commits. |
|
464 | """Return default username to be used in commits. | |
465 |
|
465 | |||
466 | Searched in this order: $HGUSER, [ui] section of hgrcs, $EMAIL |
|
466 | Searched in this order: $HGUSER, [ui] section of hgrcs, $EMAIL | |
467 | and stop searching if one of these is set. |
|
467 | and stop searching if one of these is set. | |
468 | If not found and ui.askusername is True, ask the user, else use |
|
468 | If not found and ui.askusername is True, ask the user, else use | |
469 | ($LOGNAME or $USER or $LNAME or $USERNAME) + "@full.hostname". |
|
469 | ($LOGNAME or $USER or $LNAME or $USERNAME) + "@full.hostname". | |
470 | """ |
|
470 | """ | |
471 | user = os.environ.get("HGUSER") |
|
471 | user = os.environ.get("HGUSER") | |
472 | if user is None: |
|
472 | if user is None: | |
473 | user = self.config("ui", ["username", "user"]) |
|
473 | user = self.config("ui", ["username", "user"]) | |
474 | if user is not None: |
|
474 | if user is not None: | |
475 | user = os.path.expandvars(user) |
|
475 | user = os.path.expandvars(user) | |
476 | if user is None: |
|
476 | if user is None: | |
477 | user = os.environ.get("EMAIL") |
|
477 | user = os.environ.get("EMAIL") | |
478 | if user is None and self.configbool("ui", "askusername"): |
|
478 | if user is None and self.configbool("ui", "askusername"): | |
479 | user = self.prompt(_("enter a commit username:"), default=None) |
|
479 | user = self.prompt(_("enter a commit username:"), default=None) | |
480 | if user is None and not self.interactive(): |
|
480 | if user is None and not self.interactive(): | |
481 | try: |
|
481 | try: | |
482 | user = '%s@%s' % (util.getuser(), socket.getfqdn()) |
|
482 | user = '%s@%s' % (util.getuser(), socket.getfqdn()) | |
483 | self.warn(_("no username found, using '%s' instead\n") % user) |
|
483 | self.warn(_("no username found, using '%s' instead\n") % user) | |
484 | except KeyError: |
|
484 | except KeyError: | |
485 | pass |
|
485 | pass | |
486 | if not user: |
|
486 | if not user: | |
487 | raise util.Abort(_('no username supplied'), |
|
487 | raise util.Abort(_('no username supplied'), | |
488 | hint=_('use "hg config --edit" ' |
|
488 | hint=_('use "hg config --edit" ' | |
489 | 'to set your username')) |
|
489 | 'to set your username')) | |
490 | if "\n" in user: |
|
490 | if "\n" in user: | |
491 | raise util.Abort(_("username %s contains a newline\n") % repr(user)) |
|
491 | raise util.Abort(_("username %s contains a newline\n") % repr(user)) | |
492 | return user |
|
492 | return user | |
493 |
|
493 | |||
494 | def shortuser(self, user): |
|
494 | def shortuser(self, user): | |
495 | """Return a short representation of a user name or email address.""" |
|
495 | """Return a short representation of a user name or email address.""" | |
496 | if not self.verbose: |
|
496 | if not self.verbose: | |
497 | user = util.shortuser(user) |
|
497 | user = util.shortuser(user) | |
498 | return user |
|
498 | return user | |
499 |
|
499 | |||
500 | def expandpath(self, loc, default=None): |
|
500 | def expandpath(self, loc, default=None): | |
501 | """Return repository location relative to cwd or from [paths]""" |
|
501 | """Return repository location relative to cwd or from [paths]""" | |
502 | if util.hasscheme(loc) or os.path.isdir(os.path.join(loc, '.hg')): |
|
502 | if util.hasscheme(loc) or os.path.isdir(os.path.join(loc, '.hg')): | |
503 | return loc |
|
503 | return loc | |
504 |
|
504 | |||
505 | path = self.config('paths', loc) |
|
505 | path = self.config('paths', loc) | |
506 | if not path and default is not None: |
|
506 | if not path and default is not None: | |
507 | path = self.config('paths', default) |
|
507 | path = self.config('paths', default) | |
508 | return path or loc |
|
508 | return path or loc | |
509 |
|
509 | |||
510 | def pushbuffer(self, error=False): |
|
510 | def pushbuffer(self, error=False): | |
511 | """install a buffer to capture standar output of the ui object |
|
511 | """install a buffer to capture standar output of the ui object | |
512 |
|
512 | |||
513 | If error is True, the error output will be captured too.""" |
|
513 | If error is True, the error output will be captured too.""" | |
514 | self._buffers.append([]) |
|
514 | self._buffers.append([]) | |
515 | self._bufferstates.append(error) |
|
515 | self._bufferstates.append(error) | |
516 |
|
516 | |||
517 | def popbuffer(self, labeled=False): |
|
517 | def popbuffer(self, labeled=False): | |
518 | '''pop the last buffer and return the buffered output |
|
518 | '''pop the last buffer and return the buffered output | |
519 |
|
519 | |||
520 | If labeled is True, any labels associated with buffered |
|
520 | If labeled is True, any labels associated with buffered | |
521 | output will be handled. By default, this has no effect |
|
521 | output will be handled. By default, this has no effect | |
522 | on the output returned, but extensions and GUI tools may |
|
522 | on the output returned, but extensions and GUI tools may | |
523 | handle this argument and returned styled output. If output |
|
523 | handle this argument and returned styled output. If output | |
524 | is being buffered so it can be captured and parsed or |
|
524 | is being buffered so it can be captured and parsed or | |
525 | processed, labeled should not be set to True. |
|
525 | processed, labeled should not be set to True. | |
526 | ''' |
|
526 | ''' | |
527 | self._bufferstates.pop() |
|
527 | self._bufferstates.pop() | |
528 | return "".join(self._buffers.pop()) |
|
528 | return "".join(self._buffers.pop()) | |
529 |
|
529 | |||
530 | def write(self, *args, **opts): |
|
530 | def write(self, *args, **opts): | |
531 | '''write args to output |
|
531 | '''write args to output | |
532 |
|
532 | |||
533 | By default, this method simply writes to the buffer or stdout, |
|
533 | By default, this method simply writes to the buffer or stdout, | |
534 | but extensions or GUI tools may override this method, |
|
534 | but extensions or GUI tools may override this method, | |
535 | write_err(), popbuffer(), and label() to style output from |
|
535 | write_err(), popbuffer(), and label() to style output from | |
536 | various parts of hg. |
|
536 | various parts of hg. | |
537 |
|
537 | |||
538 | An optional keyword argument, "label", can be passed in. |
|
538 | An optional keyword argument, "label", can be passed in. | |
539 | This should be a string containing label names separated by |
|
539 | This should be a string containing label names separated by | |
540 | space. Label names take the form of "topic.type". For example, |
|
540 | space. Label names take the form of "topic.type". For example, | |
541 | ui.debug() issues a label of "ui.debug". |
|
541 | ui.debug() issues a label of "ui.debug". | |
542 |
|
542 | |||
543 | When labeling output for a specific command, a label of |
|
543 | When labeling output for a specific command, a label of | |
544 | "cmdname.type" is recommended. For example, status issues |
|
544 | "cmdname.type" is recommended. For example, status issues | |
545 | a label of "status.modified" for modified files. |
|
545 | a label of "status.modified" for modified files. | |
546 | ''' |
|
546 | ''' | |
547 | if self._buffers: |
|
547 | if self._buffers: | |
548 | self._buffers[-1].extend([str(a) for a in args]) |
|
548 | self._buffers[-1].extend([str(a) for a in args]) | |
549 | else: |
|
549 | else: | |
550 | for a in args: |
|
550 | for a in args: | |
551 | self.fout.write(str(a)) |
|
551 | self.fout.write(str(a)) | |
552 |
|
552 | |||
553 | def write_err(self, *args, **opts): |
|
553 | def write_err(self, *args, **opts): | |
554 | try: |
|
554 | try: | |
555 | if self._bufferstates and self._bufferstates[-1]: |
|
555 | if self._bufferstates and self._bufferstates[-1]: | |
556 | return self.write(*args, **opts) |
|
556 | return self.write(*args, **opts) | |
557 | if not getattr(self.fout, 'closed', False): |
|
557 | if not getattr(self.fout, 'closed', False): | |
558 | self.fout.flush() |
|
558 | self.fout.flush() | |
559 | for a in args: |
|
559 | for a in args: | |
560 | self.ferr.write(str(a)) |
|
560 | self.ferr.write(str(a)) | |
561 | # stderr may be buffered under win32 when redirected to files, |
|
561 | # stderr may be buffered under win32 when redirected to files, | |
562 | # including stdout. |
|
562 | # including stdout. | |
563 | if not getattr(self.ferr, 'closed', False): |
|
563 | if not getattr(self.ferr, 'closed', False): | |
564 | self.ferr.flush() |
|
564 | self.ferr.flush() | |
565 | except IOError, inst: |
|
565 | except IOError, inst: | |
566 | if inst.errno not in (errno.EPIPE, errno.EIO, errno.EBADF): |
|
566 | if inst.errno not in (errno.EPIPE, errno.EIO, errno.EBADF): | |
567 | raise |
|
567 | raise | |
568 |
|
568 | |||
569 | def flush(self): |
|
569 | def flush(self): | |
570 | try: self.fout.flush() |
|
570 | try: self.fout.flush() | |
571 | except (IOError, ValueError): pass |
|
571 | except (IOError, ValueError): pass | |
572 | try: self.ferr.flush() |
|
572 | try: self.ferr.flush() | |
573 | except (IOError, ValueError): pass |
|
573 | except (IOError, ValueError): pass | |
574 |
|
574 | |||
575 | def _isatty(self, fh): |
|
575 | def _isatty(self, fh): | |
576 | if self.configbool('ui', 'nontty', False): |
|
576 | if self.configbool('ui', 'nontty', False): | |
577 | return False |
|
577 | return False | |
578 | return util.isatty(fh) |
|
578 | return util.isatty(fh) | |
579 |
|
579 | |||
580 | def interactive(self): |
|
580 | def interactive(self): | |
581 | '''is interactive input allowed? |
|
581 | '''is interactive input allowed? | |
582 |
|
582 | |||
583 | An interactive session is a session where input can be reasonably read |
|
583 | An interactive session is a session where input can be reasonably read | |
584 | from `sys.stdin'. If this function returns false, any attempt to read |
|
584 | from `sys.stdin'. If this function returns false, any attempt to read | |
585 | from stdin should fail with an error, unless a sensible default has been |
|
585 | from stdin should fail with an error, unless a sensible default has been | |
586 | specified. |
|
586 | specified. | |
587 |
|
587 | |||
588 | Interactiveness is triggered by the value of the `ui.interactive' |
|
588 | Interactiveness is triggered by the value of the `ui.interactive' | |
589 | configuration variable or - if it is unset - when `sys.stdin' points |
|
589 | configuration variable or - if it is unset - when `sys.stdin' points | |
590 | to a terminal device. |
|
590 | to a terminal device. | |
591 |
|
591 | |||
592 | This function refers to input only; for output, see `ui.formatted()'. |
|
592 | This function refers to input only; for output, see `ui.formatted()'. | |
593 | ''' |
|
593 | ''' | |
594 | i = self.configbool("ui", "interactive", None) |
|
594 | i = self.configbool("ui", "interactive", None) | |
595 | if i is None: |
|
595 | if i is None: | |
596 | # some environments replace stdin without implementing isatty |
|
596 | # some environments replace stdin without implementing isatty | |
597 | # usually those are non-interactive |
|
597 | # usually those are non-interactive | |
598 | return self._isatty(self.fin) |
|
598 | return self._isatty(self.fin) | |
599 |
|
599 | |||
600 | return i |
|
600 | return i | |
601 |
|
601 | |||
602 | def termwidth(self): |
|
602 | def termwidth(self): | |
603 | '''how wide is the terminal in columns? |
|
603 | '''how wide is the terminal in columns? | |
604 | ''' |
|
604 | ''' | |
605 | if 'COLUMNS' in os.environ: |
|
605 | if 'COLUMNS' in os.environ: | |
606 | try: |
|
606 | try: | |
607 | return int(os.environ['COLUMNS']) |
|
607 | return int(os.environ['COLUMNS']) | |
608 | except ValueError: |
|
608 | except ValueError: | |
609 | pass |
|
609 | pass | |
610 | return util.termwidth() |
|
610 | return util.termwidth() | |
611 |
|
611 | |||
612 | def formatted(self): |
|
612 | def formatted(self): | |
613 | '''should formatted output be used? |
|
613 | '''should formatted output be used? | |
614 |
|
614 | |||
615 | It is often desirable to format the output to suite the output medium. |
|
615 | It is often desirable to format the output to suite the output medium. | |
616 | Examples of this are truncating long lines or colorizing messages. |
|
616 | Examples of this are truncating long lines or colorizing messages. | |
617 | However, this is not often not desirable when piping output into other |
|
617 | However, this is not often not desirable when piping output into other | |
618 | utilities, e.g. `grep'. |
|
618 | utilities, e.g. `grep'. | |
619 |
|
619 | |||
620 | Formatted output is triggered by the value of the `ui.formatted' |
|
620 | Formatted output is triggered by the value of the `ui.formatted' | |
621 | configuration variable or - if it is unset - when `sys.stdout' points |
|
621 | configuration variable or - if it is unset - when `sys.stdout' points | |
622 | to a terminal device. Please note that `ui.formatted' should be |
|
622 | to a terminal device. Please note that `ui.formatted' should be | |
623 | considered an implementation detail; it is not intended for use outside |
|
623 | considered an implementation detail; it is not intended for use outside | |
624 | Mercurial or its extensions. |
|
624 | Mercurial or its extensions. | |
625 |
|
625 | |||
626 | This function refers to output only; for input, see `ui.interactive()'. |
|
626 | This function refers to output only; for input, see `ui.interactive()'. | |
627 | This function always returns false when in plain mode, see `ui.plain()'. |
|
627 | This function always returns false when in plain mode, see `ui.plain()'. | |
628 | ''' |
|
628 | ''' | |
629 | if self.plain(): |
|
629 | if self.plain(): | |
630 | return False |
|
630 | return False | |
631 |
|
631 | |||
632 | i = self.configbool("ui", "formatted", None) |
|
632 | i = self.configbool("ui", "formatted", None) | |
633 | if i is None: |
|
633 | if i is None: | |
634 | # some environments replace stdout without implementing isatty |
|
634 | # some environments replace stdout without implementing isatty | |
635 | # usually those are non-interactive |
|
635 | # usually those are non-interactive | |
636 | return self._isatty(self.fout) |
|
636 | return self._isatty(self.fout) | |
637 |
|
637 | |||
638 | return i |
|
638 | return i | |
639 |
|
639 | |||
640 | def _readline(self, prompt=''): |
|
640 | def _readline(self, prompt=''): | |
641 | if self._isatty(self.fin): |
|
641 | if self._isatty(self.fin): | |
642 | try: |
|
642 | try: | |
643 | # magically add command line editing support, where |
|
643 | # magically add command line editing support, where | |
644 | # available |
|
644 | # available | |
645 | import readline |
|
645 | import readline | |
646 | # force demandimport to really load the module |
|
646 | # force demandimport to really load the module | |
647 | readline.read_history_file |
|
647 | readline.read_history_file | |
648 | # windows sometimes raises something other than ImportError |
|
648 | # windows sometimes raises something other than ImportError | |
649 | except Exception: |
|
649 | except Exception: | |
650 | pass |
|
650 | pass | |
651 |
|
651 | |||
652 | # call write() so output goes through subclassed implementation |
|
652 | # call write() so output goes through subclassed implementation | |
653 | # e.g. color extension on Windows |
|
653 | # e.g. color extension on Windows | |
654 | self.write(prompt) |
|
654 | self.write(prompt) | |
655 |
|
655 | |||
656 | # instead of trying to emulate raw_input, swap (self.fin, |
|
656 | # instead of trying to emulate raw_input, swap (self.fin, | |
657 | # self.fout) with (sys.stdin, sys.stdout) |
|
657 | # self.fout) with (sys.stdin, sys.stdout) | |
658 | oldin = sys.stdin |
|
658 | oldin = sys.stdin | |
659 | oldout = sys.stdout |
|
659 | oldout = sys.stdout | |
660 | sys.stdin = self.fin |
|
660 | sys.stdin = self.fin | |
661 | sys.stdout = self.fout |
|
661 | sys.stdout = self.fout | |
662 | # prompt ' ' must exist; otherwise readline may delete entire line |
|
662 | # prompt ' ' must exist; otherwise readline may delete entire line | |
663 | # - http://bugs.python.org/issue12833 |
|
663 | # - http://bugs.python.org/issue12833 | |
664 | line = raw_input(' ') |
|
664 | line = raw_input(' ') | |
665 | sys.stdin = oldin |
|
665 | sys.stdin = oldin | |
666 | sys.stdout = oldout |
|
666 | sys.stdout = oldout | |
667 |
|
667 | |||
668 | # When stdin is in binary mode on Windows, it can cause |
|
668 | # When stdin is in binary mode on Windows, it can cause | |
669 | # raw_input() to emit an extra trailing carriage return |
|
669 | # raw_input() to emit an extra trailing carriage return | |
670 | if os.linesep == '\r\n' and line and line[-1] == '\r': |
|
670 | if os.linesep == '\r\n' and line and line[-1] == '\r': | |
671 | line = line[:-1] |
|
671 | line = line[:-1] | |
672 | return line |
|
672 | return line | |
673 |
|
673 | |||
674 | def prompt(self, msg, default="y"): |
|
674 | def prompt(self, msg, default="y"): | |
675 | """Prompt user with msg, read response. |
|
675 | """Prompt user with msg, read response. | |
676 | If ui is not interactive, the default is returned. |
|
676 | If ui is not interactive, the default is returned. | |
677 | """ |
|
677 | """ | |
678 | if not self.interactive(): |
|
678 | if not self.interactive(): | |
679 | self.write(msg, ' ', default, "\n") |
|
679 | self.write(msg, ' ', default, "\n") | |
680 | return default |
|
680 | return default | |
681 | try: |
|
681 | try: | |
682 | r = self._readline(self.label(msg, 'ui.prompt')) |
|
682 | r = self._readline(self.label(msg, 'ui.prompt')) | |
683 | if not r: |
|
683 | if not r: | |
684 |
r |
|
684 | r = default | |
|
685 | # sometimes self.interactive disagrees with isatty, | |||
|
686 | # show default response | |||
|
687 | if not util.isatty(self.fin): | |||
|
688 | self.write(r, "\n") | |||
685 | return r |
|
689 | return r | |
686 | except EOFError: |
|
690 | except EOFError: | |
687 | raise util.Abort(_('response expected')) |
|
691 | raise util.Abort(_('response expected')) | |
688 |
|
692 | |||
689 | @staticmethod |
|
693 | @staticmethod | |
690 | def extractchoices(prompt): |
|
694 | def extractchoices(prompt): | |
691 | """Extract prompt message and list of choices from specified prompt. |
|
695 | """Extract prompt message and list of choices from specified prompt. | |
692 |
|
696 | |||
693 | This returns tuple "(message, choices)", and "choices" is the |
|
697 | This returns tuple "(message, choices)", and "choices" is the | |
694 | list of tuple "(response character, text without &)". |
|
698 | list of tuple "(response character, text without &)". | |
695 | """ |
|
699 | """ | |
696 | parts = prompt.split('$$') |
|
700 | parts = prompt.split('$$') | |
697 | msg = parts[0].rstrip(' ') |
|
701 | msg = parts[0].rstrip(' ') | |
698 | choices = [p.strip(' ') for p in parts[1:]] |
|
702 | choices = [p.strip(' ') for p in parts[1:]] | |
699 | return (msg, |
|
703 | return (msg, | |
700 | [(s[s.index('&') + 1].lower(), s.replace('&', '', 1)) |
|
704 | [(s[s.index('&') + 1].lower(), s.replace('&', '', 1)) | |
701 | for s in choices]) |
|
705 | for s in choices]) | |
702 |
|
706 | |||
703 | def promptchoice(self, prompt, default=0): |
|
707 | def promptchoice(self, prompt, default=0): | |
704 | """Prompt user with a message, read response, and ensure it matches |
|
708 | """Prompt user with a message, read response, and ensure it matches | |
705 | one of the provided choices. The prompt is formatted as follows: |
|
709 | one of the provided choices. The prompt is formatted as follows: | |
706 |
|
710 | |||
707 | "would you like fries with that (Yn)? $$ &Yes $$ &No" |
|
711 | "would you like fries with that (Yn)? $$ &Yes $$ &No" | |
708 |
|
712 | |||
709 | The index of the choice is returned. Responses are case |
|
713 | The index of the choice is returned. Responses are case | |
710 | insensitive. If ui is not interactive, the default is |
|
714 | insensitive. If ui is not interactive, the default is | |
711 | returned. |
|
715 | returned. | |
712 | """ |
|
716 | """ | |
713 |
|
717 | |||
714 | msg, choices = self.extractchoices(prompt) |
|
718 | msg, choices = self.extractchoices(prompt) | |
715 | resps = [r for r, t in choices] |
|
719 | resps = [r for r, t in choices] | |
716 | while True: |
|
720 | while True: | |
717 | r = self.prompt(msg, resps[default]) |
|
721 | r = self.prompt(msg, resps[default]) | |
718 | if r.lower() in resps: |
|
722 | if r.lower() in resps: | |
719 | return resps.index(r.lower()) |
|
723 | return resps.index(r.lower()) | |
720 | self.write(_("unrecognized response\n")) |
|
724 | self.write(_("unrecognized response\n")) | |
721 |
|
725 | |||
722 | def getpass(self, prompt=None, default=None): |
|
726 | def getpass(self, prompt=None, default=None): | |
723 | if not self.interactive(): |
|
727 | if not self.interactive(): | |
724 | return default |
|
728 | return default | |
725 | try: |
|
729 | try: | |
726 | self.write_err(self.label(prompt or _('password: '), 'ui.prompt')) |
|
730 | self.write_err(self.label(prompt or _('password: '), 'ui.prompt')) | |
727 | # disable getpass() only if explicitly specified. it's still valid |
|
731 | # disable getpass() only if explicitly specified. it's still valid | |
728 | # to interact with tty even if fin is not a tty. |
|
732 | # to interact with tty even if fin is not a tty. | |
729 | if self.configbool('ui', 'nontty'): |
|
733 | if self.configbool('ui', 'nontty'): | |
730 | return self.fin.readline().rstrip('\n') |
|
734 | return self.fin.readline().rstrip('\n') | |
731 | else: |
|
735 | else: | |
732 | return getpass.getpass('') |
|
736 | return getpass.getpass('') | |
733 | except EOFError: |
|
737 | except EOFError: | |
734 | raise util.Abort(_('response expected')) |
|
738 | raise util.Abort(_('response expected')) | |
735 | def status(self, *msg, **opts): |
|
739 | def status(self, *msg, **opts): | |
736 | '''write status message to output (if ui.quiet is False) |
|
740 | '''write status message to output (if ui.quiet is False) | |
737 |
|
741 | |||
738 | This adds an output label of "ui.status". |
|
742 | This adds an output label of "ui.status". | |
739 | ''' |
|
743 | ''' | |
740 | if not self.quiet: |
|
744 | if not self.quiet: | |
741 | opts['label'] = opts.get('label', '') + ' ui.status' |
|
745 | opts['label'] = opts.get('label', '') + ' ui.status' | |
742 | self.write(*msg, **opts) |
|
746 | self.write(*msg, **opts) | |
743 | def warn(self, *msg, **opts): |
|
747 | def warn(self, *msg, **opts): | |
744 | '''write warning message to output (stderr) |
|
748 | '''write warning message to output (stderr) | |
745 |
|
749 | |||
746 | This adds an output label of "ui.warning". |
|
750 | This adds an output label of "ui.warning". | |
747 | ''' |
|
751 | ''' | |
748 | opts['label'] = opts.get('label', '') + ' ui.warning' |
|
752 | opts['label'] = opts.get('label', '') + ' ui.warning' | |
749 | self.write_err(*msg, **opts) |
|
753 | self.write_err(*msg, **opts) | |
750 | def note(self, *msg, **opts): |
|
754 | def note(self, *msg, **opts): | |
751 | '''write note to output (if ui.verbose is True) |
|
755 | '''write note to output (if ui.verbose is True) | |
752 |
|
756 | |||
753 | This adds an output label of "ui.note". |
|
757 | This adds an output label of "ui.note". | |
754 | ''' |
|
758 | ''' | |
755 | if self.verbose: |
|
759 | if self.verbose: | |
756 | opts['label'] = opts.get('label', '') + ' ui.note' |
|
760 | opts['label'] = opts.get('label', '') + ' ui.note' | |
757 | self.write(*msg, **opts) |
|
761 | self.write(*msg, **opts) | |
758 | def debug(self, *msg, **opts): |
|
762 | def debug(self, *msg, **opts): | |
759 | '''write debug message to output (if ui.debugflag is True) |
|
763 | '''write debug message to output (if ui.debugflag is True) | |
760 |
|
764 | |||
761 | This adds an output label of "ui.debug". |
|
765 | This adds an output label of "ui.debug". | |
762 | ''' |
|
766 | ''' | |
763 | if self.debugflag: |
|
767 | if self.debugflag: | |
764 | opts['label'] = opts.get('label', '') + ' ui.debug' |
|
768 | opts['label'] = opts.get('label', '') + ' ui.debug' | |
765 | self.write(*msg, **opts) |
|
769 | self.write(*msg, **opts) | |
766 | def edit(self, text, user, extra={}, editform=None): |
|
770 | def edit(self, text, user, extra={}, editform=None): | |
767 | (fd, name) = tempfile.mkstemp(prefix="hg-editor-", suffix=".txt", |
|
771 | (fd, name) = tempfile.mkstemp(prefix="hg-editor-", suffix=".txt", | |
768 | text=True) |
|
772 | text=True) | |
769 | try: |
|
773 | try: | |
770 | f = os.fdopen(fd, "w") |
|
774 | f = os.fdopen(fd, "w") | |
771 | f.write(text) |
|
775 | f.write(text) | |
772 | f.close() |
|
776 | f.close() | |
773 |
|
777 | |||
774 | environ = {'HGUSER': user} |
|
778 | environ = {'HGUSER': user} | |
775 | if 'transplant_source' in extra: |
|
779 | if 'transplant_source' in extra: | |
776 | environ.update({'HGREVISION': hex(extra['transplant_source'])}) |
|
780 | environ.update({'HGREVISION': hex(extra['transplant_source'])}) | |
777 | for label in ('source', 'rebase_source'): |
|
781 | for label in ('source', 'rebase_source'): | |
778 | if label in extra: |
|
782 | if label in extra: | |
779 | environ.update({'HGREVISION': extra[label]}) |
|
783 | environ.update({'HGREVISION': extra[label]}) | |
780 | break |
|
784 | break | |
781 | if editform: |
|
785 | if editform: | |
782 | environ.update({'HGEDITFORM': editform}) |
|
786 | environ.update({'HGEDITFORM': editform}) | |
783 |
|
787 | |||
784 | editor = self.geteditor() |
|
788 | editor = self.geteditor() | |
785 |
|
789 | |||
786 | util.system("%s \"%s\"" % (editor, name), |
|
790 | util.system("%s \"%s\"" % (editor, name), | |
787 | environ=environ, |
|
791 | environ=environ, | |
788 | onerr=util.Abort, errprefix=_("edit failed"), |
|
792 | onerr=util.Abort, errprefix=_("edit failed"), | |
789 | out=self.fout) |
|
793 | out=self.fout) | |
790 |
|
794 | |||
791 | f = open(name) |
|
795 | f = open(name) | |
792 | t = f.read() |
|
796 | t = f.read() | |
793 | f.close() |
|
797 | f.close() | |
794 | finally: |
|
798 | finally: | |
795 | os.unlink(name) |
|
799 | os.unlink(name) | |
796 |
|
800 | |||
797 | return t |
|
801 | return t | |
798 |
|
802 | |||
799 | def traceback(self, exc=None, force=False): |
|
803 | def traceback(self, exc=None, force=False): | |
800 | '''print exception traceback if traceback printing enabled or forced. |
|
804 | '''print exception traceback if traceback printing enabled or forced. | |
801 | only to call in exception handler. returns true if traceback |
|
805 | only to call in exception handler. returns true if traceback | |
802 | printed.''' |
|
806 | printed.''' | |
803 | if self.tracebackflag or force: |
|
807 | if self.tracebackflag or force: | |
804 | if exc is None: |
|
808 | if exc is None: | |
805 | exc = sys.exc_info() |
|
809 | exc = sys.exc_info() | |
806 | cause = getattr(exc[1], 'cause', None) |
|
810 | cause = getattr(exc[1], 'cause', None) | |
807 |
|
811 | |||
808 | if cause is not None: |
|
812 | if cause is not None: | |
809 | causetb = traceback.format_tb(cause[2]) |
|
813 | causetb = traceback.format_tb(cause[2]) | |
810 | exctb = traceback.format_tb(exc[2]) |
|
814 | exctb = traceback.format_tb(exc[2]) | |
811 | exconly = traceback.format_exception_only(cause[0], cause[1]) |
|
815 | exconly = traceback.format_exception_only(cause[0], cause[1]) | |
812 |
|
816 | |||
813 | # exclude frame where 'exc' was chained and rethrown from exctb |
|
817 | # exclude frame where 'exc' was chained and rethrown from exctb | |
814 | self.write_err('Traceback (most recent call last):\n', |
|
818 | self.write_err('Traceback (most recent call last):\n', | |
815 | ''.join(exctb[:-1]), |
|
819 | ''.join(exctb[:-1]), | |
816 | ''.join(causetb), |
|
820 | ''.join(causetb), | |
817 | ''.join(exconly)) |
|
821 | ''.join(exconly)) | |
818 | else: |
|
822 | else: | |
819 | traceback.print_exception(exc[0], exc[1], exc[2], |
|
823 | traceback.print_exception(exc[0], exc[1], exc[2], | |
820 | file=self.ferr) |
|
824 | file=self.ferr) | |
821 | return self.tracebackflag or force |
|
825 | return self.tracebackflag or force | |
822 |
|
826 | |||
823 | def geteditor(self): |
|
827 | def geteditor(self): | |
824 | '''return editor to use''' |
|
828 | '''return editor to use''' | |
825 | if sys.platform == 'plan9': |
|
829 | if sys.platform == 'plan9': | |
826 | # vi is the MIPS instruction simulator on Plan 9. We |
|
830 | # vi is the MIPS instruction simulator on Plan 9. We | |
827 | # instead default to E to plumb commit messages to |
|
831 | # instead default to E to plumb commit messages to | |
828 | # avoid confusion. |
|
832 | # avoid confusion. | |
829 | editor = 'E' |
|
833 | editor = 'E' | |
830 | else: |
|
834 | else: | |
831 | editor = 'vi' |
|
835 | editor = 'vi' | |
832 | return (os.environ.get("HGEDITOR") or |
|
836 | return (os.environ.get("HGEDITOR") or | |
833 | self.config("ui", "editor") or |
|
837 | self.config("ui", "editor") or | |
834 | os.environ.get("VISUAL") or |
|
838 | os.environ.get("VISUAL") or | |
835 | os.environ.get("EDITOR", editor)) |
|
839 | os.environ.get("EDITOR", editor)) | |
836 |
|
840 | |||
837 | def progress(self, topic, pos, item="", unit="", total=None): |
|
841 | def progress(self, topic, pos, item="", unit="", total=None): | |
838 | '''show a progress message |
|
842 | '''show a progress message | |
839 |
|
843 | |||
840 | With stock hg, this is simply a debug message that is hidden |
|
844 | With stock hg, this is simply a debug message that is hidden | |
841 | by default, but with extensions or GUI tools it may be |
|
845 | by default, but with extensions or GUI tools it may be | |
842 | visible. 'topic' is the current operation, 'item' is a |
|
846 | visible. 'topic' is the current operation, 'item' is a | |
843 | non-numeric marker of the current position (i.e. the currently |
|
847 | non-numeric marker of the current position (i.e. the currently | |
844 | in-process file), 'pos' is the current numeric position (i.e. |
|
848 | in-process file), 'pos' is the current numeric position (i.e. | |
845 | revision, bytes, etc.), unit is a corresponding unit label, |
|
849 | revision, bytes, etc.), unit is a corresponding unit label, | |
846 | and total is the highest expected pos. |
|
850 | and total is the highest expected pos. | |
847 |
|
851 | |||
848 | Multiple nested topics may be active at a time. |
|
852 | Multiple nested topics may be active at a time. | |
849 |
|
853 | |||
850 | All topics should be marked closed by setting pos to None at |
|
854 | All topics should be marked closed by setting pos to None at | |
851 | termination. |
|
855 | termination. | |
852 | ''' |
|
856 | ''' | |
853 |
|
857 | |||
854 | if pos is None or not self.debugflag: |
|
858 | if pos is None or not self.debugflag: | |
855 | return |
|
859 | return | |
856 |
|
860 | |||
857 | if unit: |
|
861 | if unit: | |
858 | unit = ' ' + unit |
|
862 | unit = ' ' + unit | |
859 | if item: |
|
863 | if item: | |
860 | item = ' ' + item |
|
864 | item = ' ' + item | |
861 |
|
865 | |||
862 | if total: |
|
866 | if total: | |
863 | pct = 100.0 * pos / total |
|
867 | pct = 100.0 * pos / total | |
864 | self.debug('%s:%s %s/%s%s (%4.2f%%)\n' |
|
868 | self.debug('%s:%s %s/%s%s (%4.2f%%)\n' | |
865 | % (topic, item, pos, total, unit, pct)) |
|
869 | % (topic, item, pos, total, unit, pct)) | |
866 | else: |
|
870 | else: | |
867 | self.debug('%s:%s %s%s\n' % (topic, item, pos, unit)) |
|
871 | self.debug('%s:%s %s%s\n' % (topic, item, pos, unit)) | |
868 |
|
872 | |||
869 | def log(self, service, *msg, **opts): |
|
873 | def log(self, service, *msg, **opts): | |
870 | '''hook for logging facility extensions |
|
874 | '''hook for logging facility extensions | |
871 |
|
875 | |||
872 | service should be a readily-identifiable subsystem, which will |
|
876 | service should be a readily-identifiable subsystem, which will | |
873 | allow filtering. |
|
877 | allow filtering. | |
874 | message should be a newline-terminated string to log. |
|
878 | message should be a newline-terminated string to log. | |
875 | ''' |
|
879 | ''' | |
876 | pass |
|
880 | pass | |
877 |
|
881 | |||
878 | def label(self, msg, label): |
|
882 | def label(self, msg, label): | |
879 | '''style msg based on supplied label |
|
883 | '''style msg based on supplied label | |
880 |
|
884 | |||
881 | Like ui.write(), this just returns msg unchanged, but extensions |
|
885 | Like ui.write(), this just returns msg unchanged, but extensions | |
882 | and GUI tools can override it to allow styling output without |
|
886 | and GUI tools can override it to allow styling output without | |
883 | writing it. |
|
887 | writing it. | |
884 |
|
888 | |||
885 | ui.write(s, 'label') is equivalent to |
|
889 | ui.write(s, 'label') is equivalent to | |
886 | ui.write(ui.label(s, 'label')). |
|
890 | ui.write(ui.label(s, 'label')). | |
887 | ''' |
|
891 | ''' | |
888 | return msg |
|
892 | return msg |
@@ -1,202 +1,206 | |||||
1 | Setup |
|
1 | Setup | |
2 |
|
2 | |||
3 | $ echo "[color]" >> $HGRCPATH |
|
3 | $ echo "[color]" >> $HGRCPATH | |
4 | $ echo "mode = ansi" >> $HGRCPATH |
|
4 | $ echo "mode = ansi" >> $HGRCPATH | |
5 | $ echo "[extensions]" >> $HGRCPATH |
|
5 | $ echo "[extensions]" >> $HGRCPATH | |
6 | $ echo "color=" >> $HGRCPATH |
|
6 | $ echo "color=" >> $HGRCPATH | |
7 | $ hg init repo |
|
7 | $ hg init repo | |
8 | $ cd repo |
|
8 | $ cd repo | |
9 | $ cat > a <<EOF |
|
9 | $ cat > a <<EOF | |
10 | > c |
|
10 | > c | |
11 | > c |
|
11 | > c | |
12 | > a |
|
12 | > a | |
13 | > a |
|
13 | > a | |
14 | > b |
|
14 | > b | |
15 | > a |
|
15 | > a | |
16 | > a |
|
16 | > a | |
17 | > c |
|
17 | > c | |
18 | > c |
|
18 | > c | |
19 | > EOF |
|
19 | > EOF | |
20 | $ hg ci -Am adda |
|
20 | $ hg ci -Am adda | |
21 | adding a |
|
21 | adding a | |
22 | $ cat > a <<EOF |
|
22 | $ cat > a <<EOF | |
23 | > c |
|
23 | > c | |
24 | > c |
|
24 | > c | |
25 | > a |
|
25 | > a | |
26 | > a |
|
26 | > a | |
27 | > dd |
|
27 | > dd | |
28 | > a |
|
28 | > a | |
29 | > a |
|
29 | > a | |
30 | > c |
|
30 | > c | |
31 | > c |
|
31 | > c | |
32 | > EOF |
|
32 | > EOF | |
33 |
|
33 | |||
34 | default context |
|
34 | default context | |
35 |
|
35 | |||
36 | $ hg diff --nodates --color=always |
|
36 | $ hg diff --nodates --color=always | |
37 | \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc) |
|
37 | \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc) | |
38 | \x1b[0;31;1m--- a/a\x1b[0m (esc) |
|
38 | \x1b[0;31;1m--- a/a\x1b[0m (esc) | |
39 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) |
|
39 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) | |
40 | \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) |
|
40 | \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) | |
41 | c |
|
41 | c | |
42 | a |
|
42 | a | |
43 | a |
|
43 | a | |
44 | \x1b[0;31m-b\x1b[0m (esc) |
|
44 | \x1b[0;31m-b\x1b[0m (esc) | |
45 | \x1b[0;32m+dd\x1b[0m (esc) |
|
45 | \x1b[0;32m+dd\x1b[0m (esc) | |
46 | a |
|
46 | a | |
47 | a |
|
47 | a | |
48 | c |
|
48 | c | |
49 |
|
49 | |||
50 | --unified=2 |
|
50 | --unified=2 | |
51 |
|
51 | |||
52 | $ hg diff --nodates -U 2 --color=always |
|
52 | $ hg diff --nodates -U 2 --color=always | |
53 | \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc) |
|
53 | \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc) | |
54 | \x1b[0;31;1m--- a/a\x1b[0m (esc) |
|
54 | \x1b[0;31;1m--- a/a\x1b[0m (esc) | |
55 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) |
|
55 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) | |
56 | \x1b[0;35m@@ -3,5 +3,5 @@\x1b[0m (esc) |
|
56 | \x1b[0;35m@@ -3,5 +3,5 @@\x1b[0m (esc) | |
57 | a |
|
57 | a | |
58 | a |
|
58 | a | |
59 | \x1b[0;31m-b\x1b[0m (esc) |
|
59 | \x1b[0;31m-b\x1b[0m (esc) | |
60 | \x1b[0;32m+dd\x1b[0m (esc) |
|
60 | \x1b[0;32m+dd\x1b[0m (esc) | |
61 | a |
|
61 | a | |
62 | a |
|
62 | a | |
63 |
|
63 | |||
64 | diffstat |
|
64 | diffstat | |
65 |
|
65 | |||
66 | $ hg diff --stat --color=always |
|
66 | $ hg diff --stat --color=always | |
67 | a | 2 \x1b[0;32m+\x1b[0m\x1b[0;31m-\x1b[0m (esc) |
|
67 | a | 2 \x1b[0;32m+\x1b[0m\x1b[0;31m-\x1b[0m (esc) | |
68 | 1 files changed, 1 insertions(+), 1 deletions(-) |
|
68 | 1 files changed, 1 insertions(+), 1 deletions(-) | |
69 | $ echo "record=" >> $HGRCPATH |
|
69 | $ echo "record=" >> $HGRCPATH | |
70 | $ echo "[ui]" >> $HGRCPATH |
|
70 | $ echo "[ui]" >> $HGRCPATH | |
71 | $ echo "interactive=true" >> $HGRCPATH |
|
71 | $ echo "interactive=true" >> $HGRCPATH | |
72 | $ echo "[diff]" >> $HGRCPATH |
|
72 | $ echo "[diff]" >> $HGRCPATH | |
73 | $ echo "git=True" >> $HGRCPATH |
|
73 | $ echo "git=True" >> $HGRCPATH | |
74 |
|
74 | |||
75 | #if execbit |
|
75 | #if execbit | |
76 |
|
76 | |||
77 | record |
|
77 | record | |
78 |
|
78 | |||
79 | $ chmod +x a |
|
79 | $ chmod +x a | |
80 | $ hg record --color=always -m moda a <<EOF |
|
80 | $ hg record --color=always -m moda a <<EOF | |
81 | > y |
|
81 | > y | |
82 | > y |
|
82 | > y | |
83 | > EOF |
|
83 | > EOF | |
84 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) |
|
84 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) | |
85 | \x1b[0;36;1mold mode 100644\x1b[0m (esc) |
|
85 | \x1b[0;36;1mold mode 100644\x1b[0m (esc) | |
86 | \x1b[0;36;1mnew mode 100755\x1b[0m (esc) |
|
86 | \x1b[0;36;1mnew mode 100755\x1b[0m (esc) | |
87 | 1 hunks, 1 lines changed |
|
87 | 1 hunks, 1 lines changed | |
88 | \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m (esc) |
|
88 | \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc) | |
|
89 | ||||
89 | \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) |
|
90 | \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) | |
90 | c |
|
91 | c | |
91 | a |
|
92 | a | |
92 | a |
|
93 | a | |
93 | \x1b[0;31m-b\x1b[0m (esc) |
|
94 | \x1b[0;31m-b\x1b[0m (esc) | |
94 | \x1b[0;32m+dd\x1b[0m (esc) |
|
95 | \x1b[0;32m+dd\x1b[0m (esc) | |
95 | a |
|
96 | a | |
96 | a |
|
97 | a | |
97 | c |
|
98 | c | |
98 | \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m (esc) |
|
99 | \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc) | |
|
100 | ||||
99 |
|
101 | |||
100 | $ echo "[extensions]" >> $HGRCPATH |
|
102 | $ echo "[extensions]" >> $HGRCPATH | |
101 | $ echo "mq=" >> $HGRCPATH |
|
103 | $ echo "mq=" >> $HGRCPATH | |
102 | $ hg rollback |
|
104 | $ hg rollback | |
103 | repository tip rolled back to revision 0 (undo commit) |
|
105 | repository tip rolled back to revision 0 (undo commit) | |
104 | working directory now based on revision 0 |
|
106 | working directory now based on revision 0 | |
105 |
|
107 | |||
106 | qrecord |
|
108 | qrecord | |
107 |
|
109 | |||
108 | $ hg qrecord --color=always -m moda patch <<EOF |
|
110 | $ hg qrecord --color=always -m moda patch <<EOF | |
109 | > y |
|
111 | > y | |
110 | > y |
|
112 | > y | |
111 | > EOF |
|
113 | > EOF | |
112 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) |
|
114 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) | |
113 | \x1b[0;36;1mold mode 100644\x1b[0m (esc) |
|
115 | \x1b[0;36;1mold mode 100644\x1b[0m (esc) | |
114 | \x1b[0;36;1mnew mode 100755\x1b[0m (esc) |
|
116 | \x1b[0;36;1mnew mode 100755\x1b[0m (esc) | |
115 | 1 hunks, 1 lines changed |
|
117 | 1 hunks, 1 lines changed | |
116 | \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m (esc) |
|
118 | \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc) | |
|
119 | ||||
117 | \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) |
|
120 | \x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc) | |
118 | c |
|
121 | c | |
119 | a |
|
122 | a | |
120 | a |
|
123 | a | |
121 | \x1b[0;31m-b\x1b[0m (esc) |
|
124 | \x1b[0;31m-b\x1b[0m (esc) | |
122 | \x1b[0;32m+dd\x1b[0m (esc) |
|
125 | \x1b[0;32m+dd\x1b[0m (esc) | |
123 | a |
|
126 | a | |
124 | a |
|
127 | a | |
125 | c |
|
128 | c | |
126 | \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m (esc) |
|
129 | \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc) | |
|
130 | ||||
127 |
|
131 | |||
128 | $ hg qpop -a |
|
132 | $ hg qpop -a | |
129 | popping patch |
|
133 | popping patch | |
130 | patch queue now empty |
|
134 | patch queue now empty | |
131 |
|
135 | |||
132 | #endif |
|
136 | #endif | |
133 |
|
137 | |||
134 | issue3712: test colorization of subrepo diff |
|
138 | issue3712: test colorization of subrepo diff | |
135 |
|
139 | |||
136 | $ hg init sub |
|
140 | $ hg init sub | |
137 | $ echo b > sub/b |
|
141 | $ echo b > sub/b | |
138 | $ hg -R sub commit -Am 'create sub' |
|
142 | $ hg -R sub commit -Am 'create sub' | |
139 | adding b |
|
143 | adding b | |
140 | $ echo 'sub = sub' > .hgsub |
|
144 | $ echo 'sub = sub' > .hgsub | |
141 | $ hg add .hgsub |
|
145 | $ hg add .hgsub | |
142 | $ hg commit -m 'add subrepo sub' |
|
146 | $ hg commit -m 'add subrepo sub' | |
143 | $ echo aa >> a |
|
147 | $ echo aa >> a | |
144 | $ echo bb >> sub/b |
|
148 | $ echo bb >> sub/b | |
145 |
|
149 | |||
146 | $ hg diff --color=always -S |
|
150 | $ hg diff --color=always -S | |
147 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) |
|
151 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) | |
148 | \x1b[0;31;1m--- a/a\x1b[0m (esc) |
|
152 | \x1b[0;31;1m--- a/a\x1b[0m (esc) | |
149 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) |
|
153 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) | |
150 | \x1b[0;35m@@ -7,3 +7,4 @@\x1b[0m (esc) |
|
154 | \x1b[0;35m@@ -7,3 +7,4 @@\x1b[0m (esc) | |
151 | a |
|
155 | a | |
152 | c |
|
156 | c | |
153 | c |
|
157 | c | |
154 | \x1b[0;32m+aa\x1b[0m (esc) |
|
158 | \x1b[0;32m+aa\x1b[0m (esc) | |
155 | \x1b[0;1mdiff --git a/sub/b b/sub/b\x1b[0m (esc) |
|
159 | \x1b[0;1mdiff --git a/sub/b b/sub/b\x1b[0m (esc) | |
156 | \x1b[0;31;1m--- a/sub/b\x1b[0m (esc) |
|
160 | \x1b[0;31;1m--- a/sub/b\x1b[0m (esc) | |
157 | \x1b[0;32;1m+++ b/sub/b\x1b[0m (esc) |
|
161 | \x1b[0;32;1m+++ b/sub/b\x1b[0m (esc) | |
158 | \x1b[0;35m@@ -1,1 +1,2 @@\x1b[0m (esc) |
|
162 | \x1b[0;35m@@ -1,1 +1,2 @@\x1b[0m (esc) | |
159 | b |
|
163 | b | |
160 | \x1b[0;32m+bb\x1b[0m (esc) |
|
164 | \x1b[0;32m+bb\x1b[0m (esc) | |
161 |
|
165 | |||
162 | test tabs |
|
166 | test tabs | |
163 |
|
167 | |||
164 | $ cat >> a <<EOF |
|
168 | $ cat >> a <<EOF | |
165 | > one tab |
|
169 | > one tab | |
166 | > two tabs |
|
170 | > two tabs | |
167 | > end tab |
|
171 | > end tab | |
168 | > mid tab |
|
172 | > mid tab | |
169 | > all tabs |
|
173 | > all tabs | |
170 | > EOF |
|
174 | > EOF | |
171 | $ hg diff --nodates --color=always |
|
175 | $ hg diff --nodates --color=always | |
172 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) |
|
176 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) | |
173 | \x1b[0;31;1m--- a/a\x1b[0m (esc) |
|
177 | \x1b[0;31;1m--- a/a\x1b[0m (esc) | |
174 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) |
|
178 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) | |
175 | \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc) |
|
179 | \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc) | |
176 | a |
|
180 | a | |
177 | c |
|
181 | c | |
178 | c |
|
182 | c | |
179 | \x1b[0;32m+aa\x1b[0m (esc) |
|
183 | \x1b[0;32m+aa\x1b[0m (esc) | |
180 | \x1b[0;32m+\x1b[0m \x1b[0;32mone tab\x1b[0m (esc) |
|
184 | \x1b[0;32m+\x1b[0m \x1b[0;32mone tab\x1b[0m (esc) | |
181 | \x1b[0;32m+\x1b[0m \x1b[0;32mtwo tabs\x1b[0m (esc) |
|
185 | \x1b[0;32m+\x1b[0m \x1b[0;32mtwo tabs\x1b[0m (esc) | |
182 | \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc) |
|
186 | \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc) | |
183 | \x1b[0;32m+mid\x1b[0m \x1b[0;32mtab\x1b[0m (esc) |
|
187 | \x1b[0;32m+mid\x1b[0m \x1b[0;32mtab\x1b[0m (esc) | |
184 | \x1b[0;32m+\x1b[0m \x1b[0;32mall\x1b[0m \x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc) |
|
188 | \x1b[0;32m+\x1b[0m \x1b[0;32mall\x1b[0m \x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc) | |
185 | $ echo "[color]" >> $HGRCPATH |
|
189 | $ echo "[color]" >> $HGRCPATH | |
186 | $ echo "diff.tab = bold magenta" >> $HGRCPATH |
|
190 | $ echo "diff.tab = bold magenta" >> $HGRCPATH | |
187 | $ hg diff --nodates --color=always |
|
191 | $ hg diff --nodates --color=always | |
188 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) |
|
192 | \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc) | |
189 | \x1b[0;31;1m--- a/a\x1b[0m (esc) |
|
193 | \x1b[0;31;1m--- a/a\x1b[0m (esc) | |
190 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) |
|
194 | \x1b[0;32;1m+++ b/a\x1b[0m (esc) | |
191 | \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc) |
|
195 | \x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc) | |
192 | a |
|
196 | a | |
193 | c |
|
197 | c | |
194 | c |
|
198 | c | |
195 | \x1b[0;32m+aa\x1b[0m (esc) |
|
199 | \x1b[0;32m+aa\x1b[0m (esc) | |
196 | \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mone tab\x1b[0m (esc) |
|
200 | \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mone tab\x1b[0m (esc) | |
197 | \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc) |
|
201 | \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc) | |
198 | \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc) |
|
202 | \x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc) | |
199 | \x1b[0;32m+mid\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtab\x1b[0m (esc) |
|
203 | \x1b[0;32m+mid\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtab\x1b[0m (esc) | |
200 | \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mall\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc) |
|
204 | \x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mall\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc) | |
201 |
|
205 | |||
202 | $ cd .. |
|
206 | $ cd .. |
@@ -1,369 +1,381 | |||||
1 |
|
1 | |||
2 | $ echo "[extensions]" >> $HGRCPATH |
|
2 | $ echo "[extensions]" >> $HGRCPATH | |
3 | $ echo "largefiles =" >> $HGRCPATH |
|
3 | $ echo "largefiles =" >> $HGRCPATH | |
4 |
|
4 | |||
5 | Create the repository outside $HOME since largefiles write to |
|
5 | Create the repository outside $HOME since largefiles write to | |
6 | $HOME/.cache/largefiles. |
|
6 | $HOME/.cache/largefiles. | |
7 |
|
7 | |||
8 | $ hg init test |
|
8 | $ hg init test | |
9 | $ cd test |
|
9 | $ cd test | |
10 | $ echo "root" > root |
|
10 | $ echo "root" > root | |
11 | $ hg add root |
|
11 | $ hg add root | |
12 | $ hg commit -m "Root commit" |
|
12 | $ hg commit -m "Root commit" | |
13 |
|
13 | |||
14 | $ echo "large" > foo |
|
14 | $ echo "large" > foo | |
15 | $ hg add --large foo |
|
15 | $ hg add --large foo | |
16 | $ hg commit -m "Add foo as a largefile" |
|
16 | $ hg commit -m "Add foo as a largefile" | |
17 |
|
17 | |||
18 | $ hg update -r 0 |
|
18 | $ hg update -r 0 | |
19 | getting changed largefiles |
|
19 | getting changed largefiles | |
20 | 0 largefiles updated, 1 removed |
|
20 | 0 largefiles updated, 1 removed | |
21 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
21 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
22 |
|
22 | |||
23 | $ echo "normal" > foo |
|
23 | $ echo "normal" > foo | |
24 | $ hg add foo |
|
24 | $ hg add foo | |
25 | $ hg commit -m "Add foo as normal file" |
|
25 | $ hg commit -m "Add foo as normal file" | |
26 | created new head |
|
26 | created new head | |
27 |
|
27 | |||
28 | Normal file in the working copy, keeping the normal version: |
|
28 | Normal file in the working copy, keeping the normal version: | |
29 |
|
29 | |||
30 | $ echo "n" | hg merge --config ui.interactive=Yes |
|
30 | $ echo "n" | hg merge --config ui.interactive=Yes | |
31 | remote turned local normal file foo into a largefile |
|
31 | remote turned local normal file foo into a largefile | |
32 |
use (l)argefile or keep (n)ormal file? |
|
32 | use (l)argefile or keep (n)ormal file? n | |
|
33 | getting changed largefiles | |||
33 | 0 largefiles updated, 0 removed |
|
34 | 0 largefiles updated, 0 removed | |
34 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
35 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
35 | (branch merge, don't forget to commit) |
|
36 | (branch merge, don't forget to commit) | |
36 |
|
37 | |||
37 | $ hg status |
|
38 | $ hg status | |
38 | $ cat foo |
|
39 | $ cat foo | |
39 | normal |
|
40 | normal | |
40 |
|
41 | |||
41 | Normal file in the working copy, keeping the largefile version: |
|
42 | Normal file in the working copy, keeping the largefile version: | |
42 |
|
43 | |||
43 | $ hg update -q -C |
|
44 | $ hg update -q -C | |
44 | $ echo "l" | hg merge --config ui.interactive=Yes |
|
45 | $ echo "l" | hg merge --config ui.interactive=Yes | |
45 | remote turned local normal file foo into a largefile |
|
46 | remote turned local normal file foo into a largefile | |
46 |
use (l)argefile or keep (n)ormal file? |
|
47 | use (l)argefile or keep (n)ormal file? l | |
|
48 | getting changed largefiles | |||
47 | 1 largefiles updated, 0 removed |
|
49 | 1 largefiles updated, 0 removed | |
48 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
50 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
49 | (branch merge, don't forget to commit) |
|
51 | (branch merge, don't forget to commit) | |
50 |
|
52 | |||
51 | $ hg status |
|
53 | $ hg status | |
52 | M foo |
|
54 | M foo | |
53 |
|
55 | |||
54 | $ hg diff --nodates |
|
56 | $ hg diff --nodates | |
55 | diff -r fa129ab6b5a7 .hglf/foo |
|
57 | diff -r fa129ab6b5a7 .hglf/foo | |
56 | --- /dev/null |
|
58 | --- /dev/null | |
57 | +++ b/.hglf/foo |
|
59 | +++ b/.hglf/foo | |
58 | @@ -0,0 +1,1 @@ |
|
60 | @@ -0,0 +1,1 @@ | |
59 | +7f7097b041ccf68cc5561e9600da4655d21c6d18 |
|
61 | +7f7097b041ccf68cc5561e9600da4655d21c6d18 | |
60 | diff -r fa129ab6b5a7 foo |
|
62 | diff -r fa129ab6b5a7 foo | |
61 | --- a/foo |
|
63 | --- a/foo | |
62 | +++ /dev/null |
|
64 | +++ /dev/null | |
63 | @@ -1,1 +0,0 @@ |
|
65 | @@ -1,1 +0,0 @@ | |
64 | -normal |
|
66 | -normal | |
65 |
|
67 | |||
66 | $ cat foo |
|
68 | $ cat foo | |
67 | large |
|
69 | large | |
68 |
|
70 | |||
69 | Largefile in the working copy, keeping the normal version: |
|
71 | Largefile in the working copy, keeping the normal version: | |
70 |
|
72 | |||
71 | $ hg update -q -C -r 1 |
|
73 | $ hg update -q -C -r 1 | |
72 | $ echo "n" | hg merge --config ui.interactive=Yes |
|
74 | $ echo "n" | hg merge --config ui.interactive=Yes | |
73 | remote turned local largefile foo into a normal file |
|
75 | remote turned local largefile foo into a normal file | |
74 |
keep (l)argefile or use (n)ormal file? |
|
76 | keep (l)argefile or use (n)ormal file? n | |
|
77 | getting changed largefiles | |||
75 | 0 largefiles updated, 0 removed |
|
78 | 0 largefiles updated, 0 removed | |
76 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
79 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
77 | (branch merge, don't forget to commit) |
|
80 | (branch merge, don't forget to commit) | |
78 |
|
81 | |||
79 | $ hg status |
|
82 | $ hg status | |
80 | M foo |
|
83 | M foo | |
81 |
|
84 | |||
82 | $ hg diff --nodates |
|
85 | $ hg diff --nodates | |
83 | diff -r ff521236428a .hglf/foo |
|
86 | diff -r ff521236428a .hglf/foo | |
84 | --- a/.hglf/foo |
|
87 | --- a/.hglf/foo | |
85 | +++ /dev/null |
|
88 | +++ /dev/null | |
86 | @@ -1,1 +0,0 @@ |
|
89 | @@ -1,1 +0,0 @@ | |
87 | -7f7097b041ccf68cc5561e9600da4655d21c6d18 |
|
90 | -7f7097b041ccf68cc5561e9600da4655d21c6d18 | |
88 | diff -r ff521236428a foo |
|
91 | diff -r ff521236428a foo | |
89 | --- /dev/null |
|
92 | --- /dev/null | |
90 | +++ b/foo |
|
93 | +++ b/foo | |
91 | @@ -0,0 +1,1 @@ |
|
94 | @@ -0,0 +1,1 @@ | |
92 | +normal |
|
95 | +normal | |
93 |
|
96 | |||
94 | $ cat foo |
|
97 | $ cat foo | |
95 | normal |
|
98 | normal | |
96 |
|
99 | |||
97 | Largefile in the working copy, keeping the largefile version: |
|
100 | Largefile in the working copy, keeping the largefile version: | |
98 |
|
101 | |||
99 | $ hg update -q -C -r 1 |
|
102 | $ hg update -q -C -r 1 | |
100 | $ echo "l" | hg merge --config ui.interactive=Yes |
|
103 | $ echo "l" | hg merge --config ui.interactive=Yes | |
101 | remote turned local largefile foo into a normal file |
|
104 | remote turned local largefile foo into a normal file | |
102 |
keep (l)argefile or use (n)ormal file? |
|
105 | keep (l)argefile or use (n)ormal file? l | |
|
106 | getting changed largefiles | |||
103 | 1 largefiles updated, 0 removed |
|
107 | 1 largefiles updated, 0 removed | |
104 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
108 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
105 | (branch merge, don't forget to commit) |
|
109 | (branch merge, don't forget to commit) | |
106 |
|
110 | |||
107 | $ hg status |
|
111 | $ hg status | |
108 |
|
112 | |||
109 | $ cat foo |
|
113 | $ cat foo | |
110 | large |
|
114 | large | |
111 |
|
115 | |||
112 | Whatever ... commit something so we can invoke merge when updating |
|
116 | Whatever ... commit something so we can invoke merge when updating | |
113 |
|
117 | |||
114 | $ hg commit -m '3: Merge' |
|
118 | $ hg commit -m '3: Merge' | |
115 |
|
119 | |||
116 | Updating from largefile to normal - no reason to prompt |
|
120 | Updating from largefile to normal - no reason to prompt | |
117 |
|
121 | |||
118 | $ hg up -r 2 |
|
122 | $ hg up -r 2 | |
119 | getting changed largefiles |
|
123 | getting changed largefiles | |
120 | 0 largefiles updated, 0 removed |
|
124 | 0 largefiles updated, 0 removed | |
121 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
125 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
122 | $ cat foo |
|
126 | $ cat foo | |
123 | normal |
|
127 | normal | |
124 |
|
128 | |||
125 | (the update above used to leave the working dir in a very weird state - clean it |
|
129 | (the update above used to leave the working dir in a very weird state - clean it | |
126 | $ hg up -qr null |
|
130 | $ hg up -qr null | |
127 | $ hg up -qr 2 |
|
131 | $ hg up -qr 2 | |
128 | ) |
|
132 | ) | |
129 |
|
133 | |||
130 | Updating from normal to largefile - no reason to prompt |
|
134 | Updating from normal to largefile - no reason to prompt | |
131 |
|
135 | |||
132 | $ hg up -r 3 |
|
136 | $ hg up -r 3 | |
133 | getting changed largefiles |
|
137 | getting changed largefiles | |
134 | 1 largefiles updated, 0 removed |
|
138 | 1 largefiles updated, 0 removed | |
135 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
139 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
136 | $ cat foo |
|
140 | $ cat foo | |
137 | large |
|
141 | large | |
138 |
|
142 | |||
139 | $ cd .. |
|
143 | $ cd .. | |
140 |
|
144 | |||
141 |
|
145 | |||
142 | Systematic testing of merges involving largefiles: |
|
146 | Systematic testing of merges involving largefiles: | |
143 |
|
147 | |||
144 | Ancestor: normal Parent: normal= Parent: large result: large |
|
148 | Ancestor: normal Parent: normal= Parent: large result: large | |
145 | Ancestor: normal Parent: normal2 Parent: large result: ? |
|
149 | Ancestor: normal Parent: normal2 Parent: large result: ? | |
146 | Ancestor: large Parent: large= Parent: normal result: normal |
|
150 | Ancestor: large Parent: large= Parent: normal result: normal | |
147 | Ancestor: large Parent: large2 Parent: normal result: ? |
|
151 | Ancestor: large Parent: large2 Parent: normal result: ? | |
148 |
|
152 | |||
149 | All cases should try merging both ways. |
|
153 | All cases should try merging both ways. | |
150 | "=" means same file content. |
|
154 | "=" means same file content. | |
151 |
|
155 | |||
152 | Prepare test repo: |
|
156 | Prepare test repo: | |
153 |
|
157 | |||
154 | $ hg init merges |
|
158 | $ hg init merges | |
155 | $ cd merges |
|
159 | $ cd merges | |
156 | $ touch f1 |
|
160 | $ touch f1 | |
157 | $ hg ci -Aqm "0-root" --config extensions.largefiles=! |
|
161 | $ hg ci -Aqm "0-root" --config extensions.largefiles=! | |
158 |
|
162 | |||
159 | Ensure that .hg/largefiles isn't created before largefiles are added |
|
163 | Ensure that .hg/largefiles isn't created before largefiles are added | |
160 | #if unix-permissions |
|
164 | #if unix-permissions | |
161 | $ chmod 555 .hg |
|
165 | $ chmod 555 .hg | |
162 | #endif |
|
166 | #endif | |
163 | $ hg status |
|
167 | $ hg status | |
164 | #if unix-permissions |
|
168 | #if unix-permissions | |
165 | $ chmod 755 .hg |
|
169 | $ chmod 755 .hg | |
166 | #endif |
|
170 | #endif | |
167 |
|
171 | |||
168 | $ test -f .hg/largefiles |
|
172 | $ test -f .hg/largefiles | |
169 | [1] |
|
173 | [1] | |
170 |
|
174 | |||
171 | ancestor is "normal": |
|
175 | ancestor is "normal": | |
172 | $ echo normal > f |
|
176 | $ echo normal > f | |
173 | $ hg ci -Aqm "1-normal-ancestor" |
|
177 | $ hg ci -Aqm "1-normal-ancestor" | |
174 | $ touch f2 |
|
178 | $ touch f2 | |
175 | $ hg ci -Aqm "2-normal-unchanged" |
|
179 | $ hg ci -Aqm "2-normal-unchanged" | |
176 | $ hg tag -l "normal=" |
|
180 | $ hg tag -l "normal=" | |
177 | $ echo normal2 > f |
|
181 | $ echo normal2 > f | |
178 | $ hg ci -m "3-normal2" |
|
182 | $ hg ci -m "3-normal2" | |
179 | $ hg tag -l "normal2" |
|
183 | $ hg tag -l "normal2" | |
180 | $ hg up -qr 1 |
|
184 | $ hg up -qr 1 | |
181 | $ hg rm f |
|
185 | $ hg rm f | |
182 | $ echo large > f |
|
186 | $ echo large > f | |
183 | $ hg add --large f |
|
187 | $ hg add --large f | |
184 | $ hg ci -qm "4-normal-to-large" |
|
188 | $ hg ci -qm "4-normal-to-large" | |
185 | $ hg tag -l "large" |
|
189 | $ hg tag -l "large" | |
186 |
|
190 | |||
187 | $ hg up -qr null |
|
191 | $ hg up -qr null | |
188 |
|
192 | |||
189 | ancestor is "large": |
|
193 | ancestor is "large": | |
190 | $ echo large > f |
|
194 | $ echo large > f | |
191 | $ hg add --large f |
|
195 | $ hg add --large f | |
192 | $ hg ci -qm "5-large-ancestor" |
|
196 | $ hg ci -qm "5-large-ancestor" | |
193 | $ touch f2 |
|
197 | $ touch f2 | |
194 | $ hg ci -Aqm "6-large-unchanged" |
|
198 | $ hg ci -Aqm "6-large-unchanged" | |
195 | $ hg tag -l "large=" |
|
199 | $ hg tag -l "large=" | |
196 | $ echo large2 > f |
|
200 | $ echo large2 > f | |
197 | $ hg ci -m "7-large2" |
|
201 | $ hg ci -m "7-large2" | |
198 | $ hg tag -l "large2" |
|
202 | $ hg tag -l "large2" | |
199 | $ hg up -qr 5 |
|
203 | $ hg up -qr 5 | |
200 | $ hg rm f |
|
204 | $ hg rm f | |
201 | $ echo normal > f |
|
205 | $ echo normal > f | |
202 | $ hg ci -qAm "8-large-to-normal" |
|
206 | $ hg ci -qAm "8-large-to-normal" | |
203 | $ hg tag -l "normal" |
|
207 | $ hg tag -l "normal" | |
204 |
|
208 | |||
205 | Ancestor: normal Parent: normal= Parent: large result: large |
|
209 | Ancestor: normal Parent: normal= Parent: large result: large | |
206 |
|
210 | |||
207 | $ hg up -Cqr normal= |
|
211 | $ hg up -Cqr normal= | |
208 | $ hg merge -r large |
|
212 | $ hg merge -r large | |
209 | getting changed largefiles |
|
213 | getting changed largefiles | |
210 | 1 largefiles updated, 0 removed |
|
214 | 1 largefiles updated, 0 removed | |
211 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
215 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
212 | (branch merge, don't forget to commit) |
|
216 | (branch merge, don't forget to commit) | |
213 | $ cat f |
|
217 | $ cat f | |
214 | large |
|
218 | large | |
215 |
|
219 | |||
216 | swap |
|
220 | swap | |
217 |
|
221 | |||
218 | $ hg up -Cqr large |
|
222 | $ hg up -Cqr large | |
219 | $ hg merge -r normal= |
|
223 | $ hg merge -r normal= | |
220 | getting changed largefiles |
|
224 | getting changed largefiles | |
221 | 0 largefiles updated, 0 removed |
|
225 | 0 largefiles updated, 0 removed | |
222 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
226 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
223 | (branch merge, don't forget to commit) |
|
227 | (branch merge, don't forget to commit) | |
224 | $ cat f |
|
228 | $ cat f | |
225 | large |
|
229 | large | |
226 |
|
230 | |||
227 | Ancestor: normal Parent: normal2 Parent: large result: ? |
|
231 | Ancestor: normal Parent: normal2 Parent: large result: ? | |
228 | (annoying extra prompt ... but it do not do any serious harm) |
|
232 | (annoying extra prompt ... but it do not do any serious harm) | |
229 |
|
233 | |||
230 | $ hg up -Cqr normal2 |
|
234 | $ hg up -Cqr normal2 | |
231 | $ hg merge -r large |
|
235 | $ hg merge -r large | |
232 | local changed f which remote deleted |
|
236 | local changed f which remote deleted | |
233 | use (c)hanged version or (d)elete? c |
|
237 | use (c)hanged version or (d)elete? c | |
234 | remote turned local normal file f into a largefile |
|
238 | remote turned local normal file f into a largefile | |
235 | use (l)argefile or keep (n)ormal file? l |
|
239 | use (l)argefile or keep (n)ormal file? l | |
236 | getting changed largefiles |
|
240 | getting changed largefiles | |
237 | 1 largefiles updated, 0 removed |
|
241 | 1 largefiles updated, 0 removed | |
238 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
242 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
239 | (branch merge, don't forget to commit) |
|
243 | (branch merge, don't forget to commit) | |
240 | $ cat f |
|
244 | $ cat f | |
241 | large |
|
245 | large | |
242 |
|
246 | |||
243 | $ hg up -Cqr normal2 |
|
247 | $ hg up -Cqr normal2 | |
244 | $ ( echo c; echo n ) | hg merge -r large --config ui.interactive=Yes |
|
248 | $ ( echo c; echo n ) | hg merge -r large --config ui.interactive=Yes | |
245 | local changed f which remote deleted |
|
249 | local changed f which remote deleted | |
246 |
use (c)hanged version or (d)elete? |
|
250 | use (c)hanged version or (d)elete? c | |
247 | use (l)argefile or keep (n)ormal file? getting changed largefiles |
|
251 | remote turned local normal file f into a largefile | |
|
252 | use (l)argefile or keep (n)ormal file? n | |||
|
253 | getting changed largefiles | |||
248 | 0 largefiles updated, 0 removed |
|
254 | 0 largefiles updated, 0 removed | |
249 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
255 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
250 | (branch merge, don't forget to commit) |
|
256 | (branch merge, don't forget to commit) | |
251 | $ cat f |
|
257 | $ cat f | |
252 | normal2 |
|
258 | normal2 | |
253 |
|
259 | |||
254 | $ hg up -Cqr normal2 |
|
260 | $ hg up -Cqr normal2 | |
255 | $ echo d | hg merge -r large --config ui.interactive=Yes |
|
261 | $ echo d | hg merge -r large --config ui.interactive=Yes | |
256 | local changed f which remote deleted |
|
262 | local changed f which remote deleted | |
257 |
use (c)hanged version or (d)elete? |
|
263 | use (c)hanged version or (d)elete? d | |
|
264 | getting changed largefiles | |||
258 | 1 largefiles updated, 0 removed |
|
265 | 1 largefiles updated, 0 removed | |
259 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
266 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
260 | (branch merge, don't forget to commit) |
|
267 | (branch merge, don't forget to commit) | |
261 | $ cat f |
|
268 | $ cat f | |
262 | large |
|
269 | large | |
263 |
|
270 | |||
264 | swap |
|
271 | swap | |
265 |
|
272 | |||
266 | $ hg up -Cqr large |
|
273 | $ hg up -Cqr large | |
267 | $ hg merge -r normal2 |
|
274 | $ hg merge -r normal2 | |
268 | remote changed f which local deleted |
|
275 | remote changed f which local deleted | |
269 | use (c)hanged version or leave (d)eleted? c |
|
276 | use (c)hanged version or leave (d)eleted? c | |
270 | remote turned local largefile f into a normal file |
|
277 | remote turned local largefile f into a normal file | |
271 | keep (l)argefile or use (n)ormal file? l |
|
278 | keep (l)argefile or use (n)ormal file? l | |
272 | getting changed largefiles |
|
279 | getting changed largefiles | |
273 | 1 largefiles updated, 0 removed |
|
280 | 1 largefiles updated, 0 removed | |
274 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
281 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
275 | (branch merge, don't forget to commit) |
|
282 | (branch merge, don't forget to commit) | |
276 | $ cat f |
|
283 | $ cat f | |
277 | large |
|
284 | large | |
278 |
|
285 | |||
279 | $ hg up -Cqr large |
|
286 | $ hg up -Cqr large | |
280 | $ ( echo c; echo n ) | hg merge -r normal2 --config ui.interactive=Yes |
|
287 | $ ( echo c; echo n ) | hg merge -r normal2 --config ui.interactive=Yes | |
281 | remote changed f which local deleted |
|
288 | remote changed f which local deleted | |
282 |
use (c)hanged version or leave (d)eleted? |
|
289 | use (c)hanged version or leave (d)eleted? c | |
283 | keep (l)argefile or use (n)ormal file? getting changed largefiles |
|
290 | remote turned local largefile f into a normal file | |
|
291 | keep (l)argefile or use (n)ormal file? n | |||
|
292 | getting changed largefiles | |||
284 | 0 largefiles updated, 0 removed |
|
293 | 0 largefiles updated, 0 removed | |
285 | 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
294 | 2 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
286 | (branch merge, don't forget to commit) |
|
295 | (branch merge, don't forget to commit) | |
287 | $ cat f |
|
296 | $ cat f | |
288 | normal2 |
|
297 | normal2 | |
289 |
|
298 | |||
290 | $ hg up -Cqr large |
|
299 | $ hg up -Cqr large | |
291 | $ echo d | hg merge -r normal2 --config ui.interactive=Yes |
|
300 | $ echo d | hg merge -r normal2 --config ui.interactive=Yes | |
292 | remote changed f which local deleted |
|
301 | remote changed f which local deleted | |
293 |
use (c)hanged version or leave (d)eleted? |
|
302 | use (c)hanged version or leave (d)eleted? d | |
|
303 | getting changed largefiles | |||
294 | 0 largefiles updated, 0 removed |
|
304 | 0 largefiles updated, 0 removed | |
295 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
305 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
296 | (branch merge, don't forget to commit) |
|
306 | (branch merge, don't forget to commit) | |
297 | $ cat f |
|
307 | $ cat f | |
298 | large |
|
308 | large | |
299 |
|
309 | |||
300 | Ancestor: large Parent: large= Parent: normal result: normal |
|
310 | Ancestor: large Parent: large= Parent: normal result: normal | |
301 |
|
311 | |||
302 | $ hg up -Cqr large= |
|
312 | $ hg up -Cqr large= | |
303 | $ hg merge -r normal |
|
313 | $ hg merge -r normal | |
304 | getting changed largefiles |
|
314 | getting changed largefiles | |
305 | 0 largefiles updated, 0 removed |
|
315 | 0 largefiles updated, 0 removed | |
306 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
316 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
307 | (branch merge, don't forget to commit) |
|
317 | (branch merge, don't forget to commit) | |
308 | $ cat f |
|
318 | $ cat f | |
309 | normal |
|
319 | normal | |
310 |
|
320 | |||
311 | swap |
|
321 | swap | |
312 |
|
322 | |||
313 | $ hg up -Cqr normal |
|
323 | $ hg up -Cqr normal | |
314 | $ hg merge -r large= |
|
324 | $ hg merge -r large= | |
315 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
325 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
316 | (branch merge, don't forget to commit) |
|
326 | (branch merge, don't forget to commit) | |
317 | $ cat f |
|
327 | $ cat f | |
318 | normal |
|
328 | normal | |
319 |
|
329 | |||
320 | Ancestor: large Parent: large2 Parent: normal result: ? |
|
330 | Ancestor: large Parent: large2 Parent: normal result: ? | |
321 | (annoying extra prompt ... but it do not do any serious harm) |
|
331 | (annoying extra prompt ... but it do not do any serious harm) | |
322 |
|
332 | |||
323 | $ hg up -Cqr large2 |
|
333 | $ hg up -Cqr large2 | |
324 | $ hg merge -r normal |
|
334 | $ hg merge -r normal | |
325 | local changed .hglf/f which remote deleted |
|
335 | local changed .hglf/f which remote deleted | |
326 | use (c)hanged version or (d)elete? c |
|
336 | use (c)hanged version or (d)elete? c | |
327 | remote turned local largefile f into a normal file |
|
337 | remote turned local largefile f into a normal file | |
328 | keep (l)argefile or use (n)ormal file? l |
|
338 | keep (l)argefile or use (n)ormal file? l | |
329 | getting changed largefiles |
|
339 | getting changed largefiles | |
330 | 1 largefiles updated, 0 removed |
|
340 | 1 largefiles updated, 0 removed | |
331 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
341 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
332 | (branch merge, don't forget to commit) |
|
342 | (branch merge, don't forget to commit) | |
333 | $ cat f |
|
343 | $ cat f | |
334 | large2 |
|
344 | large2 | |
335 |
|
345 | |||
336 | $ hg up -Cqr large2 |
|
346 | $ hg up -Cqr large2 | |
337 | $ echo d | hg merge -r normal --config ui.interactive=Yes |
|
347 | $ echo d | hg merge -r normal --config ui.interactive=Yes | |
338 | local changed .hglf/f which remote deleted |
|
348 | local changed .hglf/f which remote deleted | |
339 |
use (c)hanged version or (d)elete? |
|
349 | use (c)hanged version or (d)elete? d | |
|
350 | getting changed largefiles | |||
340 | 0 largefiles updated, 0 removed |
|
351 | 0 largefiles updated, 0 removed | |
341 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
352 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
342 | (branch merge, don't forget to commit) |
|
353 | (branch merge, don't forget to commit) | |
343 | $ cat f |
|
354 | $ cat f | |
344 | normal |
|
355 | normal | |
345 |
|
356 | |||
346 | swap |
|
357 | swap | |
347 |
|
358 | |||
348 | $ hg up -Cqr normal |
|
359 | $ hg up -Cqr normal | |
349 | $ hg merge -r large2 |
|
360 | $ hg merge -r large2 | |
350 | remote changed .hglf/f which local deleted |
|
361 | remote changed .hglf/f which local deleted | |
351 | use (c)hanged version or leave (d)eleted? c |
|
362 | use (c)hanged version or leave (d)eleted? c | |
352 | remote turned local normal file f into a largefile |
|
363 | remote turned local normal file f into a largefile | |
353 | use (l)argefile or keep (n)ormal file? l |
|
364 | use (l)argefile or keep (n)ormal file? l | |
354 | getting changed largefiles |
|
365 | getting changed largefiles | |
355 | 1 largefiles updated, 0 removed |
|
366 | 1 largefiles updated, 0 removed | |
356 | 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
367 | 2 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
357 | (branch merge, don't forget to commit) |
|
368 | (branch merge, don't forget to commit) | |
358 | $ cat f |
|
369 | $ cat f | |
359 | large2 |
|
370 | large2 | |
360 |
|
371 | |||
361 | $ hg up -Cqr normal |
|
372 | $ hg up -Cqr normal | |
362 | $ echo d | hg merge -r large2 --config ui.interactive=Yes |
|
373 | $ echo d | hg merge -r large2 --config ui.interactive=Yes | |
363 | remote changed .hglf/f which local deleted |
|
374 | remote changed .hglf/f which local deleted | |
364 | use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
375 | use (c)hanged version or leave (d)eleted? d | |
|
376 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
365 | (branch merge, don't forget to commit) |
|
377 | (branch merge, don't forget to commit) | |
366 | $ cat f |
|
378 | $ cat f | |
367 | normal |
|
379 | normal | |
368 |
|
380 | |||
369 | $ cd .. |
|
381 | $ cd .. |
@@ -1,1310 +1,1318 | |||||
1 | $ cat <<EOF >> $HGRCPATH |
|
1 | $ cat <<EOF >> $HGRCPATH | |
2 | > [extensions] |
|
2 | > [extensions] | |
3 | > keyword = |
|
3 | > keyword = | |
4 | > mq = |
|
4 | > mq = | |
5 | > notify = |
|
5 | > notify = | |
6 | > record = |
|
6 | > record = | |
7 | > transplant = |
|
7 | > transplant = | |
8 | > [ui] |
|
8 | > [ui] | |
9 | > interactive = true |
|
9 | > interactive = true | |
10 | > EOF |
|
10 | > EOF | |
11 |
|
11 | |||
12 | hide outer repo |
|
12 | hide outer repo | |
13 | $ hg init |
|
13 | $ hg init | |
14 |
|
14 | |||
15 | Run kwdemo before [keyword] files are set up |
|
15 | Run kwdemo before [keyword] files are set up | |
16 | as it would succeed without uisetup otherwise |
|
16 | as it would succeed without uisetup otherwise | |
17 |
|
17 | |||
18 | $ hg --quiet kwdemo |
|
18 | $ hg --quiet kwdemo | |
19 | [extensions] |
|
19 | [extensions] | |
20 | keyword = |
|
20 | keyword = | |
21 | [keyword] |
|
21 | [keyword] | |
22 | demo.txt = |
|
22 | demo.txt = | |
23 | [keywordset] |
|
23 | [keywordset] | |
24 | svn = False |
|
24 | svn = False | |
25 | [keywordmaps] |
|
25 | [keywordmaps] | |
26 | Author = {author|user} |
|
26 | Author = {author|user} | |
27 | Date = {date|utcdate} |
|
27 | Date = {date|utcdate} | |
28 | Header = {root}/{file},v {node|short} {date|utcdate} {author|user} |
|
28 | Header = {root}/{file},v {node|short} {date|utcdate} {author|user} | |
29 | Id = {file|basename},v {node|short} {date|utcdate} {author|user} |
|
29 | Id = {file|basename},v {node|short} {date|utcdate} {author|user} | |
30 | RCSFile = {file|basename},v |
|
30 | RCSFile = {file|basename},v | |
31 | RCSfile = {file|basename},v |
|
31 | RCSfile = {file|basename},v | |
32 | Revision = {node|short} |
|
32 | Revision = {node|short} | |
33 | Source = {root}/{file},v |
|
33 | Source = {root}/{file},v | |
34 | $Author: test $ |
|
34 | $Author: test $ | |
35 | $Date: ????/??/?? ??:??:?? $ (glob) |
|
35 | $Date: ????/??/?? ??:??:?? $ (glob) | |
36 | $Header: */demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob) |
|
36 | $Header: */demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob) | |
37 | $Id: demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob) |
|
37 | $Id: demo.txt,v ???????????? ????/??/?? ??:??:?? test $ (glob) | |
38 | $RCSFile: demo.txt,v $ |
|
38 | $RCSFile: demo.txt,v $ | |
39 | $RCSfile: demo.txt,v $ |
|
39 | $RCSfile: demo.txt,v $ | |
40 | $Revision: ???????????? $ (glob) |
|
40 | $Revision: ???????????? $ (glob) | |
41 | $Source: */demo.txt,v $ (glob) |
|
41 | $Source: */demo.txt,v $ (glob) | |
42 |
|
42 | |||
43 | $ hg --quiet kwdemo "Branch = {branches}" |
|
43 | $ hg --quiet kwdemo "Branch = {branches}" | |
44 | [extensions] |
|
44 | [extensions] | |
45 | keyword = |
|
45 | keyword = | |
46 | [keyword] |
|
46 | [keyword] | |
47 | demo.txt = |
|
47 | demo.txt = | |
48 | [keywordset] |
|
48 | [keywordset] | |
49 | svn = False |
|
49 | svn = False | |
50 | [keywordmaps] |
|
50 | [keywordmaps] | |
51 | Branch = {branches} |
|
51 | Branch = {branches} | |
52 | $Branch: demobranch $ |
|
52 | $Branch: demobranch $ | |
53 |
|
53 | |||
54 | $ cat <<EOF >> $HGRCPATH |
|
54 | $ cat <<EOF >> $HGRCPATH | |
55 | > [keyword] |
|
55 | > [keyword] | |
56 | > ** = |
|
56 | > ** = | |
57 | > b = ignore |
|
57 | > b = ignore | |
58 | > i = ignore |
|
58 | > i = ignore | |
59 | > [hooks] |
|
59 | > [hooks] | |
60 | > EOF |
|
60 | > EOF | |
61 | $ cp $HGRCPATH $HGRCPATH.nohooks |
|
61 | $ cp $HGRCPATH $HGRCPATH.nohooks | |
62 | > cat <<EOF >> $HGRCPATH |
|
62 | > cat <<EOF >> $HGRCPATH | |
63 | > commit= |
|
63 | > commit= | |
64 | > commit.test=cp a hooktest |
|
64 | > commit.test=cp a hooktest | |
65 | > EOF |
|
65 | > EOF | |
66 |
|
66 | |||
67 | $ hg init Test-bndl |
|
67 | $ hg init Test-bndl | |
68 | $ cd Test-bndl |
|
68 | $ cd Test-bndl | |
69 |
|
69 | |||
70 | kwshrink should exit silently in empty/invalid repo |
|
70 | kwshrink should exit silently in empty/invalid repo | |
71 |
|
71 | |||
72 | $ hg kwshrink |
|
72 | $ hg kwshrink | |
73 |
|
73 | |||
74 | Symlinks cannot be created on Windows. |
|
74 | Symlinks cannot be created on Windows. | |
75 | A bundle to test this was made with: |
|
75 | A bundle to test this was made with: | |
76 | hg init t |
|
76 | hg init t | |
77 | cd t |
|
77 | cd t | |
78 | echo a > a |
|
78 | echo a > a | |
79 | ln -s a sym |
|
79 | ln -s a sym | |
80 | hg add sym |
|
80 | hg add sym | |
81 | hg ci -m addsym -u mercurial |
|
81 | hg ci -m addsym -u mercurial | |
82 | hg bundle --base null ../test-keyword.hg |
|
82 | hg bundle --base null ../test-keyword.hg | |
83 |
|
83 | |||
84 | $ hg pull -u "$TESTDIR"/bundles/test-keyword.hg |
|
84 | $ hg pull -u "$TESTDIR"/bundles/test-keyword.hg | |
85 | pulling from *test-keyword.hg (glob) |
|
85 | pulling from *test-keyword.hg (glob) | |
86 | requesting all changes |
|
86 | requesting all changes | |
87 | adding changesets |
|
87 | adding changesets | |
88 | adding manifests |
|
88 | adding manifests | |
89 | adding file changes |
|
89 | adding file changes | |
90 | added 1 changesets with 1 changes to 1 files |
|
90 | added 1 changesets with 1 changes to 1 files | |
91 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
91 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
92 |
|
92 | |||
93 | $ echo 'expand $Id$' > a |
|
93 | $ echo 'expand $Id$' > a | |
94 | $ echo 'do not process $Id:' >> a |
|
94 | $ echo 'do not process $Id:' >> a | |
95 | $ echo 'xxx $' >> a |
|
95 | $ echo 'xxx $' >> a | |
96 | $ echo 'ignore $Id$' > b |
|
96 | $ echo 'ignore $Id$' > b | |
97 |
|
97 | |||
98 | Output files as they were created |
|
98 | Output files as they were created | |
99 |
|
99 | |||
100 | $ cat a b |
|
100 | $ cat a b | |
101 | expand $Id$ |
|
101 | expand $Id$ | |
102 | do not process $Id: |
|
102 | do not process $Id: | |
103 | xxx $ |
|
103 | xxx $ | |
104 | ignore $Id$ |
|
104 | ignore $Id$ | |
105 |
|
105 | |||
106 | no kwfiles |
|
106 | no kwfiles | |
107 |
|
107 | |||
108 | $ hg kwfiles |
|
108 | $ hg kwfiles | |
109 |
|
109 | |||
110 | untracked candidates |
|
110 | untracked candidates | |
111 |
|
111 | |||
112 | $ hg -v kwfiles --unknown |
|
112 | $ hg -v kwfiles --unknown | |
113 | k a |
|
113 | k a | |
114 |
|
114 | |||
115 | Add files and check status |
|
115 | Add files and check status | |
116 |
|
116 | |||
117 | $ hg addremove |
|
117 | $ hg addremove | |
118 | adding a |
|
118 | adding a | |
119 | adding b |
|
119 | adding b | |
120 | $ hg status |
|
120 | $ hg status | |
121 | A a |
|
121 | A a | |
122 | A b |
|
122 | A b | |
123 |
|
123 | |||
124 |
|
124 | |||
125 | Default keyword expansion including commit hook |
|
125 | Default keyword expansion including commit hook | |
126 | Interrupted commit should not change state or run commit hook |
|
126 | Interrupted commit should not change state or run commit hook | |
127 |
|
127 | |||
128 | $ hg --debug commit |
|
128 | $ hg --debug commit | |
129 | abort: empty commit message |
|
129 | abort: empty commit message | |
130 | [255] |
|
130 | [255] | |
131 | $ hg status |
|
131 | $ hg status | |
132 | A a |
|
132 | A a | |
133 | A b |
|
133 | A b | |
134 |
|
134 | |||
135 | Commit with several checks |
|
135 | Commit with several checks | |
136 |
|
136 | |||
137 | $ hg --debug commit -mabsym -u 'User Name <user@example.com>' |
|
137 | $ hg --debug commit -mabsym -u 'User Name <user@example.com>' | |
138 | a |
|
138 | a | |
139 | b |
|
139 | b | |
140 | overwriting a expanding keywords |
|
140 | overwriting a expanding keywords | |
141 | running hook commit.test: cp a hooktest |
|
141 | running hook commit.test: cp a hooktest | |
142 | committed changeset 1:ef63ca68695bc9495032c6fda1350c71e6d256e9 |
|
142 | committed changeset 1:ef63ca68695bc9495032c6fda1350c71e6d256e9 | |
143 | $ hg status |
|
143 | $ hg status | |
144 | ? hooktest |
|
144 | ? hooktest | |
145 | $ hg debugrebuildstate |
|
145 | $ hg debugrebuildstate | |
146 | $ hg --quiet identify |
|
146 | $ hg --quiet identify | |
147 | ef63ca68695b |
|
147 | ef63ca68695b | |
148 |
|
148 | |||
149 | cat files in working directory with keywords expanded |
|
149 | cat files in working directory with keywords expanded | |
150 |
|
150 | |||
151 | $ cat a b |
|
151 | $ cat a b | |
152 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
152 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
153 | do not process $Id: |
|
153 | do not process $Id: | |
154 | xxx $ |
|
154 | xxx $ | |
155 | ignore $Id$ |
|
155 | ignore $Id$ | |
156 |
|
156 | |||
157 | hg cat files and symlink, no expansion |
|
157 | hg cat files and symlink, no expansion | |
158 |
|
158 | |||
159 | $ hg cat sym a b && echo |
|
159 | $ hg cat sym a b && echo | |
160 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
160 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
161 | do not process $Id: |
|
161 | do not process $Id: | |
162 | xxx $ |
|
162 | xxx $ | |
163 | ignore $Id$ |
|
163 | ignore $Id$ | |
164 | a |
|
164 | a | |
165 |
|
165 | |||
166 | $ diff a hooktest |
|
166 | $ diff a hooktest | |
167 |
|
167 | |||
168 | $ cp $HGRCPATH.nohooks $HGRCPATH |
|
168 | $ cp $HGRCPATH.nohooks $HGRCPATH | |
169 | $ rm hooktest |
|
169 | $ rm hooktest | |
170 |
|
170 | |||
171 | hg status of kw-ignored binary file starting with '\1\n' |
|
171 | hg status of kw-ignored binary file starting with '\1\n' | |
172 |
|
172 | |||
173 | >>> open("i", "wb").write("\1\nfoo") |
|
173 | >>> open("i", "wb").write("\1\nfoo") | |
174 | $ hg -q commit -Am metasep i |
|
174 | $ hg -q commit -Am metasep i | |
175 | $ hg status |
|
175 | $ hg status | |
176 | >>> open("i", "wb").write("\1\nbar") |
|
176 | >>> open("i", "wb").write("\1\nbar") | |
177 | $ hg status |
|
177 | $ hg status | |
178 | M i |
|
178 | M i | |
179 | $ hg -q commit -m "modify metasep" i |
|
179 | $ hg -q commit -m "modify metasep" i | |
180 | $ hg status --rev 2:3 |
|
180 | $ hg status --rev 2:3 | |
181 | M i |
|
181 | M i | |
182 | $ touch empty |
|
182 | $ touch empty | |
183 | $ hg -q commit -A -m "another file" |
|
183 | $ hg -q commit -A -m "another file" | |
184 | $ hg status -A --rev 3:4 i |
|
184 | $ hg status -A --rev 3:4 i | |
185 | C i |
|
185 | C i | |
186 |
|
186 | |||
187 | $ hg -q strip -n 2 |
|
187 | $ hg -q strip -n 2 | |
188 |
|
188 | |||
189 | Test hook execution |
|
189 | Test hook execution | |
190 |
|
190 | |||
191 | bundle |
|
191 | bundle | |
192 |
|
192 | |||
193 | $ hg bundle --base null ../kw.hg |
|
193 | $ hg bundle --base null ../kw.hg | |
194 | 2 changesets found |
|
194 | 2 changesets found | |
195 | $ cd .. |
|
195 | $ cd .. | |
196 | $ hg init Test |
|
196 | $ hg init Test | |
197 | $ cd Test |
|
197 | $ cd Test | |
198 |
|
198 | |||
199 | Notify on pull to check whether keywords stay as is in email |
|
199 | Notify on pull to check whether keywords stay as is in email | |
200 | ie. if patch.diff wrapper acts as it should |
|
200 | ie. if patch.diff wrapper acts as it should | |
201 |
|
201 | |||
202 | $ cat <<EOF >> $HGRCPATH |
|
202 | $ cat <<EOF >> $HGRCPATH | |
203 | > [hooks] |
|
203 | > [hooks] | |
204 | > incoming.notify = python:hgext.notify.hook |
|
204 | > incoming.notify = python:hgext.notify.hook | |
205 | > [notify] |
|
205 | > [notify] | |
206 | > sources = pull |
|
206 | > sources = pull | |
207 | > diffstat = False |
|
207 | > diffstat = False | |
208 | > maxsubject = 15 |
|
208 | > maxsubject = 15 | |
209 | > [reposubs] |
|
209 | > [reposubs] | |
210 | > * = Test |
|
210 | > * = Test | |
211 | > EOF |
|
211 | > EOF | |
212 |
|
212 | |||
213 | Pull from bundle and trigger notify |
|
213 | Pull from bundle and trigger notify | |
214 |
|
214 | |||
215 | $ hg pull -u ../kw.hg |
|
215 | $ hg pull -u ../kw.hg | |
216 | pulling from ../kw.hg |
|
216 | pulling from ../kw.hg | |
217 | requesting all changes |
|
217 | requesting all changes | |
218 | adding changesets |
|
218 | adding changesets | |
219 | adding manifests |
|
219 | adding manifests | |
220 | adding file changes |
|
220 | adding file changes | |
221 | added 2 changesets with 3 changes to 3 files |
|
221 | added 2 changesets with 3 changes to 3 files | |
222 | Content-Type: text/plain; charset="us-ascii" |
|
222 | Content-Type: text/plain; charset="us-ascii" | |
223 | MIME-Version: 1.0 |
|
223 | MIME-Version: 1.0 | |
224 | Content-Transfer-Encoding: 7bit |
|
224 | Content-Transfer-Encoding: 7bit | |
225 | Date: * (glob) |
|
225 | Date: * (glob) | |
226 | Subject: changeset in... |
|
226 | Subject: changeset in... | |
227 | From: mercurial |
|
227 | From: mercurial | |
228 | X-Hg-Notification: changeset a2392c293916 |
|
228 | X-Hg-Notification: changeset a2392c293916 | |
229 | Message-Id: <hg.a2392c293916*> (glob) |
|
229 | Message-Id: <hg.a2392c293916*> (glob) | |
230 | To: Test |
|
230 | To: Test | |
231 |
|
231 | |||
232 | changeset a2392c293916 in $TESTTMP/Test (glob) |
|
232 | changeset a2392c293916 in $TESTTMP/Test (glob) | |
233 | details: $TESTTMP/Test?cmd=changeset;node=a2392c293916 |
|
233 | details: $TESTTMP/Test?cmd=changeset;node=a2392c293916 | |
234 | description: |
|
234 | description: | |
235 | addsym |
|
235 | addsym | |
236 |
|
236 | |||
237 | diffs (6 lines): |
|
237 | diffs (6 lines): | |
238 |
|
238 | |||
239 | diff -r 000000000000 -r a2392c293916 sym |
|
239 | diff -r 000000000000 -r a2392c293916 sym | |
240 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
240 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
241 | +++ b/sym Sat Feb 09 20:25:47 2008 +0100 |
|
241 | +++ b/sym Sat Feb 09 20:25:47 2008 +0100 | |
242 | @@ -0,0 +1,1 @@ |
|
242 | @@ -0,0 +1,1 @@ | |
243 | +a |
|
243 | +a | |
244 | \ No newline at end of file |
|
244 | \ No newline at end of file | |
245 | Content-Type: text/plain; charset="us-ascii" |
|
245 | Content-Type: text/plain; charset="us-ascii" | |
246 | MIME-Version: 1.0 |
|
246 | MIME-Version: 1.0 | |
247 | Content-Transfer-Encoding: 7bit |
|
247 | Content-Transfer-Encoding: 7bit | |
248 | Date:* (glob) |
|
248 | Date:* (glob) | |
249 | Subject: changeset in... |
|
249 | Subject: changeset in... | |
250 | From: User Name <user@example.com> |
|
250 | From: User Name <user@example.com> | |
251 | X-Hg-Notification: changeset ef63ca68695b |
|
251 | X-Hg-Notification: changeset ef63ca68695b | |
252 | Message-Id: <hg.ef63ca68695b*> (glob) |
|
252 | Message-Id: <hg.ef63ca68695b*> (glob) | |
253 | To: Test |
|
253 | To: Test | |
254 |
|
254 | |||
255 | changeset ef63ca68695b in $TESTTMP/Test (glob) |
|
255 | changeset ef63ca68695b in $TESTTMP/Test (glob) | |
256 | details: $TESTTMP/Test?cmd=changeset;node=ef63ca68695b |
|
256 | details: $TESTTMP/Test?cmd=changeset;node=ef63ca68695b | |
257 | description: |
|
257 | description: | |
258 | absym |
|
258 | absym | |
259 |
|
259 | |||
260 | diffs (12 lines): |
|
260 | diffs (12 lines): | |
261 |
|
261 | |||
262 | diff -r a2392c293916 -r ef63ca68695b a |
|
262 | diff -r a2392c293916 -r ef63ca68695b a | |
263 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
263 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
264 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
264 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
265 | @@ -0,0 +1,3 @@ |
|
265 | @@ -0,0 +1,3 @@ | |
266 | +expand $Id$ |
|
266 | +expand $Id$ | |
267 | +do not process $Id: |
|
267 | +do not process $Id: | |
268 | +xxx $ |
|
268 | +xxx $ | |
269 | diff -r a2392c293916 -r ef63ca68695b b |
|
269 | diff -r a2392c293916 -r ef63ca68695b b | |
270 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
270 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
271 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 |
|
271 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 | |
272 | @@ -0,0 +1,1 @@ |
|
272 | @@ -0,0 +1,1 @@ | |
273 | +ignore $Id$ |
|
273 | +ignore $Id$ | |
274 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
274 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
275 |
|
275 | |||
276 | $ cp $HGRCPATH.nohooks $HGRCPATH |
|
276 | $ cp $HGRCPATH.nohooks $HGRCPATH | |
277 |
|
277 | |||
278 | Touch files and check with status |
|
278 | Touch files and check with status | |
279 |
|
279 | |||
280 | $ touch a b |
|
280 | $ touch a b | |
281 | $ hg status |
|
281 | $ hg status | |
282 |
|
282 | |||
283 | Update and expand |
|
283 | Update and expand | |
284 |
|
284 | |||
285 | $ rm sym a b |
|
285 | $ rm sym a b | |
286 | $ hg update -C |
|
286 | $ hg update -C | |
287 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
287 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
288 | $ cat a b |
|
288 | $ cat a b | |
289 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
289 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
290 | do not process $Id: |
|
290 | do not process $Id: | |
291 | xxx $ |
|
291 | xxx $ | |
292 | ignore $Id$ |
|
292 | ignore $Id$ | |
293 |
|
293 | |||
294 | Check whether expansion is filewise and file mode is preserved |
|
294 | Check whether expansion is filewise and file mode is preserved | |
295 |
|
295 | |||
296 | $ echo '$Id$' > c |
|
296 | $ echo '$Id$' > c | |
297 | $ echo 'tests for different changenodes' >> c |
|
297 | $ echo 'tests for different changenodes' >> c | |
298 | #if unix-permissions |
|
298 | #if unix-permissions | |
299 | $ chmod 600 c |
|
299 | $ chmod 600 c | |
300 | $ ls -l c | cut -b 1-10 |
|
300 | $ ls -l c | cut -b 1-10 | |
301 | -rw------- |
|
301 | -rw------- | |
302 | #endif |
|
302 | #endif | |
303 |
|
303 | |||
304 | commit file c |
|
304 | commit file c | |
305 |
|
305 | |||
306 | $ hg commit -A -mcndiff -d '1 0' -u 'User Name <user@example.com>' |
|
306 | $ hg commit -A -mcndiff -d '1 0' -u 'User Name <user@example.com>' | |
307 | adding c |
|
307 | adding c | |
308 | #if unix-permissions |
|
308 | #if unix-permissions | |
309 | $ ls -l c | cut -b 1-10 |
|
309 | $ ls -l c | cut -b 1-10 | |
310 | -rw------- |
|
310 | -rw------- | |
311 | #endif |
|
311 | #endif | |
312 |
|
312 | |||
313 | force expansion |
|
313 | force expansion | |
314 |
|
314 | |||
315 | $ hg -v kwexpand |
|
315 | $ hg -v kwexpand | |
316 | overwriting a expanding keywords |
|
316 | overwriting a expanding keywords | |
317 | overwriting c expanding keywords |
|
317 | overwriting c expanding keywords | |
318 |
|
318 | |||
319 | compare changenodes in a and c |
|
319 | compare changenodes in a and c | |
320 |
|
320 | |||
321 | $ cat a c |
|
321 | $ cat a c | |
322 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
322 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
323 | do not process $Id: |
|
323 | do not process $Id: | |
324 | xxx $ |
|
324 | xxx $ | |
325 | $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ |
|
325 | $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ | |
326 | tests for different changenodes |
|
326 | tests for different changenodes | |
327 |
|
327 | |||
328 | record |
|
328 | record | |
329 |
|
329 | |||
330 | $ echo '$Id$' > r |
|
330 | $ echo '$Id$' > r | |
331 | $ hg add r |
|
331 | $ hg add r | |
332 |
|
332 | |||
333 | record chunk |
|
333 | record chunk | |
334 |
|
334 | |||
335 | >>> lines = open('a', 'rb').readlines() |
|
335 | >>> lines = open('a', 'rb').readlines() | |
336 | >>> lines.insert(1, 'foo\n') |
|
336 | >>> lines.insert(1, 'foo\n') | |
337 | >>> lines.append('bar\n') |
|
337 | >>> lines.append('bar\n') | |
338 | >>> open('a', 'wb').writelines(lines) |
|
338 | >>> open('a', 'wb').writelines(lines) | |
339 | $ hg record -d '10 1' -m rectest a<<EOF |
|
339 | $ hg record -d '10 1' -m rectest a<<EOF | |
340 | > y |
|
340 | > y | |
341 | > y |
|
341 | > y | |
342 | > n |
|
342 | > n | |
343 | > EOF |
|
343 | > EOF | |
344 | diff --git a/a b/a |
|
344 | diff --git a/a b/a | |
345 | 2 hunks, 2 lines changed |
|
345 | 2 hunks, 2 lines changed | |
346 | examine changes to 'a'? [Ynesfdaq?] |
|
346 | examine changes to 'a'? [Ynesfdaq?] y | |
|
347 | ||||
347 | @@ -1,3 +1,4 @@ |
|
348 | @@ -1,3 +1,4 @@ | |
348 | expand $Id$ |
|
349 | expand $Id$ | |
349 | +foo |
|
350 | +foo | |
350 | do not process $Id: |
|
351 | do not process $Id: | |
351 | xxx $ |
|
352 | xxx $ | |
352 | record change 1/2 to 'a'? [Ynesfdaq?] |
|
353 | record change 1/2 to 'a'? [Ynesfdaq?] y | |
|
354 | ||||
353 | @@ -2,2 +3,3 @@ |
|
355 | @@ -2,2 +3,3 @@ | |
354 | do not process $Id: |
|
356 | do not process $Id: | |
355 | xxx $ |
|
357 | xxx $ | |
356 | +bar |
|
358 | +bar | |
357 | record change 2/2 to 'a'? [Ynesfdaq?] |
|
359 | record change 2/2 to 'a'? [Ynesfdaq?] n | |
|
360 | ||||
358 |
|
361 | |||
359 | $ hg identify |
|
362 | $ hg identify | |
360 | 5f5eb23505c3+ tip |
|
363 | 5f5eb23505c3+ tip | |
361 | $ hg status |
|
364 | $ hg status | |
362 | M a |
|
365 | M a | |
363 | A r |
|
366 | A r | |
364 |
|
367 | |||
365 | Cat modified file a |
|
368 | Cat modified file a | |
366 |
|
369 | |||
367 | $ cat a |
|
370 | $ cat a | |
368 | expand $Id: a,v 5f5eb23505c3 1970/01/01 00:00:10 test $ |
|
371 | expand $Id: a,v 5f5eb23505c3 1970/01/01 00:00:10 test $ | |
369 | foo |
|
372 | foo | |
370 | do not process $Id: |
|
373 | do not process $Id: | |
371 | xxx $ |
|
374 | xxx $ | |
372 | bar |
|
375 | bar | |
373 |
|
376 | |||
374 | Diff remaining chunk |
|
377 | Diff remaining chunk | |
375 |
|
378 | |||
376 | $ hg diff a |
|
379 | $ hg diff a | |
377 | diff -r 5f5eb23505c3 a |
|
380 | diff -r 5f5eb23505c3 a | |
378 | --- a/a Thu Jan 01 00:00:09 1970 -0000 |
|
381 | --- a/a Thu Jan 01 00:00:09 1970 -0000 | |
379 | +++ b/a * (glob) |
|
382 | +++ b/a * (glob) | |
380 | @@ -2,3 +2,4 @@ |
|
383 | @@ -2,3 +2,4 @@ | |
381 | foo |
|
384 | foo | |
382 | do not process $Id: |
|
385 | do not process $Id: | |
383 | xxx $ |
|
386 | xxx $ | |
384 | +bar |
|
387 | +bar | |
385 |
|
388 | |||
386 | $ hg rollback |
|
389 | $ hg rollback | |
387 | repository tip rolled back to revision 2 (undo commit) |
|
390 | repository tip rolled back to revision 2 (undo commit) | |
388 | working directory now based on revision 2 |
|
391 | working directory now based on revision 2 | |
389 |
|
392 | |||
390 | Record all chunks in file a |
|
393 | Record all chunks in file a | |
391 |
|
394 | |||
392 | $ echo foo > msg |
|
395 | $ echo foo > msg | |
393 |
|
396 | |||
394 | - do not use "hg record -m" here! |
|
397 | - do not use "hg record -m" here! | |
395 |
|
398 | |||
396 | $ hg record -l msg -d '11 1' a<<EOF |
|
399 | $ hg record -l msg -d '11 1' a<<EOF | |
397 | > y |
|
400 | > y | |
398 | > y |
|
401 | > y | |
399 | > y |
|
402 | > y | |
400 | > EOF |
|
403 | > EOF | |
401 | diff --git a/a b/a |
|
404 | diff --git a/a b/a | |
402 | 2 hunks, 2 lines changed |
|
405 | 2 hunks, 2 lines changed | |
403 | examine changes to 'a'? [Ynesfdaq?] |
|
406 | examine changes to 'a'? [Ynesfdaq?] y | |
|
407 | ||||
404 | @@ -1,3 +1,4 @@ |
|
408 | @@ -1,3 +1,4 @@ | |
405 | expand $Id$ |
|
409 | expand $Id$ | |
406 | +foo |
|
410 | +foo | |
407 | do not process $Id: |
|
411 | do not process $Id: | |
408 | xxx $ |
|
412 | xxx $ | |
409 | record change 1/2 to 'a'? [Ynesfdaq?] |
|
413 | record change 1/2 to 'a'? [Ynesfdaq?] y | |
|
414 | ||||
410 | @@ -2,2 +3,3 @@ |
|
415 | @@ -2,2 +3,3 @@ | |
411 | do not process $Id: |
|
416 | do not process $Id: | |
412 | xxx $ |
|
417 | xxx $ | |
413 | +bar |
|
418 | +bar | |
414 | record change 2/2 to 'a'? [Ynesfdaq?] |
|
419 | record change 2/2 to 'a'? [Ynesfdaq?] y | |
|
420 | ||||
415 |
|
421 | |||
416 | File a should be clean |
|
422 | File a should be clean | |
417 |
|
423 | |||
418 | $ hg status -A a |
|
424 | $ hg status -A a | |
419 | C a |
|
425 | C a | |
420 |
|
426 | |||
421 | rollback and revert expansion |
|
427 | rollback and revert expansion | |
422 |
|
428 | |||
423 | $ cat a |
|
429 | $ cat a | |
424 | expand $Id: a,v 78e0a02d76aa 1970/01/01 00:00:11 test $ |
|
430 | expand $Id: a,v 78e0a02d76aa 1970/01/01 00:00:11 test $ | |
425 | foo |
|
431 | foo | |
426 | do not process $Id: |
|
432 | do not process $Id: | |
427 | xxx $ |
|
433 | xxx $ | |
428 | bar |
|
434 | bar | |
429 | $ hg --verbose rollback |
|
435 | $ hg --verbose rollback | |
430 | repository tip rolled back to revision 2 (undo commit) |
|
436 | repository tip rolled back to revision 2 (undo commit) | |
431 | working directory now based on revision 2 |
|
437 | working directory now based on revision 2 | |
432 | overwriting a expanding keywords |
|
438 | overwriting a expanding keywords | |
433 | $ hg status a |
|
439 | $ hg status a | |
434 | M a |
|
440 | M a | |
435 | $ cat a |
|
441 | $ cat a | |
436 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
442 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
437 | foo |
|
443 | foo | |
438 | do not process $Id: |
|
444 | do not process $Id: | |
439 | xxx $ |
|
445 | xxx $ | |
440 | bar |
|
446 | bar | |
441 | $ echo '$Id$' > y |
|
447 | $ echo '$Id$' > y | |
442 | $ echo '$Id$' > z |
|
448 | $ echo '$Id$' > z | |
443 | $ hg add y |
|
449 | $ hg add y | |
444 | $ hg commit -Am "rollback only" z |
|
450 | $ hg commit -Am "rollback only" z | |
445 | $ cat z |
|
451 | $ cat z | |
446 | $Id: z,v 45a5d3adce53 1970/01/01 00:00:00 test $ |
|
452 | $Id: z,v 45a5d3adce53 1970/01/01 00:00:00 test $ | |
447 | $ hg --verbose rollback |
|
453 | $ hg --verbose rollback | |
448 | repository tip rolled back to revision 2 (undo commit) |
|
454 | repository tip rolled back to revision 2 (undo commit) | |
449 | working directory now based on revision 2 |
|
455 | working directory now based on revision 2 | |
450 | overwriting z shrinking keywords |
|
456 | overwriting z shrinking keywords | |
451 |
|
457 | |||
452 | Only z should be overwritten |
|
458 | Only z should be overwritten | |
453 |
|
459 | |||
454 | $ hg status a y z |
|
460 | $ hg status a y z | |
455 | M a |
|
461 | M a | |
456 | A y |
|
462 | A y | |
457 | A z |
|
463 | A z | |
458 | $ cat z |
|
464 | $ cat z | |
459 | $Id$ |
|
465 | $Id$ | |
460 | $ hg forget y z |
|
466 | $ hg forget y z | |
461 | $ rm y z |
|
467 | $ rm y z | |
462 |
|
468 | |||
463 | record added file alone |
|
469 | record added file alone | |
464 |
|
470 | |||
465 | $ hg -v record -l msg -d '12 2' r<<EOF |
|
471 | $ hg -v record -l msg -d '12 2' r<<EOF | |
466 | > y |
|
472 | > y | |
467 | > EOF |
|
473 | > EOF | |
468 | diff --git a/r b/r |
|
474 | diff --git a/r b/r | |
469 | new file mode 100644 |
|
475 | new file mode 100644 | |
470 | examine changes to 'r'? [Ynesfdaq?] |
|
476 | examine changes to 'r'? [Ynesfdaq?] y | |
|
477 | ||||
471 | r |
|
478 | r | |
472 | committed changeset 3:82a2f715724d |
|
479 | committed changeset 3:82a2f715724d | |
473 | overwriting r expanding keywords |
|
480 | overwriting r expanding keywords | |
474 | - status call required for dirstate.normallookup() check |
|
481 | - status call required for dirstate.normallookup() check | |
475 | $ hg status r |
|
482 | $ hg status r | |
476 | $ hg --verbose rollback |
|
483 | $ hg --verbose rollback | |
477 | repository tip rolled back to revision 2 (undo commit) |
|
484 | repository tip rolled back to revision 2 (undo commit) | |
478 | working directory now based on revision 2 |
|
485 | working directory now based on revision 2 | |
479 | overwriting r shrinking keywords |
|
486 | overwriting r shrinking keywords | |
480 | $ hg forget r |
|
487 | $ hg forget r | |
481 | $ rm msg r |
|
488 | $ rm msg r | |
482 | $ hg update -C |
|
489 | $ hg update -C | |
483 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
490 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
484 |
|
491 | |||
485 | record added keyword ignored file |
|
492 | record added keyword ignored file | |
486 |
|
493 | |||
487 | $ echo '$Id$' > i |
|
494 | $ echo '$Id$' > i | |
488 | $ hg add i |
|
495 | $ hg add i | |
489 | $ hg --verbose record -d '13 1' -m recignored<<EOF |
|
496 | $ hg --verbose record -d '13 1' -m recignored<<EOF | |
490 | > y |
|
497 | > y | |
491 | > EOF |
|
498 | > EOF | |
492 | diff --git a/i b/i |
|
499 | diff --git a/i b/i | |
493 | new file mode 100644 |
|
500 | new file mode 100644 | |
494 | examine changes to 'i'? [Ynesfdaq?] |
|
501 | examine changes to 'i'? [Ynesfdaq?] y | |
|
502 | ||||
495 | i |
|
503 | i | |
496 | committed changeset 3:9f40ceb5a072 |
|
504 | committed changeset 3:9f40ceb5a072 | |
497 | $ cat i |
|
505 | $ cat i | |
498 | $Id$ |
|
506 | $Id$ | |
499 | $ hg -q rollback |
|
507 | $ hg -q rollback | |
500 | $ hg forget i |
|
508 | $ hg forget i | |
501 | $ rm i |
|
509 | $ rm i | |
502 |
|
510 | |||
503 | amend |
|
511 | amend | |
504 |
|
512 | |||
505 | $ echo amend >> a |
|
513 | $ echo amend >> a | |
506 | $ echo amend >> b |
|
514 | $ echo amend >> b | |
507 | $ hg -q commit -d '14 1' -m 'prepare amend' |
|
515 | $ hg -q commit -d '14 1' -m 'prepare amend' | |
508 |
|
516 | |||
509 | $ hg --debug commit --amend -d '15 1' -m 'amend without changes' | grep keywords |
|
517 | $ hg --debug commit --amend -d '15 1' -m 'amend without changes' | grep keywords | |
510 | overwriting a expanding keywords |
|
518 | overwriting a expanding keywords | |
511 | $ hg -q id |
|
519 | $ hg -q id | |
512 | 67d8c481a6be |
|
520 | 67d8c481a6be | |
513 | $ head -1 a |
|
521 | $ head -1 a | |
514 | expand $Id: a,v 67d8c481a6be 1970/01/01 00:00:15 test $ |
|
522 | expand $Id: a,v 67d8c481a6be 1970/01/01 00:00:15 test $ | |
515 |
|
523 | |||
516 | $ hg -q strip -n tip |
|
524 | $ hg -q strip -n tip | |
517 |
|
525 | |||
518 | Test patch queue repo |
|
526 | Test patch queue repo | |
519 |
|
527 | |||
520 | $ hg init --mq |
|
528 | $ hg init --mq | |
521 | $ hg qimport -r tip -n mqtest.diff |
|
529 | $ hg qimport -r tip -n mqtest.diff | |
522 | $ hg commit --mq -m mqtest |
|
530 | $ hg commit --mq -m mqtest | |
523 |
|
531 | |||
524 | Keywords should not be expanded in patch |
|
532 | Keywords should not be expanded in patch | |
525 |
|
533 | |||
526 | $ cat .hg/patches/mqtest.diff |
|
534 | $ cat .hg/patches/mqtest.diff | |
527 | # HG changeset patch |
|
535 | # HG changeset patch | |
528 | # User User Name <user@example.com> |
|
536 | # User User Name <user@example.com> | |
529 | # Date 1 0 |
|
537 | # Date 1 0 | |
530 | # Thu Jan 01 00:00:01 1970 +0000 |
|
538 | # Thu Jan 01 00:00:01 1970 +0000 | |
531 | # Node ID 40a904bbbe4cd4ab0a1f28411e35db26341a40ad |
|
539 | # Node ID 40a904bbbe4cd4ab0a1f28411e35db26341a40ad | |
532 | # Parent ef63ca68695bc9495032c6fda1350c71e6d256e9 |
|
540 | # Parent ef63ca68695bc9495032c6fda1350c71e6d256e9 | |
533 | cndiff |
|
541 | cndiff | |
534 |
|
542 | |||
535 | diff -r ef63ca68695b -r 40a904bbbe4c c |
|
543 | diff -r ef63ca68695b -r 40a904bbbe4c c | |
536 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
544 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
537 | +++ b/c Thu Jan 01 00:00:01 1970 +0000 |
|
545 | +++ b/c Thu Jan 01 00:00:01 1970 +0000 | |
538 | @@ -0,0 +1,2 @@ |
|
546 | @@ -0,0 +1,2 @@ | |
539 | +$Id$ |
|
547 | +$Id$ | |
540 | +tests for different changenodes |
|
548 | +tests for different changenodes | |
541 |
|
549 | |||
542 | $ hg qpop |
|
550 | $ hg qpop | |
543 | popping mqtest.diff |
|
551 | popping mqtest.diff | |
544 | patch queue now empty |
|
552 | patch queue now empty | |
545 |
|
553 | |||
546 | qgoto, implying qpush, should expand |
|
554 | qgoto, implying qpush, should expand | |
547 |
|
555 | |||
548 | $ hg qgoto mqtest.diff |
|
556 | $ hg qgoto mqtest.diff | |
549 | applying mqtest.diff |
|
557 | applying mqtest.diff | |
550 | now at: mqtest.diff |
|
558 | now at: mqtest.diff | |
551 | $ cat c |
|
559 | $ cat c | |
552 | $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ |
|
560 | $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ | |
553 | tests for different changenodes |
|
561 | tests for different changenodes | |
554 | $ hg cat c |
|
562 | $ hg cat c | |
555 | $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ |
|
563 | $Id: c,v 40a904bbbe4c 1970/01/01 00:00:01 user $ | |
556 | tests for different changenodes |
|
564 | tests for different changenodes | |
557 |
|
565 | |||
558 | Keywords should not be expanded in filelog |
|
566 | Keywords should not be expanded in filelog | |
559 |
|
567 | |||
560 | $ hg --config 'extensions.keyword=!' cat c |
|
568 | $ hg --config 'extensions.keyword=!' cat c | |
561 | $Id$ |
|
569 | $Id$ | |
562 | tests for different changenodes |
|
570 | tests for different changenodes | |
563 |
|
571 | |||
564 | qpop and move on |
|
572 | qpop and move on | |
565 |
|
573 | |||
566 | $ hg qpop |
|
574 | $ hg qpop | |
567 | popping mqtest.diff |
|
575 | popping mqtest.diff | |
568 | patch queue now empty |
|
576 | patch queue now empty | |
569 |
|
577 | |||
570 | Copy and show added kwfiles |
|
578 | Copy and show added kwfiles | |
571 |
|
579 | |||
572 | $ hg cp a c |
|
580 | $ hg cp a c | |
573 | $ hg kwfiles |
|
581 | $ hg kwfiles | |
574 | a |
|
582 | a | |
575 | c |
|
583 | c | |
576 |
|
584 | |||
577 | Commit and show expansion in original and copy |
|
585 | Commit and show expansion in original and copy | |
578 |
|
586 | |||
579 | $ hg --debug commit -ma2c -d '1 0' -u 'User Name <user@example.com>' |
|
587 | $ hg --debug commit -ma2c -d '1 0' -u 'User Name <user@example.com>' | |
580 | invalid branchheads cache (served): tip differs |
|
588 | invalid branchheads cache (served): tip differs | |
581 | c |
|
589 | c | |
582 | c: copy a:0045e12f6c5791aac80ca6cbfd97709a88307292 |
|
590 | c: copy a:0045e12f6c5791aac80ca6cbfd97709a88307292 | |
583 | invalid branchheads cache (served): tip differs |
|
591 | invalid branchheads cache (served): tip differs | |
584 | overwriting c expanding keywords |
|
592 | overwriting c expanding keywords | |
585 | committed changeset 2:25736cf2f5cbe41f6be4e6784ef6ecf9f3bbcc7d |
|
593 | committed changeset 2:25736cf2f5cbe41f6be4e6784ef6ecf9f3bbcc7d | |
586 | $ cat a c |
|
594 | $ cat a c | |
587 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
595 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
588 | do not process $Id: |
|
596 | do not process $Id: | |
589 | xxx $ |
|
597 | xxx $ | |
590 | expand $Id: c,v 25736cf2f5cb 1970/01/01 00:00:01 user $ |
|
598 | expand $Id: c,v 25736cf2f5cb 1970/01/01 00:00:01 user $ | |
591 | do not process $Id: |
|
599 | do not process $Id: | |
592 | xxx $ |
|
600 | xxx $ | |
593 |
|
601 | |||
594 | Touch copied c and check its status |
|
602 | Touch copied c and check its status | |
595 |
|
603 | |||
596 | $ touch c |
|
604 | $ touch c | |
597 | $ hg status |
|
605 | $ hg status | |
598 |
|
606 | |||
599 | Copy kwfile to keyword ignored file unexpanding keywords |
|
607 | Copy kwfile to keyword ignored file unexpanding keywords | |
600 |
|
608 | |||
601 | $ hg --verbose copy a i |
|
609 | $ hg --verbose copy a i | |
602 | copying a to i |
|
610 | copying a to i | |
603 | overwriting i shrinking keywords |
|
611 | overwriting i shrinking keywords | |
604 | $ head -n 1 i |
|
612 | $ head -n 1 i | |
605 | expand $Id$ |
|
613 | expand $Id$ | |
606 | $ hg forget i |
|
614 | $ hg forget i | |
607 | $ rm i |
|
615 | $ rm i | |
608 |
|
616 | |||
609 | Copy ignored file to ignored file: no overwriting |
|
617 | Copy ignored file to ignored file: no overwriting | |
610 |
|
618 | |||
611 | $ hg --verbose copy b i |
|
619 | $ hg --verbose copy b i | |
612 | copying b to i |
|
620 | copying b to i | |
613 | $ hg forget i |
|
621 | $ hg forget i | |
614 | $ rm i |
|
622 | $ rm i | |
615 |
|
623 | |||
616 | cp symlink file; hg cp -A symlink file (part1) |
|
624 | cp symlink file; hg cp -A symlink file (part1) | |
617 | - copied symlink points to kwfile: overwrite |
|
625 | - copied symlink points to kwfile: overwrite | |
618 |
|
626 | |||
619 | #if symlink |
|
627 | #if symlink | |
620 | $ cp sym i |
|
628 | $ cp sym i | |
621 | $ ls -l i |
|
629 | $ ls -l i | |
622 | -rw-r--r--* (glob) |
|
630 | -rw-r--r--* (glob) | |
623 | $ head -1 i |
|
631 | $ head -1 i | |
624 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
632 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
625 | $ hg copy --after --verbose sym i |
|
633 | $ hg copy --after --verbose sym i | |
626 | copying sym to i |
|
634 | copying sym to i | |
627 | overwriting i shrinking keywords |
|
635 | overwriting i shrinking keywords | |
628 | $ head -1 i |
|
636 | $ head -1 i | |
629 | expand $Id$ |
|
637 | expand $Id$ | |
630 | $ hg forget i |
|
638 | $ hg forget i | |
631 | $ rm i |
|
639 | $ rm i | |
632 | #endif |
|
640 | #endif | |
633 |
|
641 | |||
634 | Test different options of hg kwfiles |
|
642 | Test different options of hg kwfiles | |
635 |
|
643 | |||
636 | $ hg kwfiles |
|
644 | $ hg kwfiles | |
637 | a |
|
645 | a | |
638 | c |
|
646 | c | |
639 | $ hg -v kwfiles --ignore |
|
647 | $ hg -v kwfiles --ignore | |
640 | I b |
|
648 | I b | |
641 | I sym |
|
649 | I sym | |
642 | $ hg kwfiles --all |
|
650 | $ hg kwfiles --all | |
643 | K a |
|
651 | K a | |
644 | K c |
|
652 | K c | |
645 | I b |
|
653 | I b | |
646 | I sym |
|
654 | I sym | |
647 |
|
655 | |||
648 | Diff specific revision |
|
656 | Diff specific revision | |
649 |
|
657 | |||
650 | $ hg diff --rev 1 |
|
658 | $ hg diff --rev 1 | |
651 | diff -r ef63ca68695b c |
|
659 | diff -r ef63ca68695b c | |
652 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
660 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
653 | +++ b/c * (glob) |
|
661 | +++ b/c * (glob) | |
654 | @@ -0,0 +1,3 @@ |
|
662 | @@ -0,0 +1,3 @@ | |
655 | +expand $Id$ |
|
663 | +expand $Id$ | |
656 | +do not process $Id: |
|
664 | +do not process $Id: | |
657 | +xxx $ |
|
665 | +xxx $ | |
658 |
|
666 | |||
659 | Status after rollback: |
|
667 | Status after rollback: | |
660 |
|
668 | |||
661 | $ hg rollback |
|
669 | $ hg rollback | |
662 | repository tip rolled back to revision 1 (undo commit) |
|
670 | repository tip rolled back to revision 1 (undo commit) | |
663 | working directory now based on revision 1 |
|
671 | working directory now based on revision 1 | |
664 | $ hg status |
|
672 | $ hg status | |
665 | A c |
|
673 | A c | |
666 | $ hg update --clean |
|
674 | $ hg update --clean | |
667 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
675 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
668 |
|
676 | |||
669 | #if symlink |
|
677 | #if symlink | |
670 |
|
678 | |||
671 | cp symlink file; hg cp -A symlink file (part2) |
|
679 | cp symlink file; hg cp -A symlink file (part2) | |
672 | - copied symlink points to kw ignored file: do not overwrite |
|
680 | - copied symlink points to kw ignored file: do not overwrite | |
673 |
|
681 | |||
674 | $ cat a > i |
|
682 | $ cat a > i | |
675 | $ ln -s i symignored |
|
683 | $ ln -s i symignored | |
676 | $ hg commit -Am 'fake expansion in ignored and symlink' i symignored |
|
684 | $ hg commit -Am 'fake expansion in ignored and symlink' i symignored | |
677 | $ cp symignored x |
|
685 | $ cp symignored x | |
678 | $ hg copy --after --verbose symignored x |
|
686 | $ hg copy --after --verbose symignored x | |
679 | copying symignored to x |
|
687 | copying symignored to x | |
680 | $ head -n 1 x |
|
688 | $ head -n 1 x | |
681 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
689 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
682 | $ hg forget x |
|
690 | $ hg forget x | |
683 | $ rm x |
|
691 | $ rm x | |
684 |
|
692 | |||
685 | $ hg rollback |
|
693 | $ hg rollback | |
686 | repository tip rolled back to revision 1 (undo commit) |
|
694 | repository tip rolled back to revision 1 (undo commit) | |
687 | working directory now based on revision 1 |
|
695 | working directory now based on revision 1 | |
688 | $ hg update --clean |
|
696 | $ hg update --clean | |
689 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
697 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
690 | $ rm i symignored |
|
698 | $ rm i symignored | |
691 |
|
699 | |||
692 | #endif |
|
700 | #endif | |
693 |
|
701 | |||
694 | Custom keywordmaps as argument to kwdemo |
|
702 | Custom keywordmaps as argument to kwdemo | |
695 |
|
703 | |||
696 | $ hg --quiet kwdemo "Xinfo = {author}: {desc}" |
|
704 | $ hg --quiet kwdemo "Xinfo = {author}: {desc}" | |
697 | [extensions] |
|
705 | [extensions] | |
698 | keyword = |
|
706 | keyword = | |
699 | [keyword] |
|
707 | [keyword] | |
700 | ** = |
|
708 | ** = | |
701 | b = ignore |
|
709 | b = ignore | |
702 | demo.txt = |
|
710 | demo.txt = | |
703 | i = ignore |
|
711 | i = ignore | |
704 | [keywordset] |
|
712 | [keywordset] | |
705 | svn = False |
|
713 | svn = False | |
706 | [keywordmaps] |
|
714 | [keywordmaps] | |
707 | Xinfo = {author}: {desc} |
|
715 | Xinfo = {author}: {desc} | |
708 | $Xinfo: test: hg keyword configuration and expansion example $ |
|
716 | $Xinfo: test: hg keyword configuration and expansion example $ | |
709 |
|
717 | |||
710 | Configure custom keywordmaps |
|
718 | Configure custom keywordmaps | |
711 |
|
719 | |||
712 | $ cat <<EOF >>$HGRCPATH |
|
720 | $ cat <<EOF >>$HGRCPATH | |
713 | > [keywordmaps] |
|
721 | > [keywordmaps] | |
714 | > Id = {file} {node|short} {date|rfc822date} {author|user} |
|
722 | > Id = {file} {node|short} {date|rfc822date} {author|user} | |
715 | > Xinfo = {author}: {desc} |
|
723 | > Xinfo = {author}: {desc} | |
716 | > EOF |
|
724 | > EOF | |
717 |
|
725 | |||
718 | Cat and hg cat files before custom expansion |
|
726 | Cat and hg cat files before custom expansion | |
719 |
|
727 | |||
720 | $ cat a b |
|
728 | $ cat a b | |
721 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ |
|
729 | expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $ | |
722 | do not process $Id: |
|
730 | do not process $Id: | |
723 | xxx $ |
|
731 | xxx $ | |
724 | ignore $Id$ |
|
732 | ignore $Id$ | |
725 | $ hg cat sym a b && echo |
|
733 | $ hg cat sym a b && echo | |
726 | expand $Id: a ef63ca68695b Thu, 01 Jan 1970 00:00:00 +0000 user $ |
|
734 | expand $Id: a ef63ca68695b Thu, 01 Jan 1970 00:00:00 +0000 user $ | |
727 | do not process $Id: |
|
735 | do not process $Id: | |
728 | xxx $ |
|
736 | xxx $ | |
729 | ignore $Id$ |
|
737 | ignore $Id$ | |
730 | a |
|
738 | a | |
731 |
|
739 | |||
732 | Write custom keyword and prepare multi-line commit message |
|
740 | Write custom keyword and prepare multi-line commit message | |
733 |
|
741 | |||
734 | $ echo '$Xinfo$' >> a |
|
742 | $ echo '$Xinfo$' >> a | |
735 | $ cat <<EOF >> log |
|
743 | $ cat <<EOF >> log | |
736 | > firstline |
|
744 | > firstline | |
737 | > secondline |
|
745 | > secondline | |
738 | > EOF |
|
746 | > EOF | |
739 |
|
747 | |||
740 | Interrupted commit should not change state |
|
748 | Interrupted commit should not change state | |
741 |
|
749 | |||
742 | $ hg commit |
|
750 | $ hg commit | |
743 | abort: empty commit message |
|
751 | abort: empty commit message | |
744 | [255] |
|
752 | [255] | |
745 | $ hg status |
|
753 | $ hg status | |
746 | M a |
|
754 | M a | |
747 | ? c |
|
755 | ? c | |
748 | ? log |
|
756 | ? log | |
749 |
|
757 | |||
750 | Commit with multi-line message and custom expansion |
|
758 | Commit with multi-line message and custom expansion | |
751 |
|
759 | |||
752 | |Note: |
|
760 | |Note: | |
753 | | |
|
761 | | | |
754 | | After the last rollback, the "served" branchheads cache became invalid, but |
|
762 | | After the last rollback, the "served" branchheads cache became invalid, but | |
755 | | all changesets in the repo were public. For filtering this means: |
|
763 | | all changesets in the repo were public. For filtering this means: | |
756 | | "immutable" == "served" == ø. |
|
764 | | "immutable" == "served" == ø. | |
757 | | |
|
765 | | | |
758 | | As the "served" cache is invalid, we fall back to the "immutable" cache. But |
|
766 | | As the "served" cache is invalid, we fall back to the "immutable" cache. But | |
759 | | no update is needed between "immutable" and "served" and the "served" cache |
|
767 | | no update is needed between "immutable" and "served" and the "served" cache | |
760 | | is not updated on disk. The on-disk version therefore stays invalid for some |
|
768 | | is not updated on disk. The on-disk version therefore stays invalid for some | |
761 | | time. This explains why the "served" branchheads cache is detected as |
|
769 | | time. This explains why the "served" branchheads cache is detected as | |
762 | | invalid here. |
|
770 | | invalid here. | |
763 |
|
771 | |||
764 | $ hg --debug commit -l log -d '2 0' -u 'User Name <user@example.com>' |
|
772 | $ hg --debug commit -l log -d '2 0' -u 'User Name <user@example.com>' | |
765 | invalid branchheads cache (served): tip differs |
|
773 | invalid branchheads cache (served): tip differs | |
766 | a |
|
774 | a | |
767 | invalid branchheads cache (served): tip differs |
|
775 | invalid branchheads cache (served): tip differs | |
768 | overwriting a expanding keywords |
|
776 | overwriting a expanding keywords | |
769 | committed changeset 2:bb948857c743469b22bbf51f7ec8112279ca5d83 |
|
777 | committed changeset 2:bb948857c743469b22bbf51f7ec8112279ca5d83 | |
770 | $ rm log |
|
778 | $ rm log | |
771 |
|
779 | |||
772 | Stat, verify and show custom expansion (firstline) |
|
780 | Stat, verify and show custom expansion (firstline) | |
773 |
|
781 | |||
774 | $ hg status |
|
782 | $ hg status | |
775 | ? c |
|
783 | ? c | |
776 | $ hg verify |
|
784 | $ hg verify | |
777 | checking changesets |
|
785 | checking changesets | |
778 | checking manifests |
|
786 | checking manifests | |
779 | crosschecking files in changesets and manifests |
|
787 | crosschecking files in changesets and manifests | |
780 | checking files |
|
788 | checking files | |
781 | 3 files, 3 changesets, 4 total revisions |
|
789 | 3 files, 3 changesets, 4 total revisions | |
782 | $ cat a b |
|
790 | $ cat a b | |
783 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
|
791 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | |
784 | do not process $Id: |
|
792 | do not process $Id: | |
785 | xxx $ |
|
793 | xxx $ | |
786 | $Xinfo: User Name <user@example.com>: firstline $ |
|
794 | $Xinfo: User Name <user@example.com>: firstline $ | |
787 | ignore $Id$ |
|
795 | ignore $Id$ | |
788 | $ hg cat sym a b && echo |
|
796 | $ hg cat sym a b && echo | |
789 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
|
797 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | |
790 | do not process $Id: |
|
798 | do not process $Id: | |
791 | xxx $ |
|
799 | xxx $ | |
792 | $Xinfo: User Name <user@example.com>: firstline $ |
|
800 | $Xinfo: User Name <user@example.com>: firstline $ | |
793 | ignore $Id$ |
|
801 | ignore $Id$ | |
794 | a |
|
802 | a | |
795 |
|
803 | |||
796 | annotate |
|
804 | annotate | |
797 |
|
805 | |||
798 | $ hg annotate a |
|
806 | $ hg annotate a | |
799 | 1: expand $Id$ |
|
807 | 1: expand $Id$ | |
800 | 1: do not process $Id: |
|
808 | 1: do not process $Id: | |
801 | 1: xxx $ |
|
809 | 1: xxx $ | |
802 | 2: $Xinfo$ |
|
810 | 2: $Xinfo$ | |
803 |
|
811 | |||
804 | remove with status checks |
|
812 | remove with status checks | |
805 |
|
813 | |||
806 | $ hg debugrebuildstate |
|
814 | $ hg debugrebuildstate | |
807 | $ hg remove a |
|
815 | $ hg remove a | |
808 | $ hg --debug commit -m rma |
|
816 | $ hg --debug commit -m rma | |
809 | committed changeset 3:d14c712653769de926994cf7fbb06c8fbd68f012 |
|
817 | committed changeset 3:d14c712653769de926994cf7fbb06c8fbd68f012 | |
810 | $ hg status |
|
818 | $ hg status | |
811 | ? c |
|
819 | ? c | |
812 |
|
820 | |||
813 | Rollback, revert, and check expansion |
|
821 | Rollback, revert, and check expansion | |
814 |
|
822 | |||
815 | $ hg rollback |
|
823 | $ hg rollback | |
816 | repository tip rolled back to revision 2 (undo commit) |
|
824 | repository tip rolled back to revision 2 (undo commit) | |
817 | working directory now based on revision 2 |
|
825 | working directory now based on revision 2 | |
818 | $ hg status |
|
826 | $ hg status | |
819 | R a |
|
827 | R a | |
820 | ? c |
|
828 | ? c | |
821 | $ hg revert --no-backup --rev tip a |
|
829 | $ hg revert --no-backup --rev tip a | |
822 | $ cat a |
|
830 | $ cat a | |
823 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
|
831 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | |
824 | do not process $Id: |
|
832 | do not process $Id: | |
825 | xxx $ |
|
833 | xxx $ | |
826 | $Xinfo: User Name <user@example.com>: firstline $ |
|
834 | $Xinfo: User Name <user@example.com>: firstline $ | |
827 |
|
835 | |||
828 | Clone to test global and local configurations |
|
836 | Clone to test global and local configurations | |
829 |
|
837 | |||
830 | $ cd .. |
|
838 | $ cd .. | |
831 |
|
839 | |||
832 | Expansion in destination with global configuration |
|
840 | Expansion in destination with global configuration | |
833 |
|
841 | |||
834 | $ hg --quiet clone Test globalconf |
|
842 | $ hg --quiet clone Test globalconf | |
835 | $ cat globalconf/a |
|
843 | $ cat globalconf/a | |
836 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
|
844 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | |
837 | do not process $Id: |
|
845 | do not process $Id: | |
838 | xxx $ |
|
846 | xxx $ | |
839 | $Xinfo: User Name <user@example.com>: firstline $ |
|
847 | $Xinfo: User Name <user@example.com>: firstline $ | |
840 |
|
848 | |||
841 | No expansion in destination with local configuration in origin only |
|
849 | No expansion in destination with local configuration in origin only | |
842 |
|
850 | |||
843 | $ hg --quiet --config 'keyword.**=ignore' clone Test localconf |
|
851 | $ hg --quiet --config 'keyword.**=ignore' clone Test localconf | |
844 | $ cat localconf/a |
|
852 | $ cat localconf/a | |
845 | expand $Id$ |
|
853 | expand $Id$ | |
846 | do not process $Id: |
|
854 | do not process $Id: | |
847 | xxx $ |
|
855 | xxx $ | |
848 | $Xinfo$ |
|
856 | $Xinfo$ | |
849 |
|
857 | |||
850 | Clone to test incoming |
|
858 | Clone to test incoming | |
851 |
|
859 | |||
852 | $ hg clone -r1 Test Test-a |
|
860 | $ hg clone -r1 Test Test-a | |
853 | adding changesets |
|
861 | adding changesets | |
854 | adding manifests |
|
862 | adding manifests | |
855 | adding file changes |
|
863 | adding file changes | |
856 | added 2 changesets with 3 changes to 3 files |
|
864 | added 2 changesets with 3 changes to 3 files | |
857 | updating to branch default |
|
865 | updating to branch default | |
858 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
866 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
859 | $ cd Test-a |
|
867 | $ cd Test-a | |
860 | $ cat <<EOF >> .hg/hgrc |
|
868 | $ cat <<EOF >> .hg/hgrc | |
861 | > [paths] |
|
869 | > [paths] | |
862 | > default = ../Test |
|
870 | > default = ../Test | |
863 | > EOF |
|
871 | > EOF | |
864 | $ hg incoming |
|
872 | $ hg incoming | |
865 | comparing with $TESTTMP/Test (glob) |
|
873 | comparing with $TESTTMP/Test (glob) | |
866 | searching for changes |
|
874 | searching for changes | |
867 | changeset: 2:bb948857c743 |
|
875 | changeset: 2:bb948857c743 | |
868 | tag: tip |
|
876 | tag: tip | |
869 | user: User Name <user@example.com> |
|
877 | user: User Name <user@example.com> | |
870 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
878 | date: Thu Jan 01 00:00:02 1970 +0000 | |
871 | summary: firstline |
|
879 | summary: firstline | |
872 |
|
880 | |||
873 | Imported patch should not be rejected |
|
881 | Imported patch should not be rejected | |
874 |
|
882 | |||
875 | >>> import re |
|
883 | >>> import re | |
876 | >>> text = re.sub(r'(Id.*)', r'\1 rejecttest', open('a').read()) |
|
884 | >>> text = re.sub(r'(Id.*)', r'\1 rejecttest', open('a').read()) | |
877 | >>> open('a', 'wb').write(text) |
|
885 | >>> open('a', 'wb').write(text) | |
878 | $ hg --debug commit -m'rejects?' -d '3 0' -u 'User Name <user@example.com>' |
|
886 | $ hg --debug commit -m'rejects?' -d '3 0' -u 'User Name <user@example.com>' | |
879 | a |
|
887 | a | |
880 | overwriting a expanding keywords |
|
888 | overwriting a expanding keywords | |
881 | committed changeset 2:85e279d709ffc28c9fdd1b868570985fc3d87082 |
|
889 | committed changeset 2:85e279d709ffc28c9fdd1b868570985fc3d87082 | |
882 | $ hg export -o ../rejecttest.diff tip |
|
890 | $ hg export -o ../rejecttest.diff tip | |
883 | $ cd ../Test |
|
891 | $ cd ../Test | |
884 | $ hg import ../rejecttest.diff |
|
892 | $ hg import ../rejecttest.diff | |
885 | applying ../rejecttest.diff |
|
893 | applying ../rejecttest.diff | |
886 | $ cat a b |
|
894 | $ cat a b | |
887 | expand $Id: a 4e0994474d25 Thu, 01 Jan 1970 00:00:03 +0000 user $ rejecttest |
|
895 | expand $Id: a 4e0994474d25 Thu, 01 Jan 1970 00:00:03 +0000 user $ rejecttest | |
888 | do not process $Id: rejecttest |
|
896 | do not process $Id: rejecttest | |
889 | xxx $ |
|
897 | xxx $ | |
890 | $Xinfo: User Name <user@example.com>: rejects? $ |
|
898 | $Xinfo: User Name <user@example.com>: rejects? $ | |
891 | ignore $Id$ |
|
899 | ignore $Id$ | |
892 |
|
900 | |||
893 | $ hg rollback |
|
901 | $ hg rollback | |
894 | repository tip rolled back to revision 2 (undo import) |
|
902 | repository tip rolled back to revision 2 (undo import) | |
895 | working directory now based on revision 2 |
|
903 | working directory now based on revision 2 | |
896 | $ hg update --clean |
|
904 | $ hg update --clean | |
897 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
905 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
898 |
|
906 | |||
899 | kwexpand/kwshrink on selected files |
|
907 | kwexpand/kwshrink on selected files | |
900 |
|
908 | |||
901 | $ mkdir x |
|
909 | $ mkdir x | |
902 | $ hg copy a x/a |
|
910 | $ hg copy a x/a | |
903 | $ hg --verbose kwshrink a |
|
911 | $ hg --verbose kwshrink a | |
904 | overwriting a shrinking keywords |
|
912 | overwriting a shrinking keywords | |
905 | - sleep required for dirstate.normal() check |
|
913 | - sleep required for dirstate.normal() check | |
906 | $ sleep 1 |
|
914 | $ sleep 1 | |
907 | $ hg status a |
|
915 | $ hg status a | |
908 | $ hg --verbose kwexpand a |
|
916 | $ hg --verbose kwexpand a | |
909 | overwriting a expanding keywords |
|
917 | overwriting a expanding keywords | |
910 | $ hg status a |
|
918 | $ hg status a | |
911 |
|
919 | |||
912 | kwexpand x/a should abort |
|
920 | kwexpand x/a should abort | |
913 |
|
921 | |||
914 | $ hg --verbose kwexpand x/a |
|
922 | $ hg --verbose kwexpand x/a | |
915 | abort: outstanding uncommitted changes |
|
923 | abort: outstanding uncommitted changes | |
916 | [255] |
|
924 | [255] | |
917 | $ cd x |
|
925 | $ cd x | |
918 | $ hg --debug commit -m xa -d '3 0' -u 'User Name <user@example.com>' |
|
926 | $ hg --debug commit -m xa -d '3 0' -u 'User Name <user@example.com>' | |
919 | x/a |
|
927 | x/a | |
920 | x/a: copy a:779c764182ce5d43e2b1eb66ce06d7b47bfe342e |
|
928 | x/a: copy a:779c764182ce5d43e2b1eb66ce06d7b47bfe342e | |
921 | overwriting x/a expanding keywords |
|
929 | overwriting x/a expanding keywords | |
922 | committed changeset 3:b4560182a3f9a358179fd2d835c15e9da379c1e4 |
|
930 | committed changeset 3:b4560182a3f9a358179fd2d835c15e9da379c1e4 | |
923 | $ cat a |
|
931 | $ cat a | |
924 | expand $Id: x/a b4560182a3f9 Thu, 01 Jan 1970 00:00:03 +0000 user $ |
|
932 | expand $Id: x/a b4560182a3f9 Thu, 01 Jan 1970 00:00:03 +0000 user $ | |
925 | do not process $Id: |
|
933 | do not process $Id: | |
926 | xxx $ |
|
934 | xxx $ | |
927 | $Xinfo: User Name <user@example.com>: xa $ |
|
935 | $Xinfo: User Name <user@example.com>: xa $ | |
928 |
|
936 | |||
929 | kwshrink a inside directory x |
|
937 | kwshrink a inside directory x | |
930 |
|
938 | |||
931 | $ hg --verbose kwshrink a |
|
939 | $ hg --verbose kwshrink a | |
932 | overwriting x/a shrinking keywords |
|
940 | overwriting x/a shrinking keywords | |
933 | $ cat a |
|
941 | $ cat a | |
934 | expand $Id$ |
|
942 | expand $Id$ | |
935 | do not process $Id: |
|
943 | do not process $Id: | |
936 | xxx $ |
|
944 | xxx $ | |
937 | $Xinfo$ |
|
945 | $Xinfo$ | |
938 | $ cd .. |
|
946 | $ cd .. | |
939 |
|
947 | |||
940 | kwexpand nonexistent |
|
948 | kwexpand nonexistent | |
941 |
|
949 | |||
942 | $ hg kwexpand nonexistent |
|
950 | $ hg kwexpand nonexistent | |
943 | nonexistent:* (glob) |
|
951 | nonexistent:* (glob) | |
944 |
|
952 | |||
945 |
|
953 | |||
946 | #if serve |
|
954 | #if serve | |
947 | hg serve |
|
955 | hg serve | |
948 | - expand with hgweb file |
|
956 | - expand with hgweb file | |
949 | - no expansion with hgweb annotate/changeset/filediff |
|
957 | - no expansion with hgweb annotate/changeset/filediff | |
950 | - check errors |
|
958 | - check errors | |
951 |
|
959 | |||
952 | $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log |
|
960 | $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log | |
953 | $ cat hg.pid >> $DAEMON_PIDS |
|
961 | $ cat hg.pid >> $DAEMON_PIDS | |
954 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/a/?style=raw' |
|
962 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'file/tip/a/?style=raw' | |
955 | 200 Script output follows |
|
963 | 200 Script output follows | |
956 |
|
964 | |||
957 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
|
965 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | |
958 | do not process $Id: |
|
966 | do not process $Id: | |
959 | xxx $ |
|
967 | xxx $ | |
960 | $Xinfo: User Name <user@example.com>: firstline $ |
|
968 | $Xinfo: User Name <user@example.com>: firstline $ | |
961 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'annotate/tip/a/?style=raw' |
|
969 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'annotate/tip/a/?style=raw' | |
962 | 200 Script output follows |
|
970 | 200 Script output follows | |
963 |
|
971 | |||
964 |
|
972 | |||
965 | user@1: expand $Id$ |
|
973 | user@1: expand $Id$ | |
966 | user@1: do not process $Id: |
|
974 | user@1: do not process $Id: | |
967 | user@1: xxx $ |
|
975 | user@1: xxx $ | |
968 | user@2: $Xinfo$ |
|
976 | user@2: $Xinfo$ | |
969 |
|
977 | |||
970 |
|
978 | |||
971 |
|
979 | |||
972 |
|
980 | |||
973 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rev/tip/?style=raw' |
|
981 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'rev/tip/?style=raw' | |
974 | 200 Script output follows |
|
982 | 200 Script output follows | |
975 |
|
983 | |||
976 |
|
984 | |||
977 | # HG changeset patch |
|
985 | # HG changeset patch | |
978 | # User User Name <user@example.com> |
|
986 | # User User Name <user@example.com> | |
979 | # Date 3 0 |
|
987 | # Date 3 0 | |
980 | # Node ID b4560182a3f9a358179fd2d835c15e9da379c1e4 |
|
988 | # Node ID b4560182a3f9a358179fd2d835c15e9da379c1e4 | |
981 | # Parent bb948857c743469b22bbf51f7ec8112279ca5d83 |
|
989 | # Parent bb948857c743469b22bbf51f7ec8112279ca5d83 | |
982 | xa |
|
990 | xa | |
983 |
|
991 | |||
984 | diff -r bb948857c743 -r b4560182a3f9 x/a |
|
992 | diff -r bb948857c743 -r b4560182a3f9 x/a | |
985 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
993 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
986 | +++ b/x/a Thu Jan 01 00:00:03 1970 +0000 |
|
994 | +++ b/x/a Thu Jan 01 00:00:03 1970 +0000 | |
987 | @@ -0,0 +1,4 @@ |
|
995 | @@ -0,0 +1,4 @@ | |
988 | +expand $Id$ |
|
996 | +expand $Id$ | |
989 | +do not process $Id: |
|
997 | +do not process $Id: | |
990 | +xxx $ |
|
998 | +xxx $ | |
991 | +$Xinfo$ |
|
999 | +$Xinfo$ | |
992 |
|
1000 | |||
993 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/bb948857c743/a?style=raw' |
|
1001 | $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'diff/bb948857c743/a?style=raw' | |
994 | 200 Script output follows |
|
1002 | 200 Script output follows | |
995 |
|
1003 | |||
996 |
|
1004 | |||
997 | diff -r ef63ca68695b -r bb948857c743 a |
|
1005 | diff -r ef63ca68695b -r bb948857c743 a | |
998 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1006 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
999 | +++ b/a Thu Jan 01 00:00:02 1970 +0000 |
|
1007 | +++ b/a Thu Jan 01 00:00:02 1970 +0000 | |
1000 | @@ -1,3 +1,4 @@ |
|
1008 | @@ -1,3 +1,4 @@ | |
1001 | expand $Id$ |
|
1009 | expand $Id$ | |
1002 | do not process $Id: |
|
1010 | do not process $Id: | |
1003 | xxx $ |
|
1011 | xxx $ | |
1004 | +$Xinfo$ |
|
1012 | +$Xinfo$ | |
1005 |
|
1013 | |||
1006 |
|
1014 | |||
1007 |
|
1015 | |||
1008 |
|
1016 | |||
1009 | $ cat errors.log |
|
1017 | $ cat errors.log | |
1010 | #endif |
|
1018 | #endif | |
1011 |
|
1019 | |||
1012 | Prepare merge and resolve tests |
|
1020 | Prepare merge and resolve tests | |
1013 |
|
1021 | |||
1014 | $ echo '$Id$' > m |
|
1022 | $ echo '$Id$' > m | |
1015 | $ hg add m |
|
1023 | $ hg add m | |
1016 | $ hg commit -m 4kw |
|
1024 | $ hg commit -m 4kw | |
1017 | $ echo foo >> m |
|
1025 | $ echo foo >> m | |
1018 | $ hg commit -m 5foo |
|
1026 | $ hg commit -m 5foo | |
1019 |
|
1027 | |||
1020 | simplemerge |
|
1028 | simplemerge | |
1021 |
|
1029 | |||
1022 | $ hg update 4 |
|
1030 | $ hg update 4 | |
1023 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1031 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1024 | $ echo foo >> m |
|
1032 | $ echo foo >> m | |
1025 | $ hg commit -m 6foo |
|
1033 | $ hg commit -m 6foo | |
1026 | created new head |
|
1034 | created new head | |
1027 | $ hg merge |
|
1035 | $ hg merge | |
1028 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1036 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1029 | (branch merge, don't forget to commit) |
|
1037 | (branch merge, don't forget to commit) | |
1030 | $ hg commit -m simplemerge |
|
1038 | $ hg commit -m simplemerge | |
1031 | $ cat m |
|
1039 | $ cat m | |
1032 | $Id: m 27d48ee14f67 Thu, 01 Jan 1970 00:00:00 +0000 test $ |
|
1040 | $Id: m 27d48ee14f67 Thu, 01 Jan 1970 00:00:00 +0000 test $ | |
1033 | foo |
|
1041 | foo | |
1034 |
|
1042 | |||
1035 | conflict: keyword should stay outside conflict zone |
|
1043 | conflict: keyword should stay outside conflict zone | |
1036 |
|
1044 | |||
1037 | $ hg update 4 |
|
1045 | $ hg update 4 | |
1038 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1046 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1039 | $ echo bar >> m |
|
1047 | $ echo bar >> m | |
1040 | $ hg commit -m 8bar |
|
1048 | $ hg commit -m 8bar | |
1041 | created new head |
|
1049 | created new head | |
1042 | $ hg merge |
|
1050 | $ hg merge | |
1043 | merging m |
|
1051 | merging m | |
1044 | warning: conflicts during merge. |
|
1052 | warning: conflicts during merge. | |
1045 | merging m incomplete! (edit conflicts, then use 'hg resolve --mark') |
|
1053 | merging m incomplete! (edit conflicts, then use 'hg resolve --mark') | |
1046 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
1054 | 0 files updated, 0 files merged, 0 files removed, 1 files unresolved | |
1047 | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon |
|
1055 | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | |
1048 | [1] |
|
1056 | [1] | |
1049 | $ cat m |
|
1057 | $ cat m | |
1050 | $Id$ |
|
1058 | $Id$ | |
1051 | <<<<<<< local: 88a80c8d172e - test: 8bar |
|
1059 | <<<<<<< local: 88a80c8d172e - test: 8bar | |
1052 | bar |
|
1060 | bar | |
1053 | ======= |
|
1061 | ======= | |
1054 | foo |
|
1062 | foo | |
1055 | >>>>>>> other: 85d2d2d732a5 - test: simplemerge |
|
1063 | >>>>>>> other: 85d2d2d732a5 - test: simplemerge | |
1056 |
|
1064 | |||
1057 | resolve to local |
|
1065 | resolve to local | |
1058 |
|
1066 | |||
1059 | $ HGMERGE=internal:local hg resolve -a |
|
1067 | $ HGMERGE=internal:local hg resolve -a | |
1060 | (no more unresolved files) |
|
1068 | (no more unresolved files) | |
1061 | $ hg commit -m localresolve |
|
1069 | $ hg commit -m localresolve | |
1062 | $ cat m |
|
1070 | $ cat m | |
1063 | $Id: m 800511b3a22d Thu, 01 Jan 1970 00:00:00 +0000 test $ |
|
1071 | $Id: m 800511b3a22d Thu, 01 Jan 1970 00:00:00 +0000 test $ | |
1064 | bar |
|
1072 | bar | |
1065 |
|
1073 | |||
1066 | Test restricted mode with transplant -b |
|
1074 | Test restricted mode with transplant -b | |
1067 |
|
1075 | |||
1068 | $ hg update 6 |
|
1076 | $ hg update 6 | |
1069 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1077 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1070 | $ hg branch foo |
|
1078 | $ hg branch foo | |
1071 | marked working directory as branch foo |
|
1079 | marked working directory as branch foo | |
1072 | (branches are permanent and global, did you want a bookmark?) |
|
1080 | (branches are permanent and global, did you want a bookmark?) | |
1073 | $ mv a a.bak |
|
1081 | $ mv a a.bak | |
1074 | $ echo foobranch > a |
|
1082 | $ echo foobranch > a | |
1075 | $ cat a.bak >> a |
|
1083 | $ cat a.bak >> a | |
1076 | $ rm a.bak |
|
1084 | $ rm a.bak | |
1077 | $ hg commit -m 9foobranch |
|
1085 | $ hg commit -m 9foobranch | |
1078 | $ hg update default |
|
1086 | $ hg update default | |
1079 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1087 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1080 | $ hg -y transplant -b foo tip |
|
1088 | $ hg -y transplant -b foo tip | |
1081 | applying 4aa30d025d50 |
|
1089 | applying 4aa30d025d50 | |
1082 | 4aa30d025d50 transplanted to e00abbf63521 |
|
1090 | 4aa30d025d50 transplanted to e00abbf63521 | |
1083 |
|
1091 | |||
1084 | Expansion in changeset but not in file |
|
1092 | Expansion in changeset but not in file | |
1085 |
|
1093 | |||
1086 | $ hg tip -p |
|
1094 | $ hg tip -p | |
1087 | changeset: 11:e00abbf63521 |
|
1095 | changeset: 11:e00abbf63521 | |
1088 | tag: tip |
|
1096 | tag: tip | |
1089 | parent: 9:800511b3a22d |
|
1097 | parent: 9:800511b3a22d | |
1090 | user: test |
|
1098 | user: test | |
1091 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
1099 | date: Thu Jan 01 00:00:00 1970 +0000 | |
1092 | summary: 9foobranch |
|
1100 | summary: 9foobranch | |
1093 |
|
1101 | |||
1094 | diff -r 800511b3a22d -r e00abbf63521 a |
|
1102 | diff -r 800511b3a22d -r e00abbf63521 a | |
1095 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1103 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1096 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
1104 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
1097 | @@ -1,3 +1,4 @@ |
|
1105 | @@ -1,3 +1,4 @@ | |
1098 | +foobranch |
|
1106 | +foobranch | |
1099 | expand $Id$ |
|
1107 | expand $Id$ | |
1100 | do not process $Id: |
|
1108 | do not process $Id: | |
1101 | xxx $ |
|
1109 | xxx $ | |
1102 |
|
1110 | |||
1103 | $ head -n 2 a |
|
1111 | $ head -n 2 a | |
1104 | foobranch |
|
1112 | foobranch | |
1105 | expand $Id: a e00abbf63521 Thu, 01 Jan 1970 00:00:00 +0000 test $ |
|
1113 | expand $Id: a e00abbf63521 Thu, 01 Jan 1970 00:00:00 +0000 test $ | |
1106 |
|
1114 | |||
1107 | Turn off expansion |
|
1115 | Turn off expansion | |
1108 |
|
1116 | |||
1109 | $ hg -q rollback |
|
1117 | $ hg -q rollback | |
1110 | $ hg -q update -C |
|
1118 | $ hg -q update -C | |
1111 |
|
1119 | |||
1112 | kwshrink with unknown file u |
|
1120 | kwshrink with unknown file u | |
1113 |
|
1121 | |||
1114 | $ cp a u |
|
1122 | $ cp a u | |
1115 | $ hg --verbose kwshrink |
|
1123 | $ hg --verbose kwshrink | |
1116 | overwriting a shrinking keywords |
|
1124 | overwriting a shrinking keywords | |
1117 | overwriting m shrinking keywords |
|
1125 | overwriting m shrinking keywords | |
1118 | overwriting x/a shrinking keywords |
|
1126 | overwriting x/a shrinking keywords | |
1119 |
|
1127 | |||
1120 | Keywords shrunk in working directory, but not yet disabled |
|
1128 | Keywords shrunk in working directory, but not yet disabled | |
1121 | - cat shows unexpanded keywords |
|
1129 | - cat shows unexpanded keywords | |
1122 | - hg cat shows expanded keywords |
|
1130 | - hg cat shows expanded keywords | |
1123 |
|
1131 | |||
1124 | $ cat a b |
|
1132 | $ cat a b | |
1125 | expand $Id$ |
|
1133 | expand $Id$ | |
1126 | do not process $Id: |
|
1134 | do not process $Id: | |
1127 | xxx $ |
|
1135 | xxx $ | |
1128 | $Xinfo$ |
|
1136 | $Xinfo$ | |
1129 | ignore $Id$ |
|
1137 | ignore $Id$ | |
1130 | $ hg cat sym a b && echo |
|
1138 | $ hg cat sym a b && echo | |
1131 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
|
1139 | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | |
1132 | do not process $Id: |
|
1140 | do not process $Id: | |
1133 | xxx $ |
|
1141 | xxx $ | |
1134 | $Xinfo: User Name <user@example.com>: firstline $ |
|
1142 | $Xinfo: User Name <user@example.com>: firstline $ | |
1135 | ignore $Id$ |
|
1143 | ignore $Id$ | |
1136 | a |
|
1144 | a | |
1137 |
|
1145 | |||
1138 | Now disable keyword expansion |
|
1146 | Now disable keyword expansion | |
1139 |
|
1147 | |||
1140 | $ cp $HGRCPATH $HGRCPATH.backup |
|
1148 | $ cp $HGRCPATH $HGRCPATH.backup | |
1141 | $ rm "$HGRCPATH" |
|
1149 | $ rm "$HGRCPATH" | |
1142 | $ cat a b |
|
1150 | $ cat a b | |
1143 | expand $Id$ |
|
1151 | expand $Id$ | |
1144 | do not process $Id: |
|
1152 | do not process $Id: | |
1145 | xxx $ |
|
1153 | xxx $ | |
1146 | $Xinfo$ |
|
1154 | $Xinfo$ | |
1147 | ignore $Id$ |
|
1155 | ignore $Id$ | |
1148 | $ hg cat sym a b && echo |
|
1156 | $ hg cat sym a b && echo | |
1149 | expand $Id$ |
|
1157 | expand $Id$ | |
1150 | do not process $Id: |
|
1158 | do not process $Id: | |
1151 | xxx $ |
|
1159 | xxx $ | |
1152 | $Xinfo$ |
|
1160 | $Xinfo$ | |
1153 | ignore $Id$ |
|
1161 | ignore $Id$ | |
1154 | a |
|
1162 | a | |
1155 |
|
1163 | |||
1156 | enable keyword expansion again |
|
1164 | enable keyword expansion again | |
1157 |
|
1165 | |||
1158 | $ cat $HGRCPATH.backup >> $HGRCPATH |
|
1166 | $ cat $HGRCPATH.backup >> $HGRCPATH | |
1159 |
|
1167 | |||
1160 | Test restricted mode with unshelve |
|
1168 | Test restricted mode with unshelve | |
1161 |
|
1169 | |||
1162 | $ cat <<EOF >> $HGRCPATH |
|
1170 | $ cat <<EOF >> $HGRCPATH | |
1163 | > [extensions] |
|
1171 | > [extensions] | |
1164 | > shelve = |
|
1172 | > shelve = | |
1165 | > EOF |
|
1173 | > EOF | |
1166 |
|
1174 | |||
1167 | $ echo xxxx >> a |
|
1175 | $ echo xxxx >> a | |
1168 | $ hg diff |
|
1176 | $ hg diff | |
1169 | diff -r 800511b3a22d a |
|
1177 | diff -r 800511b3a22d a | |
1170 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1178 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1171 | +++ b/a * (glob) |
|
1179 | +++ b/a * (glob) | |
1172 | @@ -2,3 +2,4 @@ |
|
1180 | @@ -2,3 +2,4 @@ | |
1173 | do not process $Id: |
|
1181 | do not process $Id: | |
1174 | xxx $ |
|
1182 | xxx $ | |
1175 | $Xinfo$ |
|
1183 | $Xinfo$ | |
1176 | +xxxx |
|
1184 | +xxxx | |
1177 | $ hg shelve -q --name tmp |
|
1185 | $ hg shelve -q --name tmp | |
1178 | $ hg shelve --list --patch |
|
1186 | $ hg shelve --list --patch | |
1179 | tmp (*) changes to 'localresolve' (glob) |
|
1187 | tmp (*) changes to 'localresolve' (glob) | |
1180 |
|
1188 | |||
1181 | diff --git a/a b/a |
|
1189 | diff --git a/a b/a | |
1182 | --- a/a |
|
1190 | --- a/a | |
1183 | +++ b/a |
|
1191 | +++ b/a | |
1184 | @@ -2,3 +2,4 @@ |
|
1192 | @@ -2,3 +2,4 @@ | |
1185 | do not process $Id: |
|
1193 | do not process $Id: | |
1186 | xxx $ |
|
1194 | xxx $ | |
1187 | $Xinfo$ |
|
1195 | $Xinfo$ | |
1188 | +xxxx |
|
1196 | +xxxx | |
1189 |
|
1197 | |||
1190 | $ hg update -q -C 10 |
|
1198 | $ hg update -q -C 10 | |
1191 | $ hg unshelve -q tmp |
|
1199 | $ hg unshelve -q tmp | |
1192 | $ hg diff |
|
1200 | $ hg diff | |
1193 | diff -r 4aa30d025d50 a |
|
1201 | diff -r 4aa30d025d50 a | |
1194 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1202 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1195 | +++ b/a * (glob) |
|
1203 | +++ b/a * (glob) | |
1196 | @@ -3,3 +3,4 @@ |
|
1204 | @@ -3,3 +3,4 @@ | |
1197 | do not process $Id: |
|
1205 | do not process $Id: | |
1198 | xxx $ |
|
1206 | xxx $ | |
1199 | $Xinfo$ |
|
1207 | $Xinfo$ | |
1200 | +xxxx |
|
1208 | +xxxx | |
1201 |
|
1209 | |||
1202 | Test restricted mode with rebase |
|
1210 | Test restricted mode with rebase | |
1203 |
|
1211 | |||
1204 | $ cat <<EOF >> $HGRCPATH |
|
1212 | $ cat <<EOF >> $HGRCPATH | |
1205 | > [extensions] |
|
1213 | > [extensions] | |
1206 | > rebase = |
|
1214 | > rebase = | |
1207 | > EOF |
|
1215 | > EOF | |
1208 |
|
1216 | |||
1209 | $ hg update -q -C 9 |
|
1217 | $ hg update -q -C 9 | |
1210 |
|
1218 | |||
1211 | $ echo xxxx >> a |
|
1219 | $ echo xxxx >> a | |
1212 | $ hg commit -m '#11' |
|
1220 | $ hg commit -m '#11' | |
1213 | $ hg diff -c 11 |
|
1221 | $ hg diff -c 11 | |
1214 | diff -r 800511b3a22d -r b07670694489 a |
|
1222 | diff -r 800511b3a22d -r b07670694489 a | |
1215 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1223 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1216 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
1224 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
1217 | @@ -2,3 +2,4 @@ |
|
1225 | @@ -2,3 +2,4 @@ | |
1218 | do not process $Id: |
|
1226 | do not process $Id: | |
1219 | xxx $ |
|
1227 | xxx $ | |
1220 | $Xinfo$ |
|
1228 | $Xinfo$ | |
1221 | +xxxx |
|
1229 | +xxxx | |
1222 |
|
1230 | |||
1223 | $ hg diff -c 10 |
|
1231 | $ hg diff -c 10 | |
1224 | diff -r 27d48ee14f67 -r 4aa30d025d50 a |
|
1232 | diff -r 27d48ee14f67 -r 4aa30d025d50 a | |
1225 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1233 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1226 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
1234 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
1227 | @@ -1,3 +1,4 @@ |
|
1235 | @@ -1,3 +1,4 @@ | |
1228 | +foobranch |
|
1236 | +foobranch | |
1229 | expand $Id$ |
|
1237 | expand $Id$ | |
1230 | do not process $Id: |
|
1238 | do not process $Id: | |
1231 | xxx $ |
|
1239 | xxx $ | |
1232 |
|
1240 | |||
1233 | $ hg rebase -q -s 10 -d 11 --keep |
|
1241 | $ hg rebase -q -s 10 -d 11 --keep | |
1234 | $ hg diff -r 9 -r 12 a |
|
1242 | $ hg diff -r 9 -r 12 a | |
1235 | diff -r 800511b3a22d -r 1939b927726c a |
|
1243 | diff -r 800511b3a22d -r 1939b927726c a | |
1236 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1244 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1237 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
1245 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
1238 | @@ -1,4 +1,6 @@ |
|
1246 | @@ -1,4 +1,6 @@ | |
1239 | +foobranch |
|
1247 | +foobranch | |
1240 | expand $Id$ |
|
1248 | expand $Id$ | |
1241 | do not process $Id: |
|
1249 | do not process $Id: | |
1242 | xxx $ |
|
1250 | xxx $ | |
1243 | $Xinfo$ |
|
1251 | $Xinfo$ | |
1244 | +xxxx |
|
1252 | +xxxx | |
1245 |
|
1253 | |||
1246 | Test restricted mode with graft |
|
1254 | Test restricted mode with graft | |
1247 |
|
1255 | |||
1248 | $ hg graft -q 10 |
|
1256 | $ hg graft -q 10 | |
1249 | $ hg diff -r 9 -r 13 a |
|
1257 | $ hg diff -r 9 -r 13 a | |
1250 | diff -r 800511b3a22d -r 01a68de1003a a |
|
1258 | diff -r 800511b3a22d -r 01a68de1003a a | |
1251 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1259 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1252 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
1260 | +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
1253 | @@ -1,4 +1,6 @@ |
|
1261 | @@ -1,4 +1,6 @@ | |
1254 | +foobranch |
|
1262 | +foobranch | |
1255 | expand $Id$ |
|
1263 | expand $Id$ | |
1256 | do not process $Id: |
|
1264 | do not process $Id: | |
1257 | xxx $ |
|
1265 | xxx $ | |
1258 | $Xinfo$ |
|
1266 | $Xinfo$ | |
1259 | +xxxx |
|
1267 | +xxxx | |
1260 |
|
1268 | |||
1261 | Test restricted mode with backout |
|
1269 | Test restricted mode with backout | |
1262 |
|
1270 | |||
1263 | $ hg backout -q 11 |
|
1271 | $ hg backout -q 11 | |
1264 | $ hg diff a |
|
1272 | $ hg diff a | |
1265 | diff -r 01a68de1003a a |
|
1273 | diff -r 01a68de1003a a | |
1266 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1274 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1267 | +++ b/a * (glob) |
|
1275 | +++ b/a * (glob) | |
1268 | @@ -3,4 +3,3 @@ |
|
1276 | @@ -3,4 +3,3 @@ | |
1269 | do not process $Id: |
|
1277 | do not process $Id: | |
1270 | xxx $ |
|
1278 | xxx $ | |
1271 | $Xinfo$ |
|
1279 | $Xinfo$ | |
1272 | -xxxx |
|
1280 | -xxxx | |
1273 |
|
1281 | |||
1274 | Test restricted mode with histedit |
|
1282 | Test restricted mode with histedit | |
1275 |
|
1283 | |||
1276 | $ cat <<EOF >> $HGRCPATH |
|
1284 | $ cat <<EOF >> $HGRCPATH | |
1277 | > [extensions] |
|
1285 | > [extensions] | |
1278 | > histedit = |
|
1286 | > histedit = | |
1279 | > EOF |
|
1287 | > EOF | |
1280 |
|
1288 | |||
1281 | $ hg commit -m 'backout #11' |
|
1289 | $ hg commit -m 'backout #11' | |
1282 | $ hg histedit -q --command - 13 <<EOF |
|
1290 | $ hg histedit -q --command - 13 <<EOF | |
1283 | > pick 49f5f2d940c3 14 backout #11 |
|
1291 | > pick 49f5f2d940c3 14 backout #11 | |
1284 | > pick 01a68de1003a 13 9foobranch |
|
1292 | > pick 01a68de1003a 13 9foobranch | |
1285 | > EOF |
|
1293 | > EOF | |
1286 |
|
1294 | |||
1287 | Test restricted mode with fetch (with merge) |
|
1295 | Test restricted mode with fetch (with merge) | |
1288 |
|
1296 | |||
1289 | $ cat <<EOF >> $HGRCPATH |
|
1297 | $ cat <<EOF >> $HGRCPATH | |
1290 | > [extensions] |
|
1298 | > [extensions] | |
1291 | > fetch = |
|
1299 | > fetch = | |
1292 | > EOF |
|
1300 | > EOF | |
1293 |
|
1301 | |||
1294 | $ hg clone -q -r 9 . ../fetch-merge |
|
1302 | $ hg clone -q -r 9 . ../fetch-merge | |
1295 | $ cd ../fetch-merge |
|
1303 | $ cd ../fetch-merge | |
1296 | $ hg -R ../Test export 10 | hg import -q - |
|
1304 | $ hg -R ../Test export 10 | hg import -q - | |
1297 | $ hg fetch -q -r 11 |
|
1305 | $ hg fetch -q -r 11 | |
1298 | $ hg diff -r 9 a |
|
1306 | $ hg diff -r 9 a | |
1299 | diff -r 800511b3a22d a |
|
1307 | diff -r 800511b3a22d a | |
1300 | --- a/a Thu Jan 01 00:00:00 1970 +0000 |
|
1308 | --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
1301 | +++ b/a * (glob) |
|
1309 | +++ b/a * (glob) | |
1302 | @@ -1,4 +1,6 @@ |
|
1310 | @@ -1,4 +1,6 @@ | |
1303 | +foobranch |
|
1311 | +foobranch | |
1304 | expand $Id$ |
|
1312 | expand $Id$ | |
1305 | do not process $Id: |
|
1313 | do not process $Id: | |
1306 | xxx $ |
|
1314 | xxx $ | |
1307 | $Xinfo$ |
|
1315 | $Xinfo$ | |
1308 | +xxxx |
|
1316 | +xxxx | |
1309 |
|
1317 | |||
1310 | $ cd .. |
|
1318 | $ cd .. |
@@ -1,519 +1,527 | |||||
1 | This file focuses mainly on updating largefiles in the working |
|
1 | This file focuses mainly on updating largefiles in the working | |
2 | directory (and ".hg/largefiles/dirstate") |
|
2 | directory (and ".hg/largefiles/dirstate") | |
3 |
|
3 | |||
4 | $ cat >> $HGRCPATH <<EOF |
|
4 | $ cat >> $HGRCPATH <<EOF | |
5 | > [ui] |
|
5 | > [ui] | |
6 | > merge = internal:fail |
|
6 | > merge = internal:fail | |
7 | > [extensions] |
|
7 | > [extensions] | |
8 | > largefiles = |
|
8 | > largefiles = | |
9 | > EOF |
|
9 | > EOF | |
10 |
|
10 | |||
11 | $ hg init repo |
|
11 | $ hg init repo | |
12 | $ cd repo |
|
12 | $ cd repo | |
13 |
|
13 | |||
14 | $ echo large1 > large1 |
|
14 | $ echo large1 > large1 | |
15 | $ echo large2 > large2 |
|
15 | $ echo large2 > large2 | |
16 | $ hg add --large large1 large2 |
|
16 | $ hg add --large large1 large2 | |
17 | $ echo normal1 > normal1 |
|
17 | $ echo normal1 > normal1 | |
18 | $ hg add normal1 |
|
18 | $ hg add normal1 | |
19 | $ hg commit -m '#0' |
|
19 | $ hg commit -m '#0' | |
20 | $ echo 'large1 in #1' > large1 |
|
20 | $ echo 'large1 in #1' > large1 | |
21 | $ echo 'normal1 in #1' > normal1 |
|
21 | $ echo 'normal1 in #1' > normal1 | |
22 | $ hg commit -m '#1' |
|
22 | $ hg commit -m '#1' | |
23 | $ hg update -q -C 0 |
|
23 | $ hg update -q -C 0 | |
24 | $ echo 'large2 in #2' > large2 |
|
24 | $ echo 'large2 in #2' > large2 | |
25 | $ hg commit -m '#2' |
|
25 | $ hg commit -m '#2' | |
26 | created new head |
|
26 | created new head | |
27 |
|
27 | |||
28 | Test that "hg merge" updates largefiles from "other" correctly |
|
28 | Test that "hg merge" updates largefiles from "other" correctly | |
29 |
|
29 | |||
30 | (getting largefiles from "other" normally) |
|
30 | (getting largefiles from "other" normally) | |
31 |
|
31 | |||
32 | $ hg status -A large1 |
|
32 | $ hg status -A large1 | |
33 | C large1 |
|
33 | C large1 | |
34 | $ cat large1 |
|
34 | $ cat large1 | |
35 | large1 |
|
35 | large1 | |
36 | $ cat .hglf/large1 |
|
36 | $ cat .hglf/large1 | |
37 | 4669e532d5b2c093a78eca010077e708a071bb64 |
|
37 | 4669e532d5b2c093a78eca010077e708a071bb64 | |
38 | $ hg merge --config debug.dirstate.delaywrite=2 |
|
38 | $ hg merge --config debug.dirstate.delaywrite=2 | |
39 | getting changed largefiles |
|
39 | getting changed largefiles | |
40 | 1 largefiles updated, 0 removed |
|
40 | 1 largefiles updated, 0 removed | |
41 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
41 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
42 | (branch merge, don't forget to commit) |
|
42 | (branch merge, don't forget to commit) | |
43 | $ hg status -A large1 |
|
43 | $ hg status -A large1 | |
44 | M large1 |
|
44 | M large1 | |
45 | $ cat large1 |
|
45 | $ cat large1 | |
46 | large1 in #1 |
|
46 | large1 in #1 | |
47 | $ cat .hglf/large1 |
|
47 | $ cat .hglf/large1 | |
48 | 58e24f733a964da346e2407a2bee99d9001184f5 |
|
48 | 58e24f733a964da346e2407a2bee99d9001184f5 | |
49 | $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]' |
|
49 | $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]' | |
50 | -4669e532d5b2c093a78eca010077e708a071bb64 |
|
50 | -4669e532d5b2c093a78eca010077e708a071bb64 | |
51 | +58e24f733a964da346e2407a2bee99d9001184f5 |
|
51 | +58e24f733a964da346e2407a2bee99d9001184f5 | |
52 |
|
52 | |||
53 | (getting largefiles from "other" via conflict prompt) |
|
53 | (getting largefiles from "other" via conflict prompt) | |
54 |
|
54 | |||
55 | $ hg update -q -C 2 |
|
55 | $ hg update -q -C 2 | |
56 | $ echo 'large1 in #3' > large1 |
|
56 | $ echo 'large1 in #3' > large1 | |
57 | $ echo 'normal1 in #3' > normal1 |
|
57 | $ echo 'normal1 in #3' > normal1 | |
58 | $ hg commit -m '#3' |
|
58 | $ hg commit -m '#3' | |
59 | $ cat .hglf/large1 |
|
59 | $ cat .hglf/large1 | |
60 | e5bb990443d6a92aaf7223813720f7566c9dd05b |
|
60 | e5bb990443d6a92aaf7223813720f7566c9dd05b | |
61 | $ hg merge --config debug.dirstate.delaywrite=2 --config ui.interactive=True <<EOF |
|
61 | $ hg merge --config debug.dirstate.delaywrite=2 --config ui.interactive=True <<EOF | |
62 | > o |
|
62 | > o | |
63 | > EOF |
|
63 | > EOF | |
64 | largefile large1 has a merge conflict |
|
64 | largefile large1 has a merge conflict | |
65 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
65 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
66 | keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or |
|
66 | keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or | |
67 |
take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? |
|
67 | take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o | |
|
68 | merging normal1 | |||
68 | warning: conflicts during merge. |
|
69 | warning: conflicts during merge. | |
69 | merging normal1 incomplete! (edit conflicts, then use 'hg resolve --mark') |
|
70 | merging normal1 incomplete! (edit conflicts, then use 'hg resolve --mark') | |
70 | getting changed largefiles |
|
71 | getting changed largefiles | |
71 | 1 largefiles updated, 0 removed |
|
72 | 1 largefiles updated, 0 removed | |
72 | 0 files updated, 1 files merged, 0 files removed, 1 files unresolved |
|
73 | 0 files updated, 1 files merged, 0 files removed, 1 files unresolved | |
73 | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon |
|
74 | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | |
74 | [1] |
|
75 | [1] | |
75 | $ hg status -A large1 |
|
76 | $ hg status -A large1 | |
76 | M large1 |
|
77 | M large1 | |
77 | $ cat large1 |
|
78 | $ cat large1 | |
78 | large1 in #1 |
|
79 | large1 in #1 | |
79 | $ cat .hglf/large1 |
|
80 | $ cat .hglf/large1 | |
80 | 58e24f733a964da346e2407a2bee99d9001184f5 |
|
81 | 58e24f733a964da346e2407a2bee99d9001184f5 | |
81 |
|
82 | |||
82 | Test that "hg revert -r REV" updates largefiles from "REV" correctly |
|
83 | Test that "hg revert -r REV" updates largefiles from "REV" correctly | |
83 |
|
84 | |||
84 | $ hg update -q -C 3 |
|
85 | $ hg update -q -C 3 | |
85 | $ hg status -A large1 |
|
86 | $ hg status -A large1 | |
86 | C large1 |
|
87 | C large1 | |
87 | $ cat large1 |
|
88 | $ cat large1 | |
88 | large1 in #3 |
|
89 | large1 in #3 | |
89 | $ cat .hglf/large1 |
|
90 | $ cat .hglf/large1 | |
90 | e5bb990443d6a92aaf7223813720f7566c9dd05b |
|
91 | e5bb990443d6a92aaf7223813720f7566c9dd05b | |
91 | $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]' |
|
92 | $ hg diff -c 1 --nodates .hglf/large1 | grep '^[+-][0-9a-z]' | |
92 | -4669e532d5b2c093a78eca010077e708a071bb64 |
|
93 | -4669e532d5b2c093a78eca010077e708a071bb64 | |
93 | +58e24f733a964da346e2407a2bee99d9001184f5 |
|
94 | +58e24f733a964da346e2407a2bee99d9001184f5 | |
94 | $ hg revert --no-backup -r 1 --config debug.dirstate.delaywrite=2 large1 |
|
95 | $ hg revert --no-backup -r 1 --config debug.dirstate.delaywrite=2 large1 | |
95 | $ hg status -A large1 |
|
96 | $ hg status -A large1 | |
96 | M large1 |
|
97 | M large1 | |
97 | $ cat large1 |
|
98 | $ cat large1 | |
98 | large1 in #1 |
|
99 | large1 in #1 | |
99 | $ cat .hglf/large1 |
|
100 | $ cat .hglf/large1 | |
100 | 58e24f733a964da346e2407a2bee99d9001184f5 |
|
101 | 58e24f733a964da346e2407a2bee99d9001184f5 | |
101 |
|
102 | |||
102 | Test that "hg rollback" restores status of largefiles correctly |
|
103 | Test that "hg rollback" restores status of largefiles correctly | |
103 |
|
104 | |||
104 | $ hg update -C -q |
|
105 | $ hg update -C -q | |
105 | $ hg remove large1 |
|
106 | $ hg remove large1 | |
106 | $ test -f .hglf/large1 |
|
107 | $ test -f .hglf/large1 | |
107 | [1] |
|
108 | [1] | |
108 | $ hg forget large2 |
|
109 | $ hg forget large2 | |
109 | $ test -f .hglf/large2 |
|
110 | $ test -f .hglf/large2 | |
110 | [1] |
|
111 | [1] | |
111 | $ echo largeX > largeX |
|
112 | $ echo largeX > largeX | |
112 | $ hg add --large largeX |
|
113 | $ hg add --large largeX | |
113 | $ cat .hglf/largeX |
|
114 | $ cat .hglf/largeX | |
114 |
|
115 | |||
115 | $ hg commit -m 'will be rollback-ed soon' |
|
116 | $ hg commit -m 'will be rollback-ed soon' | |
116 | $ echo largeY > largeY |
|
117 | $ echo largeY > largeY | |
117 | $ hg add --large largeY |
|
118 | $ hg add --large largeY | |
118 | $ hg status -A large1 |
|
119 | $ hg status -A large1 | |
119 | large1: No such file or directory |
|
120 | large1: No such file or directory | |
120 | $ hg status -A large2 |
|
121 | $ hg status -A large2 | |
121 | ? large2 |
|
122 | ? large2 | |
122 | $ hg status -A largeX |
|
123 | $ hg status -A largeX | |
123 | C largeX |
|
124 | C largeX | |
124 | $ hg status -A largeY |
|
125 | $ hg status -A largeY | |
125 | A largeY |
|
126 | A largeY | |
126 | $ hg rollback |
|
127 | $ hg rollback | |
127 | repository tip rolled back to revision 3 (undo commit) |
|
128 | repository tip rolled back to revision 3 (undo commit) | |
128 | working directory now based on revision 3 |
|
129 | working directory now based on revision 3 | |
129 | $ hg status -A large1 |
|
130 | $ hg status -A large1 | |
130 | R large1 |
|
131 | R large1 | |
131 | $ test -f .hglf/large1 |
|
132 | $ test -f .hglf/large1 | |
132 | [1] |
|
133 | [1] | |
133 | $ hg status -A large2 |
|
134 | $ hg status -A large2 | |
134 | R large2 |
|
135 | R large2 | |
135 | $ test -f .hglf/large2 |
|
136 | $ test -f .hglf/large2 | |
136 | [1] |
|
137 | [1] | |
137 | $ hg status -A largeX |
|
138 | $ hg status -A largeX | |
138 | A largeX |
|
139 | A largeX | |
139 | $ cat .hglf/largeX |
|
140 | $ cat .hglf/largeX | |
140 |
|
141 | |||
141 | $ hg status -A largeY |
|
142 | $ hg status -A largeY | |
142 | ? largeY |
|
143 | ? largeY | |
143 | $ test -f .hglf/largeY |
|
144 | $ test -f .hglf/largeY | |
144 | [1] |
|
145 | [1] | |
145 |
|
146 | |||
146 | Test that "hg rollback" restores standins correctly |
|
147 | Test that "hg rollback" restores standins correctly | |
147 |
|
148 | |||
148 | $ hg commit -m 'will be rollback-ed soon' |
|
149 | $ hg commit -m 'will be rollback-ed soon' | |
149 | $ hg update -q -C 2 |
|
150 | $ hg update -q -C 2 | |
150 | $ cat large1 |
|
151 | $ cat large1 | |
151 | large1 |
|
152 | large1 | |
152 | $ cat .hglf/large1 |
|
153 | $ cat .hglf/large1 | |
153 | 4669e532d5b2c093a78eca010077e708a071bb64 |
|
154 | 4669e532d5b2c093a78eca010077e708a071bb64 | |
154 | $ cat large2 |
|
155 | $ cat large2 | |
155 | large2 in #2 |
|
156 | large2 in #2 | |
156 | $ cat .hglf/large2 |
|
157 | $ cat .hglf/large2 | |
157 | 3cfce6277e7668985707b6887ce56f9f62f6ccd9 |
|
158 | 3cfce6277e7668985707b6887ce56f9f62f6ccd9 | |
158 |
|
159 | |||
159 | $ hg rollback -q -f |
|
160 | $ hg rollback -q -f | |
160 | $ cat large1 |
|
161 | $ cat large1 | |
161 | large1 |
|
162 | large1 | |
162 | $ cat .hglf/large1 |
|
163 | $ cat .hglf/large1 | |
163 | 4669e532d5b2c093a78eca010077e708a071bb64 |
|
164 | 4669e532d5b2c093a78eca010077e708a071bb64 | |
164 | $ cat large2 |
|
165 | $ cat large2 | |
165 | large2 in #2 |
|
166 | large2 in #2 | |
166 | $ cat .hglf/large2 |
|
167 | $ cat .hglf/large2 | |
167 | 3cfce6277e7668985707b6887ce56f9f62f6ccd9 |
|
168 | 3cfce6277e7668985707b6887ce56f9f62f6ccd9 | |
168 |
|
169 | |||
169 | (rollback the parent of the working directory, when the parent of it |
|
170 | (rollback the parent of the working directory, when the parent of it | |
170 | is not branch-tip) |
|
171 | is not branch-tip) | |
171 |
|
172 | |||
172 | $ hg update -q -C 1 |
|
173 | $ hg update -q -C 1 | |
173 | $ cat .hglf/large1 |
|
174 | $ cat .hglf/large1 | |
174 | 58e24f733a964da346e2407a2bee99d9001184f5 |
|
175 | 58e24f733a964da346e2407a2bee99d9001184f5 | |
175 | $ cat .hglf/large2 |
|
176 | $ cat .hglf/large2 | |
176 | 1deebade43c8c498a3c8daddac0244dc55d1331d |
|
177 | 1deebade43c8c498a3c8daddac0244dc55d1331d | |
177 |
|
178 | |||
178 | $ echo normalX > normalX |
|
179 | $ echo normalX > normalX | |
179 | $ hg add normalX |
|
180 | $ hg add normalX | |
180 | $ hg commit -m 'will be rollback-ed soon' |
|
181 | $ hg commit -m 'will be rollback-ed soon' | |
181 | $ hg rollback -q |
|
182 | $ hg rollback -q | |
182 |
|
183 | |||
183 | $ cat .hglf/large1 |
|
184 | $ cat .hglf/large1 | |
184 | 58e24f733a964da346e2407a2bee99d9001184f5 |
|
185 | 58e24f733a964da346e2407a2bee99d9001184f5 | |
185 | $ cat .hglf/large2 |
|
186 | $ cat .hglf/large2 | |
186 | 1deebade43c8c498a3c8daddac0244dc55d1331d |
|
187 | 1deebade43c8c498a3c8daddac0244dc55d1331d | |
187 |
|
188 | |||
188 | Test that "hg status" shows status of largefiles correctly just after |
|
189 | Test that "hg status" shows status of largefiles correctly just after | |
189 | automated commit like rebase/transplant |
|
190 | automated commit like rebase/transplant | |
190 |
|
191 | |||
191 | $ cat >> .hg/hgrc <<EOF |
|
192 | $ cat >> .hg/hgrc <<EOF | |
192 | > [extensions] |
|
193 | > [extensions] | |
193 | > rebase = |
|
194 | > rebase = | |
194 | > strip = |
|
195 | > strip = | |
195 | > transplant = |
|
196 | > transplant = | |
196 | > EOF |
|
197 | > EOF | |
197 | $ hg update -q -C 1 |
|
198 | $ hg update -q -C 1 | |
198 | $ hg remove large1 |
|
199 | $ hg remove large1 | |
199 | $ echo largeX > largeX |
|
200 | $ echo largeX > largeX | |
200 | $ hg add --large largeX |
|
201 | $ hg add --large largeX | |
201 | $ hg commit -m '#4' |
|
202 | $ hg commit -m '#4' | |
202 |
|
203 | |||
203 | $ hg rebase -s 1 -d 2 --keep |
|
204 | $ hg rebase -s 1 -d 2 --keep | |
204 | $ hg status -A large1 |
|
205 | $ hg status -A large1 | |
205 | large1: No such file or directory |
|
206 | large1: No such file or directory | |
206 | $ hg status -A largeX |
|
207 | $ hg status -A largeX | |
207 | C largeX |
|
208 | C largeX | |
208 | $ hg strip -q 5 |
|
209 | $ hg strip -q 5 | |
209 |
|
210 | |||
210 | $ hg update -q -C 2 |
|
211 | $ hg update -q -C 2 | |
211 | $ hg transplant -q 1 4 |
|
212 | $ hg transplant -q 1 4 | |
212 | $ hg status -A large1 |
|
213 | $ hg status -A large1 | |
213 | large1: No such file or directory |
|
214 | large1: No such file or directory | |
214 | $ hg status -A largeX |
|
215 | $ hg status -A largeX | |
215 | C largeX |
|
216 | C largeX | |
216 | $ hg strip -q 5 |
|
217 | $ hg strip -q 5 | |
217 |
|
218 | |||
218 | $ hg update -q -C 2 |
|
219 | $ hg update -q -C 2 | |
219 | $ hg transplant -q --merge 1 --merge 4 |
|
220 | $ hg transplant -q --merge 1 --merge 4 | |
220 | $ hg status -A large1 |
|
221 | $ hg status -A large1 | |
221 | large1: No such file or directory |
|
222 | large1: No such file or directory | |
222 | $ hg status -A largeX |
|
223 | $ hg status -A largeX | |
223 | C largeX |
|
224 | C largeX | |
224 | $ hg strip -q 5 |
|
225 | $ hg strip -q 5 | |
225 |
|
226 | |||
226 | Test that linear merge can detect modification (and conflict) correctly |
|
227 | Test that linear merge can detect modification (and conflict) correctly | |
227 |
|
228 | |||
228 | (linear merge without conflict) |
|
229 | (linear merge without conflict) | |
229 |
|
230 | |||
230 | $ echo 'large2 for linear merge (no conflict)' > large2 |
|
231 | $ echo 'large2 for linear merge (no conflict)' > large2 | |
231 | $ hg update 3 --config debug.dirstate.delaywrite=2 |
|
232 | $ hg update 3 --config debug.dirstate.delaywrite=2 | |
232 | getting changed largefiles |
|
233 | getting changed largefiles | |
233 | 1 largefiles updated, 0 removed |
|
234 | 1 largefiles updated, 0 removed | |
234 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
235 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
235 | $ hg status -A large2 |
|
236 | $ hg status -A large2 | |
236 | M large2 |
|
237 | M large2 | |
237 | $ cat large2 |
|
238 | $ cat large2 | |
238 | large2 for linear merge (no conflict) |
|
239 | large2 for linear merge (no conflict) | |
239 | $ cat .hglf/large2 |
|
240 | $ cat .hglf/large2 | |
240 | 9c4bf8f1b33536d6e5f89447e10620cfe52ea710 |
|
241 | 9c4bf8f1b33536d6e5f89447e10620cfe52ea710 | |
241 |
|
242 | |||
242 | (linear merge with conflict, choosing "other") |
|
243 | (linear merge with conflict, choosing "other") | |
243 |
|
244 | |||
244 | $ hg update -q -C 2 |
|
245 | $ hg update -q -C 2 | |
245 | $ echo 'large1 for linear merge (conflict)' > large1 |
|
246 | $ echo 'large1 for linear merge (conflict)' > large1 | |
246 | $ hg update 3 --config ui.interactive=True <<EOF |
|
247 | $ hg update 3 --config ui.interactive=True <<EOF | |
247 | > o |
|
248 | > o | |
248 | > EOF |
|
249 | > EOF | |
249 | largefile large1 has a merge conflict |
|
250 | largefile large1 has a merge conflict | |
250 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
251 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
251 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or |
|
252 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or | |
252 |
take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? |
|
253 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? o | |
|
254 | getting changed largefiles | |||
253 | 1 largefiles updated, 0 removed |
|
255 | 1 largefiles updated, 0 removed | |
254 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
256 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
255 | $ hg status -A large1 |
|
257 | $ hg status -A large1 | |
256 | C large1 |
|
258 | C large1 | |
257 | $ cat large1 |
|
259 | $ cat large1 | |
258 | large1 in #3 |
|
260 | large1 in #3 | |
259 | $ cat .hglf/large1 |
|
261 | $ cat .hglf/large1 | |
260 | e5bb990443d6a92aaf7223813720f7566c9dd05b |
|
262 | e5bb990443d6a92aaf7223813720f7566c9dd05b | |
261 |
|
263 | |||
262 | (linear merge with conflict, choosing "local") |
|
264 | (linear merge with conflict, choosing "local") | |
263 |
|
265 | |||
264 | $ hg update -q -C 2 |
|
266 | $ hg update -q -C 2 | |
265 | $ echo 'large1 for linear merge (conflict)' > large1 |
|
267 | $ echo 'large1 for linear merge (conflict)' > large1 | |
266 | $ hg update 3 --config debug.dirstate.delaywrite=2 |
|
268 | $ hg update 3 --config debug.dirstate.delaywrite=2 | |
267 | largefile large1 has a merge conflict |
|
269 | largefile large1 has a merge conflict | |
268 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
270 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
269 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or |
|
271 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or | |
270 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l |
|
272 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l | |
271 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
273 | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
272 | $ hg status -A large1 |
|
274 | $ hg status -A large1 | |
273 | M large1 |
|
275 | M large1 | |
274 | $ cat large1 |
|
276 | $ cat large1 | |
275 | large1 for linear merge (conflict) |
|
277 | large1 for linear merge (conflict) | |
276 | $ cat .hglf/large1 |
|
278 | $ cat .hglf/large1 | |
277 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 |
|
279 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 | |
278 |
|
280 | |||
279 | Test a linear merge to a revision containing same-name normal file |
|
281 | Test a linear merge to a revision containing same-name normal file | |
280 |
|
282 | |||
281 | $ hg update -q -C 3 |
|
283 | $ hg update -q -C 3 | |
282 | $ hg remove large2 |
|
284 | $ hg remove large2 | |
283 | $ echo 'large2 as normal file' > large2 |
|
285 | $ echo 'large2 as normal file' > large2 | |
284 | $ hg add large2 |
|
286 | $ hg add large2 | |
285 | $ echo 'large3 as normal file' > large3 |
|
287 | $ echo 'large3 as normal file' > large3 | |
286 | $ hg add large3 |
|
288 | $ hg add large3 | |
287 | $ hg commit -m '#5' |
|
289 | $ hg commit -m '#5' | |
288 | $ hg manifest |
|
290 | $ hg manifest | |
289 | .hglf/large1 |
|
291 | .hglf/large1 | |
290 | large2 |
|
292 | large2 | |
291 | large3 |
|
293 | large3 | |
292 | normal1 |
|
294 | normal1 | |
293 |
|
295 | |||
294 | (modified largefile is already switched to normal) |
|
296 | (modified largefile is already switched to normal) | |
295 |
|
297 | |||
296 | $ hg update -q -C 2 |
|
298 | $ hg update -q -C 2 | |
297 | $ echo 'modified large2 for linear merge' > large2 |
|
299 | $ echo 'modified large2 for linear merge' > large2 | |
298 | $ hg update -q 5 |
|
300 | $ hg update -q 5 | |
299 | local changed .hglf/large2 which remote deleted |
|
301 | local changed .hglf/large2 which remote deleted | |
300 | use (c)hanged version or (d)elete? c |
|
302 | use (c)hanged version or (d)elete? c | |
301 | remote turned local largefile large2 into a normal file |
|
303 | remote turned local largefile large2 into a normal file | |
302 | keep (l)argefile or use (n)ormal file? l |
|
304 | keep (l)argefile or use (n)ormal file? l | |
303 | $ hg debugdirstate --nodates | grep large2 |
|
305 | $ hg debugdirstate --nodates | grep large2 | |
304 | a 0 -1 .hglf/large2 |
|
306 | a 0 -1 .hglf/large2 | |
305 | r 0 0 large2 |
|
307 | r 0 0 large2 | |
306 | $ hg status -A large2 |
|
308 | $ hg status -A large2 | |
307 | A large2 |
|
309 | A large2 | |
308 | $ cat large2 |
|
310 | $ cat large2 | |
309 | modified large2 for linear merge |
|
311 | modified large2 for linear merge | |
310 |
|
312 | |||
311 | (added largefile is already committed as normal) |
|
313 | (added largefile is already committed as normal) | |
312 |
|
314 | |||
313 | $ hg update -q -C 2 |
|
315 | $ hg update -q -C 2 | |
314 | $ echo 'large3 as large file for linear merge' > large3 |
|
316 | $ echo 'large3 as large file for linear merge' > large3 | |
315 | $ hg add --large large3 |
|
317 | $ hg add --large large3 | |
316 | $ hg update -q 5 |
|
318 | $ hg update -q 5 | |
317 | remote turned local largefile large3 into a normal file |
|
319 | remote turned local largefile large3 into a normal file | |
318 | keep (l)argefile or use (n)ormal file? l |
|
320 | keep (l)argefile or use (n)ormal file? l | |
319 | $ hg debugdirstate --nodates | grep large3 |
|
321 | $ hg debugdirstate --nodates | grep large3 | |
320 | a 0 -1 .hglf/large3 |
|
322 | a 0 -1 .hglf/large3 | |
321 | r 0 0 large3 |
|
323 | r 0 0 large3 | |
322 | $ hg status -A large3 |
|
324 | $ hg status -A large3 | |
323 | A large3 |
|
325 | A large3 | |
324 | $ cat large3 |
|
326 | $ cat large3 | |
325 | large3 as large file for linear merge |
|
327 | large3 as large file for linear merge | |
326 | $ rm -f large3 .hglf/large3 |
|
328 | $ rm -f large3 .hglf/large3 | |
327 |
|
329 | |||
328 | Test that the internal linear merging works correctly |
|
330 | Test that the internal linear merging works correctly | |
329 | (both heads are stripped to keep pairing of revision number and commit log) |
|
331 | (both heads are stripped to keep pairing of revision number and commit log) | |
330 |
|
332 | |||
331 | $ hg update -q -C 2 |
|
333 | $ hg update -q -C 2 | |
332 | $ hg strip 3 4 |
|
334 | $ hg strip 3 4 | |
333 | saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9530e27857f7-backup.hg (glob) |
|
335 | saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9530e27857f7-backup.hg (glob) | |
334 | $ mv .hg/strip-backup/9530e27857f7-backup.hg $TESTTMP |
|
336 | $ mv .hg/strip-backup/9530e27857f7-backup.hg $TESTTMP | |
335 |
|
337 | |||
336 | (internal linear merging at "hg pull --update") |
|
338 | (internal linear merging at "hg pull --update") | |
337 |
|
339 | |||
338 | $ echo 'large1 for linear merge (conflict)' > large1 |
|
340 | $ echo 'large1 for linear merge (conflict)' > large1 | |
339 | $ echo 'large2 for linear merge (conflict with normal file)' > large2 |
|
341 | $ echo 'large2 for linear merge (conflict with normal file)' > large2 | |
340 | $ hg pull --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-backup.hg |
|
342 | $ hg pull --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-backup.hg | |
341 | pulling from $TESTTMP/9530e27857f7-backup.hg (glob) |
|
343 | pulling from $TESTTMP/9530e27857f7-backup.hg (glob) | |
342 | searching for changes |
|
344 | searching for changes | |
343 | adding changesets |
|
345 | adding changesets | |
344 | adding manifests |
|
346 | adding manifests | |
345 | adding file changes |
|
347 | adding file changes | |
346 | added 3 changesets with 5 changes to 5 files |
|
348 | added 3 changesets with 5 changes to 5 files | |
347 | local changed .hglf/large2 which remote deleted |
|
349 | local changed .hglf/large2 which remote deleted | |
348 | use (c)hanged version or (d)elete? c |
|
350 | use (c)hanged version or (d)elete? c | |
349 | remote turned local largefile large2 into a normal file |
|
351 | remote turned local largefile large2 into a normal file | |
350 | keep (l)argefile or use (n)ormal file? l |
|
352 | keep (l)argefile or use (n)ormal file? l | |
351 | largefile large1 has a merge conflict |
|
353 | largefile large1 has a merge conflict | |
352 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
354 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
353 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or |
|
355 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or | |
354 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l |
|
356 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l | |
355 | 2 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
357 | 2 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
356 |
|
358 | |||
357 | $ hg status -A large1 |
|
359 | $ hg status -A large1 | |
358 | M large1 |
|
360 | M large1 | |
359 | $ cat large1 |
|
361 | $ cat large1 | |
360 | large1 for linear merge (conflict) |
|
362 | large1 for linear merge (conflict) | |
361 | $ cat .hglf/large1 |
|
363 | $ cat .hglf/large1 | |
362 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 |
|
364 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 | |
363 | $ hg status -A large2 |
|
365 | $ hg status -A large2 | |
364 | A large2 |
|
366 | A large2 | |
365 | $ cat large2 |
|
367 | $ cat large2 | |
366 | large2 for linear merge (conflict with normal file) |
|
368 | large2 for linear merge (conflict with normal file) | |
367 | $ cat .hglf/large2 |
|
369 | $ cat .hglf/large2 | |
368 | d7591fe9be0f6227d90bddf3e4f52ff41fc1f544 |
|
370 | d7591fe9be0f6227d90bddf3e4f52ff41fc1f544 | |
369 |
|
371 | |||
370 | (internal linear merging at "hg unbundle --update") |
|
372 | (internal linear merging at "hg unbundle --update") | |
371 |
|
373 | |||
372 | $ hg update -q -C 2 |
|
374 | $ hg update -q -C 2 | |
373 | $ hg rollback -q |
|
375 | $ hg rollback -q | |
374 |
|
376 | |||
375 | $ echo 'large1 for linear merge (conflict)' > large1 |
|
377 | $ echo 'large1 for linear merge (conflict)' > large1 | |
376 | $ echo 'large2 for linear merge (conflict with normal file)' > large2 |
|
378 | $ echo 'large2 for linear merge (conflict with normal file)' > large2 | |
377 | $ hg unbundle --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-backup.hg |
|
379 | $ hg unbundle --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-backup.hg | |
378 | adding changesets |
|
380 | adding changesets | |
379 | adding manifests |
|
381 | adding manifests | |
380 | adding file changes |
|
382 | adding file changes | |
381 | added 3 changesets with 5 changes to 5 files |
|
383 | added 3 changesets with 5 changes to 5 files | |
382 | local changed .hglf/large2 which remote deleted |
|
384 | local changed .hglf/large2 which remote deleted | |
383 | use (c)hanged version or (d)elete? c |
|
385 | use (c)hanged version or (d)elete? c | |
384 | remote turned local largefile large2 into a normal file |
|
386 | remote turned local largefile large2 into a normal file | |
385 | keep (l)argefile or use (n)ormal file? l |
|
387 | keep (l)argefile or use (n)ormal file? l | |
386 | largefile large1 has a merge conflict |
|
388 | largefile large1 has a merge conflict | |
387 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
389 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
388 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or |
|
390 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or | |
389 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l |
|
391 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l | |
390 | 2 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
392 | 2 files updated, 1 files merged, 0 files removed, 0 files unresolved | |
391 |
|
393 | |||
392 | $ hg status -A large1 |
|
394 | $ hg status -A large1 | |
393 | M large1 |
|
395 | M large1 | |
394 | $ cat large1 |
|
396 | $ cat large1 | |
395 | large1 for linear merge (conflict) |
|
397 | large1 for linear merge (conflict) | |
396 | $ cat .hglf/large1 |
|
398 | $ cat .hglf/large1 | |
397 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 |
|
399 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 | |
398 | $ hg status -A large2 |
|
400 | $ hg status -A large2 | |
399 | A large2 |
|
401 | A large2 | |
400 | $ cat large2 |
|
402 | $ cat large2 | |
401 | large2 for linear merge (conflict with normal file) |
|
403 | large2 for linear merge (conflict with normal file) | |
402 | $ cat .hglf/large2 |
|
404 | $ cat .hglf/large2 | |
403 | d7591fe9be0f6227d90bddf3e4f52ff41fc1f544 |
|
405 | d7591fe9be0f6227d90bddf3e4f52ff41fc1f544 | |
404 |
|
406 | |||
405 | (internal linear merging in subrepo at "hg update") |
|
407 | (internal linear merging in subrepo at "hg update") | |
406 |
|
408 | |||
407 | $ cd .. |
|
409 | $ cd .. | |
408 | $ hg init subparent |
|
410 | $ hg init subparent | |
409 | $ cd subparent |
|
411 | $ cd subparent | |
410 |
|
412 | |||
411 | $ hg clone -q -u 2 ../repo sub |
|
413 | $ hg clone -q -u 2 ../repo sub | |
412 | $ cat > .hgsub <<EOF |
|
414 | $ cat > .hgsub <<EOF | |
413 | > sub = sub |
|
415 | > sub = sub | |
414 | > EOF |
|
416 | > EOF | |
415 | $ hg add .hgsub |
|
417 | $ hg add .hgsub | |
416 | $ hg commit -m '#0@parent' |
|
418 | $ hg commit -m '#0@parent' | |
417 | $ cat .hgsubstate |
|
419 | $ cat .hgsubstate | |
418 | f74e50bd9e5594b7cf1e6c5cbab86ddd25f3ca2f sub |
|
420 | f74e50bd9e5594b7cf1e6c5cbab86ddd25f3ca2f sub | |
419 | $ hg -R sub update -q |
|
421 | $ hg -R sub update -q | |
420 | $ hg commit -m '#1@parent' |
|
422 | $ hg commit -m '#1@parent' | |
421 | $ cat .hgsubstate |
|
423 | $ cat .hgsubstate | |
422 | d65e59e952a9638e2ce863b41a420ca723dd3e8d sub |
|
424 | d65e59e952a9638e2ce863b41a420ca723dd3e8d sub | |
423 | $ hg update -q 0 |
|
425 | $ hg update -q 0 | |
424 |
|
426 | |||
425 | $ echo 'large1 for linear merge (conflict)' > sub/large1 |
|
427 | $ echo 'large1 for linear merge (conflict)' > sub/large1 | |
426 | $ echo 'large2 for linear merge (conflict with normal file)' > sub/large2 |
|
428 | $ echo 'large2 for linear merge (conflict with normal file)' > sub/large2 | |
427 | $ hg update --config ui.interactive=True --config debug.dirstate.delaywrite=2 <<EOF |
|
429 | $ hg update --config ui.interactive=True --config debug.dirstate.delaywrite=2 <<EOF | |
428 | > m |
|
430 | > m | |
429 | > r |
|
431 | > r | |
430 | > c |
|
432 | > c | |
431 | > l |
|
433 | > l | |
432 | > l |
|
434 | > l | |
433 | > EOF |
|
435 | > EOF | |
434 | subrepository sub diverged (local revision: f74e50bd9e55, remote revision: d65e59e952a9) |
|
436 | subrepository sub diverged (local revision: f74e50bd9e55, remote revision: d65e59e952a9) | |
435 | (M)erge, keep (l)ocal or keep (r)emote? subrepository sources for sub differ (in checked out version) |
|
437 | (M)erge, keep (l)ocal or keep (r)emote? m | |
|
438 | subrepository sources for sub differ (in checked out version) | |||
436 | use (l)ocal source (f74e50bd9e55) or (r)emote source (d65e59e952a9)? |
|
439 | use (l)ocal source (f74e50bd9e55) or (r)emote source (d65e59e952a9)? | |
|
440 | r | |||
437 |
|
|
441 | local changed .hglf/large2 which remote deleted | |
438 | use (c)hanged version or (d)elete? remote turned local largefile large2 into a normal file |
|
442 | use (c)hanged version or (d)elete? c | |
439 | keep (l)argefile or use (n)ormal file? largefile large1 has a merge conflict |
|
443 | remote turned local largefile large2 into a normal file | |
|
444 | keep (l)argefile or use (n)ormal file? l | |||
|
445 | largefile large1 has a merge conflict | |||
440 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
446 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
441 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or |
|
447 | keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or | |
442 |
take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? |
|
448 | take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l | |
|
449 | 2 files updated, 1 files merged, 0 files removed, 0 files unresolved | |||
443 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
450 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
444 |
|
451 | |||
445 | $ hg -R sub status -A sub/large1 |
|
452 | $ hg -R sub status -A sub/large1 | |
446 | M sub/large1 |
|
453 | M sub/large1 | |
447 | $ cat sub/large1 |
|
454 | $ cat sub/large1 | |
448 | large1 for linear merge (conflict) |
|
455 | large1 for linear merge (conflict) | |
449 | $ cat sub/.hglf/large1 |
|
456 | $ cat sub/.hglf/large1 | |
450 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 |
|
457 | ba94c2efe5b7c5e0af8d189295ce00553b0612b7 | |
451 | $ hg -R sub status -A sub/large2 |
|
458 | $ hg -R sub status -A sub/large2 | |
452 | A sub/large2 |
|
459 | A sub/large2 | |
453 | $ cat sub/large2 |
|
460 | $ cat sub/large2 | |
454 | large2 for linear merge (conflict with normal file) |
|
461 | large2 for linear merge (conflict with normal file) | |
455 | $ cat sub/.hglf/large2 |
|
462 | $ cat sub/.hglf/large2 | |
456 | d7591fe9be0f6227d90bddf3e4f52ff41fc1f544 |
|
463 | d7591fe9be0f6227d90bddf3e4f52ff41fc1f544 | |
457 |
|
464 | |||
458 | $ cd .. |
|
465 | $ cd .. | |
459 | $ cd repo |
|
466 | $ cd repo | |
460 |
|
467 | |||
461 | Test that rebase updates largefiles in the working directory even if |
|
468 | Test that rebase updates largefiles in the working directory even if | |
462 | it is aborted by conflict. |
|
469 | it is aborted by conflict. | |
463 |
|
470 | |||
464 | $ hg update -q -C 3 |
|
471 | $ hg update -q -C 3 | |
465 | $ cat .hglf/large1 |
|
472 | $ cat .hglf/large1 | |
466 | e5bb990443d6a92aaf7223813720f7566c9dd05b |
|
473 | e5bb990443d6a92aaf7223813720f7566c9dd05b | |
467 | $ cat large1 |
|
474 | $ cat large1 | |
468 | large1 in #3 |
|
475 | large1 in #3 | |
469 | $ hg rebase -s 1 -d 3 --keep --config ui.interactive=True <<EOF |
|
476 | $ hg rebase -s 1 -d 3 --keep --config ui.interactive=True <<EOF | |
470 | > o |
|
477 | > o | |
471 | > EOF |
|
478 | > EOF | |
472 | largefile large1 has a merge conflict |
|
479 | largefile large1 has a merge conflict | |
473 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 |
|
480 | ancestor was 4669e532d5b2c093a78eca010077e708a071bb64 | |
474 | keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or |
|
481 | keep (l)ocal e5bb990443d6a92aaf7223813720f7566c9dd05b or | |
475 |
take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? |
|
482 | take (o)ther 58e24f733a964da346e2407a2bee99d9001184f5? o | |
|
483 | merging normal1 | |||
476 | warning: conflicts during merge. |
|
484 | warning: conflicts during merge. | |
477 | merging normal1 incomplete! (edit conflicts, then use 'hg resolve --mark') |
|
485 | merging normal1 incomplete! (edit conflicts, then use 'hg resolve --mark') | |
478 | unresolved conflicts (see hg resolve, then hg rebase --continue) |
|
486 | unresolved conflicts (see hg resolve, then hg rebase --continue) | |
479 | [1] |
|
487 | [1] | |
480 | $ cat .hglf/large1 |
|
488 | $ cat .hglf/large1 | |
481 | 58e24f733a964da346e2407a2bee99d9001184f5 |
|
489 | 58e24f733a964da346e2407a2bee99d9001184f5 | |
482 | $ cat large1 |
|
490 | $ cat large1 | |
483 | large1 in #1 |
|
491 | large1 in #1 | |
484 |
|
492 | |||
485 | $ hg rebase -q --abort |
|
493 | $ hg rebase -q --abort | |
486 | rebase aborted |
|
494 | rebase aborted | |
487 |
|
495 | |||
488 | Test that transplant updates largefiles, of which standins are safely |
|
496 | Test that transplant updates largefiles, of which standins are safely | |
489 | changed, even if it is aborted by conflict of other. |
|
497 | changed, even if it is aborted by conflict of other. | |
490 |
|
498 | |||
491 | $ hg update -q -C 5 |
|
499 | $ hg update -q -C 5 | |
492 | $ cat .hglf/large1 |
|
500 | $ cat .hglf/large1 | |
493 | e5bb990443d6a92aaf7223813720f7566c9dd05b |
|
501 | e5bb990443d6a92aaf7223813720f7566c9dd05b | |
494 | $ cat large1 |
|
502 | $ cat large1 | |
495 | large1 in #3 |
|
503 | large1 in #3 | |
496 | $ hg diff -c 4 .hglf/largeX | grep '^[+-][0-9a-z]' |
|
504 | $ hg diff -c 4 .hglf/largeX | grep '^[+-][0-9a-z]' | |
497 | +fa44618ea25181aff4f48b70428294790cec9f61 |
|
505 | +fa44618ea25181aff4f48b70428294790cec9f61 | |
498 | $ hg transplant 4 |
|
506 | $ hg transplant 4 | |
499 | applying 07d6153b5c04 |
|
507 | applying 07d6153b5c04 | |
500 | patching file .hglf/large1 |
|
508 | patching file .hglf/large1 | |
501 | Hunk #1 FAILED at 0 |
|
509 | Hunk #1 FAILED at 0 | |
502 | 1 out of 1 hunks FAILED -- saving rejects to file .hglf/large1.rej |
|
510 | 1 out of 1 hunks FAILED -- saving rejects to file .hglf/large1.rej | |
503 | patch failed to apply |
|
511 | patch failed to apply | |
504 | abort: fix up the merge and run hg transplant --continue |
|
512 | abort: fix up the merge and run hg transplant --continue | |
505 | [255] |
|
513 | [255] | |
506 | $ hg status -A large1 |
|
514 | $ hg status -A large1 | |
507 | C large1 |
|
515 | C large1 | |
508 | $ cat .hglf/large1 |
|
516 | $ cat .hglf/large1 | |
509 | e5bb990443d6a92aaf7223813720f7566c9dd05b |
|
517 | e5bb990443d6a92aaf7223813720f7566c9dd05b | |
510 | $ cat large1 |
|
518 | $ cat large1 | |
511 | large1 in #3 |
|
519 | large1 in #3 | |
512 | $ hg status -A largeX |
|
520 | $ hg status -A largeX | |
513 | A largeX |
|
521 | A largeX | |
514 | $ cat .hglf/largeX |
|
522 | $ cat .hglf/largeX | |
515 | fa44618ea25181aff4f48b70428294790cec9f61 |
|
523 | fa44618ea25181aff4f48b70428294790cec9f61 | |
516 | $ cat largeX |
|
524 | $ cat largeX | |
517 | largeX |
|
525 | largeX | |
518 |
|
526 | |||
519 | $ cd .. |
|
527 | $ cd .. |
@@ -1,142 +1,150 | |||||
1 | Test for |
|
1 | Test for | |
2 | b5605d88dc27: Make ui.prompt repeat on "unrecognized response" again |
|
2 | b5605d88dc27: Make ui.prompt repeat on "unrecognized response" again | |
3 | (issue897) |
|
3 | (issue897) | |
4 |
|
4 | |||
5 | 840e2b315c1f: Fix misleading error and prompts during update/merge |
|
5 | 840e2b315c1f: Fix misleading error and prompts during update/merge | |
6 | (issue556) |
|
6 | (issue556) | |
7 |
|
7 | |||
8 | $ status() { |
|
8 | $ status() { | |
9 | > echo "--- status ---" |
|
9 | > echo "--- status ---" | |
10 | > hg st -A file1 file2 |
|
10 | > hg st -A file1 file2 | |
11 | > for file in file1 file2; do |
|
11 | > for file in file1 file2; do | |
12 | > if [ -f $file ]; then |
|
12 | > if [ -f $file ]; then | |
13 | > echo "--- $file ---" |
|
13 | > echo "--- $file ---" | |
14 | > cat $file |
|
14 | > cat $file | |
15 | > else |
|
15 | > else | |
16 | > echo "*** $file does not exist" |
|
16 | > echo "*** $file does not exist" | |
17 | > fi |
|
17 | > fi | |
18 | > done |
|
18 | > done | |
19 | > } |
|
19 | > } | |
20 |
|
20 | |||
21 | $ hg init |
|
21 | $ hg init | |
22 |
|
22 | |||
23 | $ echo 1 > file1 |
|
23 | $ echo 1 > file1 | |
24 | $ echo 2 > file2 |
|
24 | $ echo 2 > file2 | |
25 | $ hg ci -Am 'added file1 and file2' |
|
25 | $ hg ci -Am 'added file1 and file2' | |
26 | adding file1 |
|
26 | adding file1 | |
27 | adding file2 |
|
27 | adding file2 | |
28 |
|
28 | |||
29 | $ hg rm file1 |
|
29 | $ hg rm file1 | |
30 | $ echo changed >> file2 |
|
30 | $ echo changed >> file2 | |
31 | $ hg ci -m 'removed file1, changed file2' |
|
31 | $ hg ci -m 'removed file1, changed file2' | |
32 |
|
32 | |||
33 | $ hg co 0 |
|
33 | $ hg co 0 | |
34 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
34 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
35 |
|
35 | |||
36 | $ echo changed >> file1 |
|
36 | $ echo changed >> file1 | |
37 | $ hg rm file2 |
|
37 | $ hg rm file2 | |
38 | $ hg ci -m 'changed file1, removed file2' |
|
38 | $ hg ci -m 'changed file1, removed file2' | |
39 | created new head |
|
39 | created new head | |
40 |
|
40 | |||
41 |
|
41 | |||
42 | Non-interactive merge: |
|
42 | Non-interactive merge: | |
43 |
|
43 | |||
44 | $ hg merge -y |
|
44 | $ hg merge -y | |
45 | local changed file1 which remote deleted |
|
45 | local changed file1 which remote deleted | |
46 | use (c)hanged version or (d)elete? c |
|
46 | use (c)hanged version or (d)elete? c | |
47 | remote changed file2 which local deleted |
|
47 | remote changed file2 which local deleted | |
48 | use (c)hanged version or leave (d)eleted? c |
|
48 | use (c)hanged version or leave (d)eleted? c | |
49 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
49 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
50 | (branch merge, don't forget to commit) |
|
50 | (branch merge, don't forget to commit) | |
51 |
|
51 | |||
52 | $ status |
|
52 | $ status | |
53 | --- status --- |
|
53 | --- status --- | |
54 | M file2 |
|
54 | M file2 | |
55 | C file1 |
|
55 | C file1 | |
56 | --- file1 --- |
|
56 | --- file1 --- | |
57 | 1 |
|
57 | 1 | |
58 | changed |
|
58 | changed | |
59 | --- file2 --- |
|
59 | --- file2 --- | |
60 | 2 |
|
60 | 2 | |
61 | changed |
|
61 | changed | |
62 |
|
62 | |||
63 |
|
63 | |||
64 | Interactive merge: |
|
64 | Interactive merge: | |
65 |
|
65 | |||
66 | $ hg co -C |
|
66 | $ hg co -C | |
67 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
67 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
68 |
|
68 | |||
69 | $ hg merge --config ui.interactive=true <<EOF |
|
69 | $ hg merge --config ui.interactive=true <<EOF | |
70 | > c |
|
70 | > c | |
71 | > d |
|
71 | > d | |
72 | > EOF |
|
72 | > EOF | |
73 | local changed file1 which remote deleted |
|
73 | local changed file1 which remote deleted | |
74 |
use (c)hanged version or (d)elete? |
|
74 | use (c)hanged version or (d)elete? c | |
75 | use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
75 | remote changed file2 which local deleted | |
|
76 | use (c)hanged version or leave (d)eleted? d | |||
|
77 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
76 | (branch merge, don't forget to commit) |
|
78 | (branch merge, don't forget to commit) | |
77 |
|
79 | |||
78 | $ status |
|
80 | $ status | |
79 | --- status --- |
|
81 | --- status --- | |
80 | file2: * (glob) |
|
82 | file2: * (glob) | |
81 | C file1 |
|
83 | C file1 | |
82 | --- file1 --- |
|
84 | --- file1 --- | |
83 | 1 |
|
85 | 1 | |
84 | changed |
|
86 | changed | |
85 | *** file2 does not exist |
|
87 | *** file2 does not exist | |
86 |
|
88 | |||
87 |
|
89 | |||
88 | Interactive merge with bad input: |
|
90 | Interactive merge with bad input: | |
89 |
|
91 | |||
90 | $ hg co -C |
|
92 | $ hg co -C | |
91 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
93 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
92 |
|
94 | |||
93 | $ hg merge --config ui.interactive=true <<EOF |
|
95 | $ hg merge --config ui.interactive=true <<EOF | |
94 | > foo |
|
96 | > foo | |
95 | > bar |
|
97 | > bar | |
96 | > d |
|
98 | > d | |
97 | > baz |
|
99 | > baz | |
98 | > c |
|
100 | > c | |
99 | > EOF |
|
101 | > EOF | |
100 | local changed file1 which remote deleted |
|
102 | local changed file1 which remote deleted | |
101 |
use (c)hanged version or (d)elete? |
|
103 | use (c)hanged version or (d)elete? foo | |
|
104 | unrecognized response | |||
102 | local changed file1 which remote deleted |
|
105 | local changed file1 which remote deleted | |
103 |
use (c)hanged version or (d)elete? |
|
106 | use (c)hanged version or (d)elete? bar | |
|
107 | unrecognized response | |||
104 | local changed file1 which remote deleted |
|
108 | local changed file1 which remote deleted | |
105 |
use (c)hanged version or (d)elete? |
|
109 | use (c)hanged version or (d)elete? d | |
106 | use (c)hanged version or leave (d)eleted? unrecognized response |
|
|||
107 |
|
|
110 | remote changed file2 which local deleted | |
108 | use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
111 | use (c)hanged version or leave (d)eleted? baz | |
|
112 | unrecognized response | |||
|
113 | remote changed file2 which local deleted | |||
|
114 | use (c)hanged version or leave (d)eleted? c | |||
|
115 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |||
109 | (branch merge, don't forget to commit) |
|
116 | (branch merge, don't forget to commit) | |
110 |
|
117 | |||
111 | $ status |
|
118 | $ status | |
112 | --- status --- |
|
119 | --- status --- | |
113 | M file2 |
|
120 | M file2 | |
114 | R file1 |
|
121 | R file1 | |
115 | *** file1 does not exist |
|
122 | *** file1 does not exist | |
116 | --- file2 --- |
|
123 | --- file2 --- | |
117 | 2 |
|
124 | 2 | |
118 | changed |
|
125 | changed | |
119 |
|
126 | |||
120 |
|
127 | |||
121 | Interactive merge with not enough input: |
|
128 | Interactive merge with not enough input: | |
122 |
|
129 | |||
123 | $ hg co -C |
|
130 | $ hg co -C | |
124 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
131 | 1 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
125 |
|
132 | |||
126 | $ hg merge --config ui.interactive=true <<EOF |
|
133 | $ hg merge --config ui.interactive=true <<EOF | |
127 | > d |
|
134 | > d | |
128 | > EOF |
|
135 | > EOF | |
129 | local changed file1 which remote deleted |
|
136 | local changed file1 which remote deleted | |
130 |
use (c)hanged version or (d)elete? |
|
137 | use (c)hanged version or (d)elete? d | |
|
138 | remote changed file2 which local deleted | |||
131 | use (c)hanged version or leave (d)eleted? abort: response expected |
|
139 | use (c)hanged version or leave (d)eleted? abort: response expected | |
132 | [255] |
|
140 | [255] | |
133 |
|
141 | |||
134 | $ status |
|
142 | $ status | |
135 | --- status --- |
|
143 | --- status --- | |
136 | file2: * (glob) |
|
144 | file2: * (glob) | |
137 | C file1 |
|
145 | C file1 | |
138 | --- file1 --- |
|
146 | --- file1 --- | |
139 | 1 |
|
147 | 1 | |
140 | changed |
|
148 | changed | |
141 | *** file2 does not exist |
|
149 | *** file2 does not exist | |
142 |
|
150 |
@@ -1,346 +1,356 | |||||
1 | Create configuration |
|
1 | Create configuration | |
2 |
|
2 | |||
3 | $ echo "[ui]" >> $HGRCPATH |
|
3 | $ echo "[ui]" >> $HGRCPATH | |
4 | $ echo "interactive=true" >> $HGRCPATH |
|
4 | $ echo "interactive=true" >> $HGRCPATH | |
5 |
|
5 | |||
6 | help qrefresh (no record) |
|
6 | help qrefresh (no record) | |
7 |
|
7 | |||
8 | $ echo "[extensions]" >> $HGRCPATH |
|
8 | $ echo "[extensions]" >> $HGRCPATH | |
9 | $ echo "mq=" >> $HGRCPATH |
|
9 | $ echo "mq=" >> $HGRCPATH | |
10 | $ hg help qrefresh |
|
10 | $ hg help qrefresh | |
11 | hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]... |
|
11 | hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]... | |
12 |
|
12 | |||
13 | update the current patch |
|
13 | update the current patch | |
14 |
|
14 | |||
15 | If any file patterns are provided, the refreshed patch will contain only |
|
15 | If any file patterns are provided, the refreshed patch will contain only | |
16 | the modifications that match those patterns; the remaining modifications |
|
16 | the modifications that match those patterns; the remaining modifications | |
17 | will remain in the working directory. |
|
17 | will remain in the working directory. | |
18 |
|
18 | |||
19 | If -s/--short is specified, files currently included in the patch will be |
|
19 | If -s/--short is specified, files currently included in the patch will be | |
20 | refreshed just like matched files and remain in the patch. |
|
20 | refreshed just like matched files and remain in the patch. | |
21 |
|
21 | |||
22 | If -e/--edit is specified, Mercurial will start your configured editor for |
|
22 | If -e/--edit is specified, Mercurial will start your configured editor for | |
23 | you to enter a message. In case qrefresh fails, you will find a backup of |
|
23 | you to enter a message. In case qrefresh fails, you will find a backup of | |
24 | your message in ".hg/last-message.txt". |
|
24 | your message in ".hg/last-message.txt". | |
25 |
|
25 | |||
26 | hg add/remove/copy/rename work as usual, though you might want to use git- |
|
26 | hg add/remove/copy/rename work as usual, though you might want to use git- | |
27 | style patches (-g/--git or [diff] git=1) to track copies and renames. See |
|
27 | style patches (-g/--git or [diff] git=1) to track copies and renames. See | |
28 | the diffs help topic for more information on the git diff format. |
|
28 | the diffs help topic for more information on the git diff format. | |
29 |
|
29 | |||
30 | Returns 0 on success. |
|
30 | Returns 0 on success. | |
31 |
|
31 | |||
32 | options ([+] can be repeated): |
|
32 | options ([+] can be repeated): | |
33 |
|
33 | |||
34 | -e --edit invoke editor on commit messages |
|
34 | -e --edit invoke editor on commit messages | |
35 | -g --git use git extended diff format |
|
35 | -g --git use git extended diff format | |
36 | -s --short refresh only files already in the patch and |
|
36 | -s --short refresh only files already in the patch and | |
37 | specified files |
|
37 | specified files | |
38 | -U --currentuser add/update author field in patch with current user |
|
38 | -U --currentuser add/update author field in patch with current user | |
39 | -u --user USER add/update author field in patch with given user |
|
39 | -u --user USER add/update author field in patch with given user | |
40 | -D --currentdate add/update date field in patch with current date |
|
40 | -D --currentdate add/update date field in patch with current date | |
41 | -d --date DATE add/update date field in patch with given date |
|
41 | -d --date DATE add/update date field in patch with given date | |
42 | -I --include PATTERN [+] include names matching the given patterns |
|
42 | -I --include PATTERN [+] include names matching the given patterns | |
43 | -X --exclude PATTERN [+] exclude names matching the given patterns |
|
43 | -X --exclude PATTERN [+] exclude names matching the given patterns | |
44 | -m --message TEXT use text as commit message |
|
44 | -m --message TEXT use text as commit message | |
45 | -l --logfile FILE read commit message from file |
|
45 | -l --logfile FILE read commit message from file | |
46 |
|
46 | |||
47 | (some details hidden, use --verbose to show complete help) |
|
47 | (some details hidden, use --verbose to show complete help) | |
48 |
|
48 | |||
49 | help qrefresh (record) |
|
49 | help qrefresh (record) | |
50 |
|
50 | |||
51 | $ echo "record=" >> $HGRCPATH |
|
51 | $ echo "record=" >> $HGRCPATH | |
52 | $ hg help qrefresh |
|
52 | $ hg help qrefresh | |
53 | hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]... |
|
53 | hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]... | |
54 |
|
54 | |||
55 | update the current patch |
|
55 | update the current patch | |
56 |
|
56 | |||
57 | If any file patterns are provided, the refreshed patch will contain only |
|
57 | If any file patterns are provided, the refreshed patch will contain only | |
58 | the modifications that match those patterns; the remaining modifications |
|
58 | the modifications that match those patterns; the remaining modifications | |
59 | will remain in the working directory. |
|
59 | will remain in the working directory. | |
60 |
|
60 | |||
61 | If -s/--short is specified, files currently included in the patch will be |
|
61 | If -s/--short is specified, files currently included in the patch will be | |
62 | refreshed just like matched files and remain in the patch. |
|
62 | refreshed just like matched files and remain in the patch. | |
63 |
|
63 | |||
64 | If -e/--edit is specified, Mercurial will start your configured editor for |
|
64 | If -e/--edit is specified, Mercurial will start your configured editor for | |
65 | you to enter a message. In case qrefresh fails, you will find a backup of |
|
65 | you to enter a message. In case qrefresh fails, you will find a backup of | |
66 | your message in ".hg/last-message.txt". |
|
66 | your message in ".hg/last-message.txt". | |
67 |
|
67 | |||
68 | hg add/remove/copy/rename work as usual, though you might want to use git- |
|
68 | hg add/remove/copy/rename work as usual, though you might want to use git- | |
69 | style patches (-g/--git or [diff] git=1) to track copies and renames. See |
|
69 | style patches (-g/--git or [diff] git=1) to track copies and renames. See | |
70 | the diffs help topic for more information on the git diff format. |
|
70 | the diffs help topic for more information on the git diff format. | |
71 |
|
71 | |||
72 | Returns 0 on success. |
|
72 | Returns 0 on success. | |
73 |
|
73 | |||
74 | options ([+] can be repeated): |
|
74 | options ([+] can be repeated): | |
75 |
|
75 | |||
76 | -e --edit invoke editor on commit messages |
|
76 | -e --edit invoke editor on commit messages | |
77 | -g --git use git extended diff format |
|
77 | -g --git use git extended diff format | |
78 | -s --short refresh only files already in the patch and |
|
78 | -s --short refresh only files already in the patch and | |
79 | specified files |
|
79 | specified files | |
80 | -U --currentuser add/update author field in patch with current user |
|
80 | -U --currentuser add/update author field in patch with current user | |
81 | -u --user USER add/update author field in patch with given user |
|
81 | -u --user USER add/update author field in patch with given user | |
82 | -D --currentdate add/update date field in patch with current date |
|
82 | -D --currentdate add/update date field in patch with current date | |
83 | -d --date DATE add/update date field in patch with given date |
|
83 | -d --date DATE add/update date field in patch with given date | |
84 | -I --include PATTERN [+] include names matching the given patterns |
|
84 | -I --include PATTERN [+] include names matching the given patterns | |
85 | -X --exclude PATTERN [+] exclude names matching the given patterns |
|
85 | -X --exclude PATTERN [+] exclude names matching the given patterns | |
86 | -m --message TEXT use text as commit message |
|
86 | -m --message TEXT use text as commit message | |
87 | -l --logfile FILE read commit message from file |
|
87 | -l --logfile FILE read commit message from file | |
88 | -i --interactive interactively select changes to refresh |
|
88 | -i --interactive interactively select changes to refresh | |
89 |
|
89 | |||
90 | (some details hidden, use --verbose to show complete help) |
|
90 | (some details hidden, use --verbose to show complete help) | |
91 |
|
91 | |||
92 | $ hg init a |
|
92 | $ hg init a | |
93 | $ cd a |
|
93 | $ cd a | |
94 |
|
94 | |||
95 | Base commit |
|
95 | Base commit | |
96 |
|
96 | |||
97 | $ cat > 1.txt <<EOF |
|
97 | $ cat > 1.txt <<EOF | |
98 | > 1 |
|
98 | > 1 | |
99 | > 2 |
|
99 | > 2 | |
100 | > 3 |
|
100 | > 3 | |
101 | > 4 |
|
101 | > 4 | |
102 | > 5 |
|
102 | > 5 | |
103 | > EOF |
|
103 | > EOF | |
104 | $ cat > 2.txt <<EOF |
|
104 | $ cat > 2.txt <<EOF | |
105 | > a |
|
105 | > a | |
106 | > b |
|
106 | > b | |
107 | > c |
|
107 | > c | |
108 | > d |
|
108 | > d | |
109 | > e |
|
109 | > e | |
110 | > f |
|
110 | > f | |
111 | > EOF |
|
111 | > EOF | |
112 |
|
112 | |||
113 | $ mkdir dir |
|
113 | $ mkdir dir | |
114 | $ cat > dir/a.txt <<EOF |
|
114 | $ cat > dir/a.txt <<EOF | |
115 | > hello world |
|
115 | > hello world | |
116 | > |
|
116 | > | |
117 | > someone |
|
117 | > someone | |
118 | > up |
|
118 | > up | |
119 | > there |
|
119 | > there | |
120 | > loves |
|
120 | > loves | |
121 | > me |
|
121 | > me | |
122 | > EOF |
|
122 | > EOF | |
123 |
|
123 | |||
124 | $ hg add 1.txt 2.txt dir/a.txt |
|
124 | $ hg add 1.txt 2.txt dir/a.txt | |
125 | $ hg commit -m aaa |
|
125 | $ hg commit -m aaa | |
126 | $ hg qnew -d '0 0' patch |
|
126 | $ hg qnew -d '0 0' patch | |
127 |
|
127 | |||
128 | Changing files |
|
128 | Changing files | |
129 |
|
129 | |||
130 | $ sed -e 's/2/2 2/;s/4/4 4/' 1.txt > 1.txt.new |
|
130 | $ sed -e 's/2/2 2/;s/4/4 4/' 1.txt > 1.txt.new | |
131 | $ sed -e 's/b/b b/' 2.txt > 2.txt.new |
|
131 | $ sed -e 's/b/b b/' 2.txt > 2.txt.new | |
132 | $ sed -e 's/hello world/hello world!/' dir/a.txt > dir/a.txt.new |
|
132 | $ sed -e 's/hello world/hello world!/' dir/a.txt > dir/a.txt.new | |
133 |
|
133 | |||
134 | $ mv -f 1.txt.new 1.txt |
|
134 | $ mv -f 1.txt.new 1.txt | |
135 | $ mv -f 2.txt.new 2.txt |
|
135 | $ mv -f 2.txt.new 2.txt | |
136 | $ mv -f dir/a.txt.new dir/a.txt |
|
136 | $ mv -f dir/a.txt.new dir/a.txt | |
137 |
|
137 | |||
138 | Whole diff |
|
138 | Whole diff | |
139 |
|
139 | |||
140 | $ hg diff --nodates |
|
140 | $ hg diff --nodates | |
141 | diff -r ed27675cb5df 1.txt |
|
141 | diff -r ed27675cb5df 1.txt | |
142 | --- a/1.txt |
|
142 | --- a/1.txt | |
143 | +++ b/1.txt |
|
143 | +++ b/1.txt | |
144 | @@ -1,5 +1,5 @@ |
|
144 | @@ -1,5 +1,5 @@ | |
145 | 1 |
|
145 | 1 | |
146 | -2 |
|
146 | -2 | |
147 | +2 2 |
|
147 | +2 2 | |
148 | 3 |
|
148 | 3 | |
149 | -4 |
|
149 | -4 | |
150 | +4 4 |
|
150 | +4 4 | |
151 | 5 |
|
151 | 5 | |
152 | diff -r ed27675cb5df 2.txt |
|
152 | diff -r ed27675cb5df 2.txt | |
153 | --- a/2.txt |
|
153 | --- a/2.txt | |
154 | +++ b/2.txt |
|
154 | +++ b/2.txt | |
155 | @@ -1,5 +1,5 @@ |
|
155 | @@ -1,5 +1,5 @@ | |
156 | a |
|
156 | a | |
157 | -b |
|
157 | -b | |
158 | +b b |
|
158 | +b b | |
159 | c |
|
159 | c | |
160 | d |
|
160 | d | |
161 | e |
|
161 | e | |
162 | diff -r ed27675cb5df dir/a.txt |
|
162 | diff -r ed27675cb5df dir/a.txt | |
163 | --- a/dir/a.txt |
|
163 | --- a/dir/a.txt | |
164 | +++ b/dir/a.txt |
|
164 | +++ b/dir/a.txt | |
165 | @@ -1,4 +1,4 @@ |
|
165 | @@ -1,4 +1,4 @@ | |
166 | -hello world |
|
166 | -hello world | |
167 | +hello world! |
|
167 | +hello world! | |
168 |
|
168 | |||
169 | someone |
|
169 | someone | |
170 | up |
|
170 | up | |
171 |
|
171 | |||
172 | partial qrefresh |
|
172 | partial qrefresh | |
173 |
|
173 | |||
174 | $ hg qrefresh -i -d '0 0' <<EOF |
|
174 | $ hg qrefresh -i -d '0 0' <<EOF | |
175 | > y |
|
175 | > y | |
176 | > y |
|
176 | > y | |
177 | > n |
|
177 | > n | |
178 | > y |
|
178 | > y | |
179 | > y |
|
179 | > y | |
180 | > n |
|
180 | > n | |
181 | > EOF |
|
181 | > EOF | |
182 | diff --git a/1.txt b/1.txt |
|
182 | diff --git a/1.txt b/1.txt | |
183 | 2 hunks, 2 lines changed |
|
183 | 2 hunks, 2 lines changed | |
184 | examine changes to '1.txt'? [Ynesfdaq?] |
|
184 | examine changes to '1.txt'? [Ynesfdaq?] y | |
|
185 | ||||
185 | @@ -1,3 +1,3 @@ |
|
186 | @@ -1,3 +1,3 @@ | |
186 | 1 |
|
187 | 1 | |
187 | -2 |
|
188 | -2 | |
188 | +2 2 |
|
189 | +2 2 | |
189 | 3 |
|
190 | 3 | |
190 | record change 1/4 to '1.txt'? [Ynesfdaq?] |
|
191 | record change 1/4 to '1.txt'? [Ynesfdaq?] y | |
|
192 | ||||
191 | @@ -3,3 +3,3 @@ |
|
193 | @@ -3,3 +3,3 @@ | |
192 | 3 |
|
194 | 3 | |
193 | -4 |
|
195 | -4 | |
194 | +4 4 |
|
196 | +4 4 | |
195 | 5 |
|
197 | 5 | |
196 | record change 2/4 to '1.txt'? [Ynesfdaq?] |
|
198 | record change 2/4 to '1.txt'? [Ynesfdaq?] n | |
|
199 | ||||
197 | diff --git a/2.txt b/2.txt |
|
200 | diff --git a/2.txt b/2.txt | |
198 | 1 hunks, 1 lines changed |
|
201 | 1 hunks, 1 lines changed | |
199 | examine changes to '2.txt'? [Ynesfdaq?] |
|
202 | examine changes to '2.txt'? [Ynesfdaq?] y | |
|
203 | ||||
200 | @@ -1,5 +1,5 @@ |
|
204 | @@ -1,5 +1,5 @@ | |
201 | a |
|
205 | a | |
202 | -b |
|
206 | -b | |
203 | +b b |
|
207 | +b b | |
204 | c |
|
208 | c | |
205 | d |
|
209 | d | |
206 | e |
|
210 | e | |
207 | record change 3/4 to '2.txt'? [Ynesfdaq?] |
|
211 | record change 3/4 to '2.txt'? [Ynesfdaq?] y | |
|
212 | ||||
208 | diff --git a/dir/a.txt b/dir/a.txt |
|
213 | diff --git a/dir/a.txt b/dir/a.txt | |
209 | 1 hunks, 1 lines changed |
|
214 | 1 hunks, 1 lines changed | |
210 | examine changes to 'dir/a.txt'? [Ynesfdaq?] |
|
215 | examine changes to 'dir/a.txt'? [Ynesfdaq?] n | |
|
216 | ||||
211 |
|
217 | |||
212 | After partial qrefresh 'tip' |
|
218 | After partial qrefresh 'tip' | |
213 |
|
219 | |||
214 | $ hg tip -p |
|
220 | $ hg tip -p | |
215 | changeset: 1:0738af1a8211 |
|
221 | changeset: 1:0738af1a8211 | |
216 | tag: patch |
|
222 | tag: patch | |
217 | tag: qbase |
|
223 | tag: qbase | |
218 | tag: qtip |
|
224 | tag: qtip | |
219 | tag: tip |
|
225 | tag: tip | |
220 | user: test |
|
226 | user: test | |
221 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
227 | date: Thu Jan 01 00:00:00 1970 +0000 | |
222 | summary: [mq]: patch |
|
228 | summary: [mq]: patch | |
223 |
|
229 | |||
224 | diff -r 1fd39ab63a33 -r 0738af1a8211 1.txt |
|
230 | diff -r 1fd39ab63a33 -r 0738af1a8211 1.txt | |
225 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
231 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
226 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
232 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
227 | @@ -1,5 +1,5 @@ |
|
233 | @@ -1,5 +1,5 @@ | |
228 | 1 |
|
234 | 1 | |
229 | -2 |
|
235 | -2 | |
230 | +2 2 |
|
236 | +2 2 | |
231 | 3 |
|
237 | 3 | |
232 | 4 |
|
238 | 4 | |
233 | 5 |
|
239 | 5 | |
234 | diff -r 1fd39ab63a33 -r 0738af1a8211 2.txt |
|
240 | diff -r 1fd39ab63a33 -r 0738af1a8211 2.txt | |
235 | --- a/2.txt Thu Jan 01 00:00:00 1970 +0000 |
|
241 | --- a/2.txt Thu Jan 01 00:00:00 1970 +0000 | |
236 | +++ b/2.txt Thu Jan 01 00:00:00 1970 +0000 |
|
242 | +++ b/2.txt Thu Jan 01 00:00:00 1970 +0000 | |
237 | @@ -1,5 +1,5 @@ |
|
243 | @@ -1,5 +1,5 @@ | |
238 | a |
|
244 | a | |
239 | -b |
|
245 | -b | |
240 | +b b |
|
246 | +b b | |
241 | c |
|
247 | c | |
242 | d |
|
248 | d | |
243 | e |
|
249 | e | |
244 |
|
250 | |||
245 | After partial qrefresh 'diff' |
|
251 | After partial qrefresh 'diff' | |
246 |
|
252 | |||
247 | $ hg diff --nodates |
|
253 | $ hg diff --nodates | |
248 | diff -r 0738af1a8211 1.txt |
|
254 | diff -r 0738af1a8211 1.txt | |
249 | --- a/1.txt |
|
255 | --- a/1.txt | |
250 | +++ b/1.txt |
|
256 | +++ b/1.txt | |
251 | @@ -1,5 +1,5 @@ |
|
257 | @@ -1,5 +1,5 @@ | |
252 | 1 |
|
258 | 1 | |
253 | 2 2 |
|
259 | 2 2 | |
254 | 3 |
|
260 | 3 | |
255 | -4 |
|
261 | -4 | |
256 | +4 4 |
|
262 | +4 4 | |
257 | 5 |
|
263 | 5 | |
258 | diff -r 0738af1a8211 dir/a.txt |
|
264 | diff -r 0738af1a8211 dir/a.txt | |
259 | --- a/dir/a.txt |
|
265 | --- a/dir/a.txt | |
260 | +++ b/dir/a.txt |
|
266 | +++ b/dir/a.txt | |
261 | @@ -1,4 +1,4 @@ |
|
267 | @@ -1,4 +1,4 @@ | |
262 | -hello world |
|
268 | -hello world | |
263 | +hello world! |
|
269 | +hello world! | |
264 |
|
270 | |||
265 | someone |
|
271 | someone | |
266 | up |
|
272 | up | |
267 |
|
273 | |||
268 | qrefresh interactively everything else |
|
274 | qrefresh interactively everything else | |
269 |
|
275 | |||
270 | $ hg qrefresh -i -d '0 0' <<EOF |
|
276 | $ hg qrefresh -i -d '0 0' <<EOF | |
271 | > y |
|
277 | > y | |
272 | > y |
|
278 | > y | |
273 | > y |
|
279 | > y | |
274 | > y |
|
280 | > y | |
275 | > EOF |
|
281 | > EOF | |
276 | diff --git a/1.txt b/1.txt |
|
282 | diff --git a/1.txt b/1.txt | |
277 | 1 hunks, 1 lines changed |
|
283 | 1 hunks, 1 lines changed | |
278 | examine changes to '1.txt'? [Ynesfdaq?] |
|
284 | examine changes to '1.txt'? [Ynesfdaq?] y | |
|
285 | ||||
279 | @@ -1,5 +1,5 @@ |
|
286 | @@ -1,5 +1,5 @@ | |
280 | 1 |
|
287 | 1 | |
281 | 2 2 |
|
288 | 2 2 | |
282 | 3 |
|
289 | 3 | |
283 | -4 |
|
290 | -4 | |
284 | +4 4 |
|
291 | +4 4 | |
285 | 5 |
|
292 | 5 | |
286 | record change 1/2 to '1.txt'? [Ynesfdaq?] |
|
293 | record change 1/2 to '1.txt'? [Ynesfdaq?] y | |
|
294 | ||||
287 | diff --git a/dir/a.txt b/dir/a.txt |
|
295 | diff --git a/dir/a.txt b/dir/a.txt | |
288 | 1 hunks, 1 lines changed |
|
296 | 1 hunks, 1 lines changed | |
289 | examine changes to 'dir/a.txt'? [Ynesfdaq?] |
|
297 | examine changes to 'dir/a.txt'? [Ynesfdaq?] y | |
|
298 | ||||
290 | @@ -1,4 +1,4 @@ |
|
299 | @@ -1,4 +1,4 @@ | |
291 | -hello world |
|
300 | -hello world | |
292 | +hello world! |
|
301 | +hello world! | |
293 |
|
302 | |||
294 | someone |
|
303 | someone | |
295 | up |
|
304 | up | |
296 | record change 2/2 to 'dir/a.txt'? [Ynesfdaq?] |
|
305 | record change 2/2 to 'dir/a.txt'? [Ynesfdaq?] y | |
|
306 | ||||
297 |
|
307 | |||
298 | After final qrefresh 'tip' |
|
308 | After final qrefresh 'tip' | |
299 |
|
309 | |||
300 | $ hg tip -p |
|
310 | $ hg tip -p | |
301 | changeset: 1:2c3f66afeed9 |
|
311 | changeset: 1:2c3f66afeed9 | |
302 | tag: patch |
|
312 | tag: patch | |
303 | tag: qbase |
|
313 | tag: qbase | |
304 | tag: qtip |
|
314 | tag: qtip | |
305 | tag: tip |
|
315 | tag: tip | |
306 | user: test |
|
316 | user: test | |
307 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
317 | date: Thu Jan 01 00:00:00 1970 +0000 | |
308 | summary: [mq]: patch |
|
318 | summary: [mq]: patch | |
309 |
|
319 | |||
310 | diff -r 1fd39ab63a33 -r 2c3f66afeed9 1.txt |
|
320 | diff -r 1fd39ab63a33 -r 2c3f66afeed9 1.txt | |
311 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
321 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
312 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
322 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
313 | @@ -1,5 +1,5 @@ |
|
323 | @@ -1,5 +1,5 @@ | |
314 | 1 |
|
324 | 1 | |
315 | -2 |
|
325 | -2 | |
316 | +2 2 |
|
326 | +2 2 | |
317 | 3 |
|
327 | 3 | |
318 | -4 |
|
328 | -4 | |
319 | +4 4 |
|
329 | +4 4 | |
320 | 5 |
|
330 | 5 | |
321 | diff -r 1fd39ab63a33 -r 2c3f66afeed9 2.txt |
|
331 | diff -r 1fd39ab63a33 -r 2c3f66afeed9 2.txt | |
322 | --- a/2.txt Thu Jan 01 00:00:00 1970 +0000 |
|
332 | --- a/2.txt Thu Jan 01 00:00:00 1970 +0000 | |
323 | +++ b/2.txt Thu Jan 01 00:00:00 1970 +0000 |
|
333 | +++ b/2.txt Thu Jan 01 00:00:00 1970 +0000 | |
324 | @@ -1,5 +1,5 @@ |
|
334 | @@ -1,5 +1,5 @@ | |
325 | a |
|
335 | a | |
326 | -b |
|
336 | -b | |
327 | +b b |
|
337 | +b b | |
328 | c |
|
338 | c | |
329 | d |
|
339 | d | |
330 | e |
|
340 | e | |
331 | diff -r 1fd39ab63a33 -r 2c3f66afeed9 dir/a.txt |
|
341 | diff -r 1fd39ab63a33 -r 2c3f66afeed9 dir/a.txt | |
332 | --- a/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 |
|
342 | --- a/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 | |
333 | +++ b/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 |
|
343 | +++ b/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 | |
334 | @@ -1,4 +1,4 @@ |
|
344 | @@ -1,4 +1,4 @@ | |
335 | -hello world |
|
345 | -hello world | |
336 | +hello world! |
|
346 | +hello world! | |
337 |
|
347 | |||
338 | someone |
|
348 | someone | |
339 | up |
|
349 | up | |
340 |
|
350 | |||
341 |
|
351 | |||
342 | After qrefresh 'diff' |
|
352 | After qrefresh 'diff' | |
343 |
|
353 | |||
344 | $ hg diff --nodates |
|
354 | $ hg diff --nodates | |
345 |
|
355 | |||
346 | $ cd .. |
|
356 | $ cd .. |
@@ -1,601 +1,609 | |||||
1 | $ echo "[ui]" >> $HGRCPATH |
|
1 | $ echo "[ui]" >> $HGRCPATH | |
2 | $ echo "commitsubrepos = Yes" >> $HGRCPATH |
|
2 | $ echo "commitsubrepos = Yes" >> $HGRCPATH | |
3 | $ echo "[extensions]" >> $HGRCPATH |
|
3 | $ echo "[extensions]" >> $HGRCPATH | |
4 | $ echo "mq=" >> $HGRCPATH |
|
4 | $ echo "mq=" >> $HGRCPATH | |
5 | $ echo "record=" >> $HGRCPATH |
|
5 | $ echo "record=" >> $HGRCPATH | |
6 | $ echo "[diff]" >> $HGRCPATH |
|
6 | $ echo "[diff]" >> $HGRCPATH | |
7 | $ echo "nodates=1" >> $HGRCPATH |
|
7 | $ echo "nodates=1" >> $HGRCPATH | |
8 |
|
8 | |||
9 | $ stdin=`pwd`/stdin.tmp |
|
9 | $ stdin=`pwd`/stdin.tmp | |
10 |
|
10 | |||
11 | fn to create new repository w/dirty subrepo, and cd into it |
|
11 | fn to create new repository w/dirty subrepo, and cd into it | |
12 | $ mkrepo() { |
|
12 | $ mkrepo() { | |
13 | > hg init $1 |
|
13 | > hg init $1 | |
14 | > cd $1 |
|
14 | > cd $1 | |
15 | > hg qinit |
|
15 | > hg qinit | |
16 | > } |
|
16 | > } | |
17 |
|
17 | |||
18 | fn to create dirty subrepo |
|
18 | fn to create dirty subrepo | |
19 | $ mksubrepo() { |
|
19 | $ mksubrepo() { | |
20 | > hg init $1 |
|
20 | > hg init $1 | |
21 | > cd $1 |
|
21 | > cd $1 | |
22 | > echo a > a |
|
22 | > echo a > a | |
23 | > hg add |
|
23 | > hg add | |
24 | > cd .. |
|
24 | > cd .. | |
25 | > } |
|
25 | > } | |
26 |
|
26 | |||
27 | $ testadd() { |
|
27 | $ testadd() { | |
28 | > cat - > "$stdin" |
|
28 | > cat - > "$stdin" | |
29 | > mksubrepo sub |
|
29 | > mksubrepo sub | |
30 | > echo sub = sub >> .hgsub |
|
30 | > echo sub = sub >> .hgsub | |
31 | > hg add .hgsub |
|
31 | > hg add .hgsub | |
32 | > echo % abort when adding .hgsub w/dirty subrepo |
|
32 | > echo % abort when adding .hgsub w/dirty subrepo | |
33 | > hg status -S |
|
33 | > hg status -S | |
34 | > echo '%' $* |
|
34 | > echo '%' $* | |
35 | > cat "$stdin" | hg $* |
|
35 | > cat "$stdin" | hg $* | |
36 | > echo [$?] |
|
36 | > echo [$?] | |
37 | > hg -R sub ci -m0sub |
|
37 | > hg -R sub ci -m0sub | |
38 | > echo % update substate when adding .hgsub w/clean updated subrepo |
|
38 | > echo % update substate when adding .hgsub w/clean updated subrepo | |
39 | > hg status -S |
|
39 | > hg status -S | |
40 | > echo '%' $* |
|
40 | > echo '%' $* | |
41 | > cat "$stdin" | hg $* |
|
41 | > cat "$stdin" | hg $* | |
42 | > hg debugsub |
|
42 | > hg debugsub | |
43 | > } |
|
43 | > } | |
44 |
|
44 | |||
45 | $ testmod() { |
|
45 | $ testmod() { | |
46 | > cat - > "$stdin" |
|
46 | > cat - > "$stdin" | |
47 | > mksubrepo sub2 |
|
47 | > mksubrepo sub2 | |
48 | > echo sub2 = sub2 >> .hgsub |
|
48 | > echo sub2 = sub2 >> .hgsub | |
49 | > echo % abort when modifying .hgsub w/dirty subrepo |
|
49 | > echo % abort when modifying .hgsub w/dirty subrepo | |
50 | > hg status -S |
|
50 | > hg status -S | |
51 | > echo '%' $* |
|
51 | > echo '%' $* | |
52 | > cat "$stdin" | hg $* |
|
52 | > cat "$stdin" | hg $* | |
53 | > echo [$?] |
|
53 | > echo [$?] | |
54 | > hg -R sub2 ci -m0sub2 |
|
54 | > hg -R sub2 ci -m0sub2 | |
55 | > echo % update substate when modifying .hgsub w/clean updated subrepo |
|
55 | > echo % update substate when modifying .hgsub w/clean updated subrepo | |
56 | > hg status -S |
|
56 | > hg status -S | |
57 | > echo '%' $* |
|
57 | > echo '%' $* | |
58 | > cat "$stdin" | hg $* |
|
58 | > cat "$stdin" | hg $* | |
59 | > hg debugsub |
|
59 | > hg debugsub | |
60 | > } |
|
60 | > } | |
61 |
|
61 | |||
62 | $ testrm1() { |
|
62 | $ testrm1() { | |
63 | > cat - > "$stdin" |
|
63 | > cat - > "$stdin" | |
64 | > mksubrepo sub3 |
|
64 | > mksubrepo sub3 | |
65 | > echo sub3 = sub3 >> .hgsub |
|
65 | > echo sub3 = sub3 >> .hgsub | |
66 | > hg ci -Aqmsub3 |
|
66 | > hg ci -Aqmsub3 | |
67 | > $EXTRA |
|
67 | > $EXTRA | |
68 | > echo b >> sub3/a |
|
68 | > echo b >> sub3/a | |
69 | > hg rm .hgsub |
|
69 | > hg rm .hgsub | |
70 | > echo % update substate when removing .hgsub w/dirty subrepo |
|
70 | > echo % update substate when removing .hgsub w/dirty subrepo | |
71 | > hg status -S |
|
71 | > hg status -S | |
72 | > echo '%' $* |
|
72 | > echo '%' $* | |
73 | > cat "$stdin" | hg $* |
|
73 | > cat "$stdin" | hg $* | |
74 | > echo % debugsub should be empty |
|
74 | > echo % debugsub should be empty | |
75 | > hg debugsub |
|
75 | > hg debugsub | |
76 | > } |
|
76 | > } | |
77 |
|
77 | |||
78 | $ testrm2() { |
|
78 | $ testrm2() { | |
79 | > cat - > "$stdin" |
|
79 | > cat - > "$stdin" | |
80 | > mksubrepo sub4 |
|
80 | > mksubrepo sub4 | |
81 | > echo sub4 = sub4 >> .hgsub |
|
81 | > echo sub4 = sub4 >> .hgsub | |
82 | > hg ci -Aqmsub4 |
|
82 | > hg ci -Aqmsub4 | |
83 | > $EXTRA |
|
83 | > $EXTRA | |
84 | > hg rm .hgsub |
|
84 | > hg rm .hgsub | |
85 | > echo % update substate when removing .hgsub w/clean updated subrepo |
|
85 | > echo % update substate when removing .hgsub w/clean updated subrepo | |
86 | > hg status -S |
|
86 | > hg status -S | |
87 | > echo '%' $* |
|
87 | > echo '%' $* | |
88 | > cat "$stdin" | hg $* |
|
88 | > cat "$stdin" | hg $* | |
89 | > echo % debugsub should be empty |
|
89 | > echo % debugsub should be empty | |
90 | > hg debugsub |
|
90 | > hg debugsub | |
91 | > } |
|
91 | > } | |
92 |
|
92 | |||
93 |
|
93 | |||
94 | handle subrepos safely on qnew |
|
94 | handle subrepos safely on qnew | |
95 |
|
95 | |||
96 | $ mkrepo repo-2499-qnew |
|
96 | $ mkrepo repo-2499-qnew | |
97 | $ testadd qnew -X path:no-effect -m0 0.diff |
|
97 | $ testadd qnew -X path:no-effect -m0 0.diff | |
98 | adding a |
|
98 | adding a | |
99 | % abort when adding .hgsub w/dirty subrepo |
|
99 | % abort when adding .hgsub w/dirty subrepo | |
100 | A .hgsub |
|
100 | A .hgsub | |
101 | A sub/a |
|
101 | A sub/a | |
102 | % qnew -X path:no-effect -m0 0.diff |
|
102 | % qnew -X path:no-effect -m0 0.diff | |
103 | abort: uncommitted changes in subrepository sub |
|
103 | abort: uncommitted changes in subrepository sub | |
104 | [255] |
|
104 | [255] | |
105 | % update substate when adding .hgsub w/clean updated subrepo |
|
105 | % update substate when adding .hgsub w/clean updated subrepo | |
106 | A .hgsub |
|
106 | A .hgsub | |
107 | % qnew -X path:no-effect -m0 0.diff |
|
107 | % qnew -X path:no-effect -m0 0.diff | |
108 | path sub |
|
108 | path sub | |
109 | source sub |
|
109 | source sub | |
110 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
110 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
111 |
|
111 | |||
112 | $ testmod qnew --cwd .. -R repo-2499-qnew -X path:no-effect -m1 1.diff |
|
112 | $ testmod qnew --cwd .. -R repo-2499-qnew -X path:no-effect -m1 1.diff | |
113 | adding a |
|
113 | adding a | |
114 | % abort when modifying .hgsub w/dirty subrepo |
|
114 | % abort when modifying .hgsub w/dirty subrepo | |
115 | M .hgsub |
|
115 | M .hgsub | |
116 | A sub2/a |
|
116 | A sub2/a | |
117 | % qnew --cwd .. -R repo-2499-qnew -X path:no-effect -m1 1.diff |
|
117 | % qnew --cwd .. -R repo-2499-qnew -X path:no-effect -m1 1.diff | |
118 | abort: uncommitted changes in subrepository sub2 |
|
118 | abort: uncommitted changes in subrepository sub2 | |
119 | [255] |
|
119 | [255] | |
120 | % update substate when modifying .hgsub w/clean updated subrepo |
|
120 | % update substate when modifying .hgsub w/clean updated subrepo | |
121 | M .hgsub |
|
121 | M .hgsub | |
122 | % qnew --cwd .. -R repo-2499-qnew -X path:no-effect -m1 1.diff |
|
122 | % qnew --cwd .. -R repo-2499-qnew -X path:no-effect -m1 1.diff | |
123 | path sub |
|
123 | path sub | |
124 | source sub |
|
124 | source sub | |
125 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
125 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
126 | path sub2 |
|
126 | path sub2 | |
127 | source sub2 |
|
127 | source sub2 | |
128 | revision 1f94c7611cc6b74f5a17b16121a1170d44776845 |
|
128 | revision 1f94c7611cc6b74f5a17b16121a1170d44776845 | |
129 |
|
129 | |||
130 | $ hg qpop -qa |
|
130 | $ hg qpop -qa | |
131 | patch queue now empty |
|
131 | patch queue now empty | |
132 | $ testrm1 qnew -m2 2.diff |
|
132 | $ testrm1 qnew -m2 2.diff | |
133 | adding a |
|
133 | adding a | |
134 | % update substate when removing .hgsub w/dirty subrepo |
|
134 | % update substate when removing .hgsub w/dirty subrepo | |
135 | M sub3/a |
|
135 | M sub3/a | |
136 | R .hgsub |
|
136 | R .hgsub | |
137 | % qnew -m2 2.diff |
|
137 | % qnew -m2 2.diff | |
138 | % debugsub should be empty |
|
138 | % debugsub should be empty | |
139 |
|
139 | |||
140 | $ hg qpop -qa |
|
140 | $ hg qpop -qa | |
141 | patch queue now empty |
|
141 | patch queue now empty | |
142 | $ testrm2 qnew -m3 3.diff |
|
142 | $ testrm2 qnew -m3 3.diff | |
143 | adding a |
|
143 | adding a | |
144 | % update substate when removing .hgsub w/clean updated subrepo |
|
144 | % update substate when removing .hgsub w/clean updated subrepo | |
145 | R .hgsub |
|
145 | R .hgsub | |
146 | % qnew -m3 3.diff |
|
146 | % qnew -m3 3.diff | |
147 | % debugsub should be empty |
|
147 | % debugsub should be empty | |
148 |
|
148 | |||
149 | $ cd .. |
|
149 | $ cd .. | |
150 |
|
150 | |||
151 |
|
151 | |||
152 | handle subrepos safely on qrefresh |
|
152 | handle subrepos safely on qrefresh | |
153 |
|
153 | |||
154 | $ mkrepo repo-2499-qrefresh |
|
154 | $ mkrepo repo-2499-qrefresh | |
155 | $ hg qnew -m0 0.diff |
|
155 | $ hg qnew -m0 0.diff | |
156 | $ testadd qrefresh |
|
156 | $ testadd qrefresh | |
157 | adding a |
|
157 | adding a | |
158 | % abort when adding .hgsub w/dirty subrepo |
|
158 | % abort when adding .hgsub w/dirty subrepo | |
159 | A .hgsub |
|
159 | A .hgsub | |
160 | A sub/a |
|
160 | A sub/a | |
161 | % qrefresh |
|
161 | % qrefresh | |
162 | abort: uncommitted changes in subrepository sub |
|
162 | abort: uncommitted changes in subrepository sub | |
163 | [255] |
|
163 | [255] | |
164 | % update substate when adding .hgsub w/clean updated subrepo |
|
164 | % update substate when adding .hgsub w/clean updated subrepo | |
165 | A .hgsub |
|
165 | A .hgsub | |
166 | % qrefresh |
|
166 | % qrefresh | |
167 | path sub |
|
167 | path sub | |
168 | source sub |
|
168 | source sub | |
169 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
169 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
170 |
|
170 | |||
171 | $ hg qnew -m1 1.diff |
|
171 | $ hg qnew -m1 1.diff | |
172 | $ testmod qrefresh |
|
172 | $ testmod qrefresh | |
173 | adding a |
|
173 | adding a | |
174 | % abort when modifying .hgsub w/dirty subrepo |
|
174 | % abort when modifying .hgsub w/dirty subrepo | |
175 | M .hgsub |
|
175 | M .hgsub | |
176 | A sub2/a |
|
176 | A sub2/a | |
177 | % qrefresh |
|
177 | % qrefresh | |
178 | abort: uncommitted changes in subrepository sub2 |
|
178 | abort: uncommitted changes in subrepository sub2 | |
179 | [255] |
|
179 | [255] | |
180 | % update substate when modifying .hgsub w/clean updated subrepo |
|
180 | % update substate when modifying .hgsub w/clean updated subrepo | |
181 | M .hgsub |
|
181 | M .hgsub | |
182 | % qrefresh |
|
182 | % qrefresh | |
183 | path sub |
|
183 | path sub | |
184 | source sub |
|
184 | source sub | |
185 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
185 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
186 | path sub2 |
|
186 | path sub2 | |
187 | source sub2 |
|
187 | source sub2 | |
188 | revision 1f94c7611cc6b74f5a17b16121a1170d44776845 |
|
188 | revision 1f94c7611cc6b74f5a17b16121a1170d44776845 | |
189 |
|
189 | |||
190 | $ hg qpop -qa |
|
190 | $ hg qpop -qa | |
191 | patch queue now empty |
|
191 | patch queue now empty | |
192 | $ EXTRA='hg qnew -m2 2.diff' |
|
192 | $ EXTRA='hg qnew -m2 2.diff' | |
193 | $ testrm1 qrefresh |
|
193 | $ testrm1 qrefresh | |
194 | adding a |
|
194 | adding a | |
195 | % update substate when removing .hgsub w/dirty subrepo |
|
195 | % update substate when removing .hgsub w/dirty subrepo | |
196 | M sub3/a |
|
196 | M sub3/a | |
197 | R .hgsub |
|
197 | R .hgsub | |
198 | % qrefresh |
|
198 | % qrefresh | |
199 | % debugsub should be empty |
|
199 | % debugsub should be empty | |
200 |
|
200 | |||
201 | $ hg qpop -qa |
|
201 | $ hg qpop -qa | |
202 | patch queue now empty |
|
202 | patch queue now empty | |
203 | $ EXTRA='hg qnew -m3 3.diff' |
|
203 | $ EXTRA='hg qnew -m3 3.diff' | |
204 | $ testrm2 qrefresh |
|
204 | $ testrm2 qrefresh | |
205 | adding a |
|
205 | adding a | |
206 | % update substate when removing .hgsub w/clean updated subrepo |
|
206 | % update substate when removing .hgsub w/clean updated subrepo | |
207 | R .hgsub |
|
207 | R .hgsub | |
208 | % qrefresh |
|
208 | % qrefresh | |
209 | % debugsub should be empty |
|
209 | % debugsub should be empty | |
210 | $ EXTRA= |
|
210 | $ EXTRA= | |
211 |
|
211 | |||
212 | $ cd .. |
|
212 | $ cd .. | |
213 |
|
213 | |||
214 |
|
214 | |||
215 | handle subrepos safely on qpush/qpop |
|
215 | handle subrepos safely on qpush/qpop | |
216 | (and we cannot qpop / qpush with a modified subrepo) |
|
216 | (and we cannot qpop / qpush with a modified subrepo) | |
217 |
|
217 | |||
218 | $ mkrepo repo-2499-qpush |
|
218 | $ mkrepo repo-2499-qpush | |
219 | $ mksubrepo sub |
|
219 | $ mksubrepo sub | |
220 | adding a |
|
220 | adding a | |
221 | $ hg -R sub ci -m0sub |
|
221 | $ hg -R sub ci -m0sub | |
222 | $ echo sub = sub > .hgsub |
|
222 | $ echo sub = sub > .hgsub | |
223 | $ hg add .hgsub |
|
223 | $ hg add .hgsub | |
224 | $ hg commit -m0 |
|
224 | $ hg commit -m0 | |
225 | $ hg debugsub |
|
225 | $ hg debugsub | |
226 | path sub |
|
226 | path sub | |
227 | source sub |
|
227 | source sub | |
228 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
228 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
229 | $ echo foo > ./sub/a |
|
229 | $ echo foo > ./sub/a | |
230 | $ hg -R sub commit -m foo |
|
230 | $ hg -R sub commit -m foo | |
231 | $ hg commit -m1 |
|
231 | $ hg commit -m1 | |
232 | $ hg qimport -r "0:tip" |
|
232 | $ hg qimport -r "0:tip" | |
233 | $ hg -R sub id --id |
|
233 | $ hg -R sub id --id | |
234 | aa037b301eba |
|
234 | aa037b301eba | |
235 |
|
235 | |||
236 | qpop |
|
236 | qpop | |
237 | $ hg -R sub update 0000 |
|
237 | $ hg -R sub update 0000 | |
238 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
238 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
239 | $ hg qpop |
|
239 | $ hg qpop | |
240 | abort: local changed subrepos found, refresh first |
|
240 | abort: local changed subrepos found, refresh first | |
241 | [255] |
|
241 | [255] | |
242 | $ hg revert sub |
|
242 | $ hg revert sub | |
243 | reverting subrepo sub |
|
243 | reverting subrepo sub | |
244 | adding sub/a |
|
244 | adding sub/a | |
245 | $ hg qpop |
|
245 | $ hg qpop | |
246 | popping 1.diff |
|
246 | popping 1.diff | |
247 | now at: 0.diff |
|
247 | now at: 0.diff | |
248 | $ hg status -AS |
|
248 | $ hg status -AS | |
249 | C .hgsub |
|
249 | C .hgsub | |
250 | C .hgsubstate |
|
250 | C .hgsubstate | |
251 | C sub/a |
|
251 | C sub/a | |
252 | $ hg -R sub id --id |
|
252 | $ hg -R sub id --id | |
253 | b2fdb12cd82b |
|
253 | b2fdb12cd82b | |
254 |
|
254 | |||
255 | qpush |
|
255 | qpush | |
256 | $ hg -R sub update 0000 |
|
256 | $ hg -R sub update 0000 | |
257 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
257 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
258 | $ hg qpush |
|
258 | $ hg qpush | |
259 | abort: local changed subrepos found, refresh first |
|
259 | abort: local changed subrepos found, refresh first | |
260 | [255] |
|
260 | [255] | |
261 | $ hg revert sub |
|
261 | $ hg revert sub | |
262 | reverting subrepo sub |
|
262 | reverting subrepo sub | |
263 | adding sub/a |
|
263 | adding sub/a | |
264 | $ hg qpush |
|
264 | $ hg qpush | |
265 | applying 1.diff |
|
265 | applying 1.diff | |
266 | subrepository sub diverged (local revision: b2fdb12cd82b, remote revision: aa037b301eba) |
|
266 | subrepository sub diverged (local revision: b2fdb12cd82b, remote revision: aa037b301eba) | |
267 | (M)erge, keep (l)ocal or keep (r)emote? m |
|
267 | (M)erge, keep (l)ocal or keep (r)emote? m | |
268 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
268 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
269 | now at: 1.diff |
|
269 | now at: 1.diff | |
270 | $ hg status -AS |
|
270 | $ hg status -AS | |
271 | C .hgsub |
|
271 | C .hgsub | |
272 | C .hgsubstate |
|
272 | C .hgsubstate | |
273 | C sub/a |
|
273 | C sub/a | |
274 | $ hg -R sub id --id |
|
274 | $ hg -R sub id --id | |
275 | aa037b301eba |
|
275 | aa037b301eba | |
276 |
|
276 | |||
277 | $ cd .. |
|
277 | $ cd .. | |
278 |
|
278 | |||
279 |
|
279 | |||
280 | handle subrepos safely on qrecord |
|
280 | handle subrepos safely on qrecord | |
281 |
|
281 | |||
282 | $ mkrepo repo-2499-qrecord |
|
282 | $ mkrepo repo-2499-qrecord | |
283 | $ testadd qrecord --config ui.interactive=1 -m0 0.diff <<EOF |
|
283 | $ testadd qrecord --config ui.interactive=1 -m0 0.diff <<EOF | |
284 | > y |
|
284 | > y | |
285 | > y |
|
285 | > y | |
286 | > EOF |
|
286 | > EOF | |
287 | adding a |
|
287 | adding a | |
288 | % abort when adding .hgsub w/dirty subrepo |
|
288 | % abort when adding .hgsub w/dirty subrepo | |
289 | A .hgsub |
|
289 | A .hgsub | |
290 | A sub/a |
|
290 | A sub/a | |
291 | % qrecord --config ui.interactive=1 -m0 0.diff |
|
291 | % qrecord --config ui.interactive=1 -m0 0.diff | |
292 | diff --git a/.hgsub b/.hgsub |
|
292 | diff --git a/.hgsub b/.hgsub | |
293 | new file mode 100644 |
|
293 | new file mode 100644 | |
294 | examine changes to '.hgsub'? [Ynesfdaq?] |
|
294 | examine changes to '.hgsub'? [Ynesfdaq?] y | |
|
295 | ||||
295 | abort: uncommitted changes in subrepository sub |
|
296 | abort: uncommitted changes in subrepository sub | |
296 | [255] |
|
297 | [255] | |
297 | % update substate when adding .hgsub w/clean updated subrepo |
|
298 | % update substate when adding .hgsub w/clean updated subrepo | |
298 | A .hgsub |
|
299 | A .hgsub | |
299 | % qrecord --config ui.interactive=1 -m0 0.diff |
|
300 | % qrecord --config ui.interactive=1 -m0 0.diff | |
300 | diff --git a/.hgsub b/.hgsub |
|
301 | diff --git a/.hgsub b/.hgsub | |
301 | new file mode 100644 |
|
302 | new file mode 100644 | |
302 | examine changes to '.hgsub'? [Ynesfdaq?] |
|
303 | examine changes to '.hgsub'? [Ynesfdaq?] y | |
|
304 | ||||
303 | path sub |
|
305 | path sub | |
304 | source sub |
|
306 | source sub | |
305 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
307 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
306 |
|
308 | |||
307 | $ testmod qrecord --config ui.interactive=1 -m1 1.diff <<EOF |
|
309 | $ testmod qrecord --config ui.interactive=1 -m1 1.diff <<EOF | |
308 | > y |
|
310 | > y | |
309 | > y |
|
311 | > y | |
310 | > EOF |
|
312 | > EOF | |
311 | adding a |
|
313 | adding a | |
312 | % abort when modifying .hgsub w/dirty subrepo |
|
314 | % abort when modifying .hgsub w/dirty subrepo | |
313 | M .hgsub |
|
315 | M .hgsub | |
314 | A sub2/a |
|
316 | A sub2/a | |
315 | % qrecord --config ui.interactive=1 -m1 1.diff |
|
317 | % qrecord --config ui.interactive=1 -m1 1.diff | |
316 | diff --git a/.hgsub b/.hgsub |
|
318 | diff --git a/.hgsub b/.hgsub | |
317 | 1 hunks, 1 lines changed |
|
319 | 1 hunks, 1 lines changed | |
318 | examine changes to '.hgsub'? [Ynesfdaq?] |
|
320 | examine changes to '.hgsub'? [Ynesfdaq?] y | |
|
321 | ||||
319 | @@ -1,1 +1,2 @@ |
|
322 | @@ -1,1 +1,2 @@ | |
320 | sub = sub |
|
323 | sub = sub | |
321 | +sub2 = sub2 |
|
324 | +sub2 = sub2 | |
322 | record this change to '.hgsub'? [Ynesfdaq?] |
|
325 | record this change to '.hgsub'? [Ynesfdaq?] y | |
|
326 | ||||
323 | abort: uncommitted changes in subrepository sub2 |
|
327 | abort: uncommitted changes in subrepository sub2 | |
324 | [255] |
|
328 | [255] | |
325 | % update substate when modifying .hgsub w/clean updated subrepo |
|
329 | % update substate when modifying .hgsub w/clean updated subrepo | |
326 | M .hgsub |
|
330 | M .hgsub | |
327 | % qrecord --config ui.interactive=1 -m1 1.diff |
|
331 | % qrecord --config ui.interactive=1 -m1 1.diff | |
328 | diff --git a/.hgsub b/.hgsub |
|
332 | diff --git a/.hgsub b/.hgsub | |
329 | 1 hunks, 1 lines changed |
|
333 | 1 hunks, 1 lines changed | |
330 | examine changes to '.hgsub'? [Ynesfdaq?] |
|
334 | examine changes to '.hgsub'? [Ynesfdaq?] y | |
|
335 | ||||
331 | @@ -1,1 +1,2 @@ |
|
336 | @@ -1,1 +1,2 @@ | |
332 | sub = sub |
|
337 | sub = sub | |
333 | +sub2 = sub2 |
|
338 | +sub2 = sub2 | |
334 | record this change to '.hgsub'? [Ynesfdaq?] |
|
339 | record this change to '.hgsub'? [Ynesfdaq?] y | |
|
340 | ||||
335 | path sub |
|
341 | path sub | |
336 | source sub |
|
342 | source sub | |
337 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 |
|
343 | revision b2fdb12cd82b021c3b7053d67802e77b6eeaee31 | |
338 | path sub2 |
|
344 | path sub2 | |
339 | source sub2 |
|
345 | source sub2 | |
340 | revision 1f94c7611cc6b74f5a17b16121a1170d44776845 |
|
346 | revision 1f94c7611cc6b74f5a17b16121a1170d44776845 | |
341 |
|
347 | |||
342 | $ hg qpop -qa |
|
348 | $ hg qpop -qa | |
343 | patch queue now empty |
|
349 | patch queue now empty | |
344 | $ testrm1 qrecord --config ui.interactive=1 -m2 2.diff <<EOF |
|
350 | $ testrm1 qrecord --config ui.interactive=1 -m2 2.diff <<EOF | |
345 | > y |
|
351 | > y | |
346 | > y |
|
352 | > y | |
347 | > EOF |
|
353 | > EOF | |
348 | adding a |
|
354 | adding a | |
349 | % update substate when removing .hgsub w/dirty subrepo |
|
355 | % update substate when removing .hgsub w/dirty subrepo | |
350 | M sub3/a |
|
356 | M sub3/a | |
351 | R .hgsub |
|
357 | R .hgsub | |
352 | % qrecord --config ui.interactive=1 -m2 2.diff |
|
358 | % qrecord --config ui.interactive=1 -m2 2.diff | |
353 | diff --git a/.hgsub b/.hgsub |
|
359 | diff --git a/.hgsub b/.hgsub | |
354 | deleted file mode 100644 |
|
360 | deleted file mode 100644 | |
355 | examine changes to '.hgsub'? [Ynesfdaq?] |
|
361 | examine changes to '.hgsub'? [Ynesfdaq?] y | |
|
362 | ||||
356 | % debugsub should be empty |
|
363 | % debugsub should be empty | |
357 |
|
364 | |||
358 | $ hg qpop -qa |
|
365 | $ hg qpop -qa | |
359 | patch queue now empty |
|
366 | patch queue now empty | |
360 | $ testrm2 qrecord --config ui.interactive=1 -m3 3.diff <<EOF |
|
367 | $ testrm2 qrecord --config ui.interactive=1 -m3 3.diff <<EOF | |
361 | > y |
|
368 | > y | |
362 | > y |
|
369 | > y | |
363 | > EOF |
|
370 | > EOF | |
364 | adding a |
|
371 | adding a | |
365 | % update substate when removing .hgsub w/clean updated subrepo |
|
372 | % update substate when removing .hgsub w/clean updated subrepo | |
366 | R .hgsub |
|
373 | R .hgsub | |
367 | % qrecord --config ui.interactive=1 -m3 3.diff |
|
374 | % qrecord --config ui.interactive=1 -m3 3.diff | |
368 | diff --git a/.hgsub b/.hgsub |
|
375 | diff --git a/.hgsub b/.hgsub | |
369 | deleted file mode 100644 |
|
376 | deleted file mode 100644 | |
370 | examine changes to '.hgsub'? [Ynesfdaq?] |
|
377 | examine changes to '.hgsub'? [Ynesfdaq?] y | |
|
378 | ||||
371 | % debugsub should be empty |
|
379 | % debugsub should be empty | |
372 |
|
380 | |||
373 | $ cd .. |
|
381 | $ cd .. | |
374 |
|
382 | |||
375 |
|
383 | |||
376 | correctly handle subrepos with patch queues |
|
384 | correctly handle subrepos with patch queues | |
377 | $ mkrepo repo-subrepo-with-queue |
|
385 | $ mkrepo repo-subrepo-with-queue | |
378 | $ mksubrepo sub |
|
386 | $ mksubrepo sub | |
379 | adding a |
|
387 | adding a | |
380 | $ hg -R sub qnew sub0.diff |
|
388 | $ hg -R sub qnew sub0.diff | |
381 | $ echo sub = sub >> .hgsub |
|
389 | $ echo sub = sub >> .hgsub | |
382 | $ hg add .hgsub |
|
390 | $ hg add .hgsub | |
383 | $ hg qnew 0.diff |
|
391 | $ hg qnew 0.diff | |
384 |
|
392 | |||
385 | $ cd .. |
|
393 | $ cd .. | |
386 |
|
394 | |||
387 | check whether MQ operations can import updated .hgsubstate correctly |
|
395 | check whether MQ operations can import updated .hgsubstate correctly | |
388 | both into 'revision' and 'patch file under .hg/patches': |
|
396 | both into 'revision' and 'patch file under .hg/patches': | |
389 |
|
397 | |||
390 | $ hg init importing-hgsubstate |
|
398 | $ hg init importing-hgsubstate | |
391 | $ cd importing-hgsubstate |
|
399 | $ cd importing-hgsubstate | |
392 |
|
400 | |||
393 | $ echo a > a |
|
401 | $ echo a > a | |
394 | $ hg commit -u test -d '0 0' -Am '#0 in parent' |
|
402 | $ hg commit -u test -d '0 0' -Am '#0 in parent' | |
395 | adding a |
|
403 | adding a | |
396 | $ hg init sub |
|
404 | $ hg init sub | |
397 | $ echo sa > sub/sa |
|
405 | $ echo sa > sub/sa | |
398 | $ hg -R sub commit -u test -d '0 0' -Am '#0 in sub' |
|
406 | $ hg -R sub commit -u test -d '0 0' -Am '#0 in sub' | |
399 | adding sa |
|
407 | adding sa | |
400 | $ echo 'sub = sub' > .hgsub |
|
408 | $ echo 'sub = sub' > .hgsub | |
401 | $ touch .hgsubstate |
|
409 | $ touch .hgsubstate | |
402 | $ hg add .hgsub .hgsubstate |
|
410 | $ hg add .hgsub .hgsubstate | |
403 |
|
411 | |||
404 | $ hg qnew -u test -d '0 0' import-at-qnew |
|
412 | $ hg qnew -u test -d '0 0' import-at-qnew | |
405 | $ hg -R sub parents --template '{node} sub\n' |
|
413 | $ hg -R sub parents --template '{node} sub\n' | |
406 | b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
414 | b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
407 | $ cat .hgsubstate |
|
415 | $ cat .hgsubstate | |
408 | b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
416 | b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
409 | $ hg diff -c tip |
|
417 | $ hg diff -c tip | |
410 | diff -r f499373e340c -r f69e96d86e75 .hgsub |
|
418 | diff -r f499373e340c -r f69e96d86e75 .hgsub | |
411 | --- /dev/null |
|
419 | --- /dev/null | |
412 | +++ b/.hgsub |
|
420 | +++ b/.hgsub | |
413 | @@ -0,0 +1,1 @@ |
|
421 | @@ -0,0 +1,1 @@ | |
414 | +sub = sub |
|
422 | +sub = sub | |
415 | diff -r f499373e340c -r f69e96d86e75 .hgsubstate |
|
423 | diff -r f499373e340c -r f69e96d86e75 .hgsubstate | |
416 | --- /dev/null |
|
424 | --- /dev/null | |
417 | +++ b/.hgsubstate |
|
425 | +++ b/.hgsubstate | |
418 | @@ -0,0 +1,1 @@ |
|
426 | @@ -0,0 +1,1 @@ | |
419 | +b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
427 | +b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
420 | $ cat .hg/patches/import-at-qnew |
|
428 | $ cat .hg/patches/import-at-qnew | |
421 | # HG changeset patch |
|
429 | # HG changeset patch | |
422 | # User test |
|
430 | # User test | |
423 | # Date 0 0 |
|
431 | # Date 0 0 | |
424 | # Parent f499373e340cdca5d01dee904aeb42dd2a325e71 |
|
432 | # Parent f499373e340cdca5d01dee904aeb42dd2a325e71 | |
425 |
|
433 | |||
426 | diff -r f499373e340c -r f69e96d86e75 .hgsub |
|
434 | diff -r f499373e340c -r f69e96d86e75 .hgsub | |
427 | --- /dev/null |
|
435 | --- /dev/null | |
428 | +++ b/.hgsub |
|
436 | +++ b/.hgsub | |
429 | @@ -0,0 +1,1 @@ |
|
437 | @@ -0,0 +1,1 @@ | |
430 | +sub = sub |
|
438 | +sub = sub | |
431 | diff -r f499373e340c -r f69e96d86e75 .hgsubstate |
|
439 | diff -r f499373e340c -r f69e96d86e75 .hgsubstate | |
432 | --- /dev/null |
|
440 | --- /dev/null | |
433 | +++ b/.hgsubstate |
|
441 | +++ b/.hgsubstate | |
434 | @@ -0,0 +1,1 @@ |
|
442 | @@ -0,0 +1,1 @@ | |
435 | +b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
443 | +b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
436 | $ hg parents --template '{node}\n' |
|
444 | $ hg parents --template '{node}\n' | |
437 | f69e96d86e75a6d4fd88285dc9697acb23951041 |
|
445 | f69e96d86e75a6d4fd88285dc9697acb23951041 | |
438 | $ hg parents --template '{files}\n' |
|
446 | $ hg parents --template '{files}\n' | |
439 | .hgsub .hgsubstate |
|
447 | .hgsub .hgsubstate | |
440 |
|
448 | |||
441 | check also whether qnew not including ".hgsubstate" explicitly causes |
|
449 | check also whether qnew not including ".hgsubstate" explicitly causes | |
442 | as same result (in node hash) as one including it. |
|
450 | as same result (in node hash) as one including it. | |
443 |
|
451 | |||
444 | $ hg qpop -a -q |
|
452 | $ hg qpop -a -q | |
445 | patch queue now empty |
|
453 | patch queue now empty | |
446 | $ hg qdelete import-at-qnew |
|
454 | $ hg qdelete import-at-qnew | |
447 | $ echo 'sub = sub' > .hgsub |
|
455 | $ echo 'sub = sub' > .hgsub | |
448 | $ hg add .hgsub |
|
456 | $ hg add .hgsub | |
449 | $ rm -f .hgsubstate |
|
457 | $ rm -f .hgsubstate | |
450 | $ hg qnew -u test -d '0 0' import-at-qnew |
|
458 | $ hg qnew -u test -d '0 0' import-at-qnew | |
451 | $ hg parents --template '{node}\n' |
|
459 | $ hg parents --template '{node}\n' | |
452 | f69e96d86e75a6d4fd88285dc9697acb23951041 |
|
460 | f69e96d86e75a6d4fd88285dc9697acb23951041 | |
453 | $ hg parents --template '{files}\n' |
|
461 | $ hg parents --template '{files}\n' | |
454 | .hgsub .hgsubstate |
|
462 | .hgsub .hgsubstate | |
455 |
|
463 | |||
456 | check whether qrefresh imports updated .hgsubstate correctly |
|
464 | check whether qrefresh imports updated .hgsubstate correctly | |
457 |
|
465 | |||
458 | $ hg qpop |
|
466 | $ hg qpop | |
459 | popping import-at-qnew |
|
467 | popping import-at-qnew | |
460 | patch queue now empty |
|
468 | patch queue now empty | |
461 | $ hg qpush |
|
469 | $ hg qpush | |
462 | applying import-at-qnew |
|
470 | applying import-at-qnew | |
463 | now at: import-at-qnew |
|
471 | now at: import-at-qnew | |
464 | $ hg parents --template '{files}\n' |
|
472 | $ hg parents --template '{files}\n' | |
465 | .hgsub .hgsubstate |
|
473 | .hgsub .hgsubstate | |
466 |
|
474 | |||
467 | $ hg qnew import-at-qrefresh |
|
475 | $ hg qnew import-at-qrefresh | |
468 | $ echo sb > sub/sb |
|
476 | $ echo sb > sub/sb | |
469 | $ hg -R sub commit -u test -d '0 0' -Am '#1 in sub' |
|
477 | $ hg -R sub commit -u test -d '0 0' -Am '#1 in sub' | |
470 | adding sb |
|
478 | adding sb | |
471 | $ hg qrefresh -u test -d '0 0' |
|
479 | $ hg qrefresh -u test -d '0 0' | |
472 | $ hg -R sub parents --template '{node} sub\n' |
|
480 | $ hg -R sub parents --template '{node} sub\n' | |
473 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
481 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
474 | $ cat .hgsubstate |
|
482 | $ cat .hgsubstate | |
475 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
483 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
476 | $ hg diff -c tip |
|
484 | $ hg diff -c tip | |
477 | diff -r 05b056bb9c8c -r d987bec230f4 .hgsubstate |
|
485 | diff -r 05b056bb9c8c -r d987bec230f4 .hgsubstate | |
478 | --- a/.hgsubstate |
|
486 | --- a/.hgsubstate | |
479 | +++ b/.hgsubstate |
|
487 | +++ b/.hgsubstate | |
480 | @@ -1,1 +1,1 @@ |
|
488 | @@ -1,1 +1,1 @@ | |
481 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
489 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
482 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
490 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
483 | $ cat .hg/patches/import-at-qrefresh |
|
491 | $ cat .hg/patches/import-at-qrefresh | |
484 | # HG changeset patch |
|
492 | # HG changeset patch | |
485 | # User test |
|
493 | # User test | |
486 | # Date 0 0 |
|
494 | # Date 0 0 | |
487 | # Parent 05b056bb9c8c05ff15258b84fd42ab3527271033 |
|
495 | # Parent 05b056bb9c8c05ff15258b84fd42ab3527271033 | |
488 |
|
496 | |||
489 | diff -r 05b056bb9c8c .hgsubstate |
|
497 | diff -r 05b056bb9c8c .hgsubstate | |
490 | --- a/.hgsubstate |
|
498 | --- a/.hgsubstate | |
491 | +++ b/.hgsubstate |
|
499 | +++ b/.hgsubstate | |
492 | @@ -1,1 +1,1 @@ |
|
500 | @@ -1,1 +1,1 @@ | |
493 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
501 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
494 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
502 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
495 | $ hg parents --template '{files}\n' |
|
503 | $ hg parents --template '{files}\n' | |
496 | .hgsubstate |
|
504 | .hgsubstate | |
497 |
|
505 | |||
498 | $ hg qrefresh -u test -d '0 0' |
|
506 | $ hg qrefresh -u test -d '0 0' | |
499 | $ cat .hgsubstate |
|
507 | $ cat .hgsubstate | |
500 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
508 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
501 | $ hg diff -c tip |
|
509 | $ hg diff -c tip | |
502 | diff -r 05b056bb9c8c -r d987bec230f4 .hgsubstate |
|
510 | diff -r 05b056bb9c8c -r d987bec230f4 .hgsubstate | |
503 | --- a/.hgsubstate |
|
511 | --- a/.hgsubstate | |
504 | +++ b/.hgsubstate |
|
512 | +++ b/.hgsubstate | |
505 | @@ -1,1 +1,1 @@ |
|
513 | @@ -1,1 +1,1 @@ | |
506 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
514 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
507 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
515 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
508 | $ cat .hg/patches/import-at-qrefresh |
|
516 | $ cat .hg/patches/import-at-qrefresh | |
509 | # HG changeset patch |
|
517 | # HG changeset patch | |
510 | # User test |
|
518 | # User test | |
511 | # Date 0 0 |
|
519 | # Date 0 0 | |
512 | # Parent 05b056bb9c8c05ff15258b84fd42ab3527271033 |
|
520 | # Parent 05b056bb9c8c05ff15258b84fd42ab3527271033 | |
513 |
|
521 | |||
514 | diff -r 05b056bb9c8c .hgsubstate |
|
522 | diff -r 05b056bb9c8c .hgsubstate | |
515 | --- a/.hgsubstate |
|
523 | --- a/.hgsubstate | |
516 | +++ b/.hgsubstate |
|
524 | +++ b/.hgsubstate | |
517 | @@ -1,1 +1,1 @@ |
|
525 | @@ -1,1 +1,1 @@ | |
518 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
526 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
519 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
527 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
520 | $ hg parents --template '{files}\n' |
|
528 | $ hg parents --template '{files}\n' | |
521 | .hgsubstate |
|
529 | .hgsubstate | |
522 |
|
530 | |||
523 | $ hg update -C tip |
|
531 | $ hg update -C tip | |
524 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
532 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
525 | $ hg qpop -a |
|
533 | $ hg qpop -a | |
526 | popping import-at-qrefresh |
|
534 | popping import-at-qrefresh | |
527 | popping import-at-qnew |
|
535 | popping import-at-qnew | |
528 | patch queue now empty |
|
536 | patch queue now empty | |
529 |
|
537 | |||
530 | $ hg -R sub update -C 0 |
|
538 | $ hg -R sub update -C 0 | |
531 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
539 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
532 | $ echo 'sub = sub' > .hgsub |
|
540 | $ echo 'sub = sub' > .hgsub | |
533 | $ hg commit -Am '#1 in parent' |
|
541 | $ hg commit -Am '#1 in parent' | |
534 | adding .hgsub |
|
542 | adding .hgsub | |
535 | $ hg -R sub update -C 1 |
|
543 | $ hg -R sub update -C 1 | |
536 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
544 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
537 | $ hg commit -Am '#2 in parent (but will be rolled back soon)' |
|
545 | $ hg commit -Am '#2 in parent (but will be rolled back soon)' | |
538 | $ hg rollback |
|
546 | $ hg rollback | |
539 | repository tip rolled back to revision 1 (undo commit) |
|
547 | repository tip rolled back to revision 1 (undo commit) | |
540 | working directory now based on revision 1 |
|
548 | working directory now based on revision 1 | |
541 | $ hg status |
|
549 | $ hg status | |
542 | M .hgsubstate |
|
550 | M .hgsubstate | |
543 | $ hg qnew -u test -d '0 0' checkstate-at-qnew |
|
551 | $ hg qnew -u test -d '0 0' checkstate-at-qnew | |
544 | $ hg -R sub parents --template '{node} sub\n' |
|
552 | $ hg -R sub parents --template '{node} sub\n' | |
545 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
553 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
546 | $ cat .hgsubstate |
|
554 | $ cat .hgsubstate | |
547 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
555 | 88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
548 | $ hg diff -c tip |
|
556 | $ hg diff -c tip | |
549 | diff -r 4d91eb2fa1d1 -r 1259c112d884 .hgsubstate |
|
557 | diff -r 4d91eb2fa1d1 -r 1259c112d884 .hgsubstate | |
550 | --- a/.hgsubstate |
|
558 | --- a/.hgsubstate | |
551 | +++ b/.hgsubstate |
|
559 | +++ b/.hgsubstate | |
552 | @@ -1,1 +1,1 @@ |
|
560 | @@ -1,1 +1,1 @@ | |
553 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
561 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
554 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
562 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
555 | $ cat .hg/patches/checkstate-at-qnew |
|
563 | $ cat .hg/patches/checkstate-at-qnew | |
556 | # HG changeset patch |
|
564 | # HG changeset patch | |
557 | # User test |
|
565 | # User test | |
558 | # Date 0 0 |
|
566 | # Date 0 0 | |
559 | # Parent 4d91eb2fa1d1b22ec513347b9cd06f6b49d470fa |
|
567 | # Parent 4d91eb2fa1d1b22ec513347b9cd06f6b49d470fa | |
560 |
|
568 | |||
561 | diff -r 4d91eb2fa1d1 -r 1259c112d884 .hgsubstate |
|
569 | diff -r 4d91eb2fa1d1 -r 1259c112d884 .hgsubstate | |
562 | --- a/.hgsubstate |
|
570 | --- a/.hgsubstate | |
563 | +++ b/.hgsubstate |
|
571 | +++ b/.hgsubstate | |
564 | @@ -1,1 +1,1 @@ |
|
572 | @@ -1,1 +1,1 @@ | |
565 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub |
|
573 | -b6f6e9c41f3dfd374a6d2ed4535c87951cf979cf sub | |
566 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub |
|
574 | +88ac1bef5ed43b689d1d200b59886b675dec474b sub | |
567 | $ hg parents --template '{files}\n' |
|
575 | $ hg parents --template '{files}\n' | |
568 | .hgsubstate |
|
576 | .hgsubstate | |
569 |
|
577 | |||
570 | check whether qrefresh not including ".hgsubstate" explicitly causes |
|
578 | check whether qrefresh not including ".hgsubstate" explicitly causes | |
571 | as same result (in node hash) as one including it. |
|
579 | as same result (in node hash) as one including it. | |
572 |
|
580 | |||
573 | $ hg update -C -q 0 |
|
581 | $ hg update -C -q 0 | |
574 | $ hg qpop -a -q |
|
582 | $ hg qpop -a -q | |
575 | patch queue now empty |
|
583 | patch queue now empty | |
576 | $ hg qnew -u test -d '0 0' add-hgsub-at-qrefresh |
|
584 | $ hg qnew -u test -d '0 0' add-hgsub-at-qrefresh | |
577 | $ echo 'sub = sub' > .hgsub |
|
585 | $ echo 'sub = sub' > .hgsub | |
578 | $ echo > .hgsubstate |
|
586 | $ echo > .hgsubstate | |
579 | $ hg add .hgsub .hgsubstate |
|
587 | $ hg add .hgsub .hgsubstate | |
580 | $ hg qrefresh -u test -d '0 0' |
|
588 | $ hg qrefresh -u test -d '0 0' | |
581 | $ hg parents --template '{node}\n' |
|
589 | $ hg parents --template '{node}\n' | |
582 | 7c48c35501aae6770ed9c2517014628615821a8e |
|
590 | 7c48c35501aae6770ed9c2517014628615821a8e | |
583 | $ hg parents --template '{files}\n' |
|
591 | $ hg parents --template '{files}\n' | |
584 | .hgsub .hgsubstate |
|
592 | .hgsub .hgsubstate | |
585 |
|
593 | |||
586 | $ hg qpop -a -q |
|
594 | $ hg qpop -a -q | |
587 | patch queue now empty |
|
595 | patch queue now empty | |
588 | $ hg qdelete add-hgsub-at-qrefresh |
|
596 | $ hg qdelete add-hgsub-at-qrefresh | |
589 | $ hg qnew -u test -d '0 0' add-hgsub-at-qrefresh |
|
597 | $ hg qnew -u test -d '0 0' add-hgsub-at-qrefresh | |
590 | $ echo 'sub = sub' > .hgsub |
|
598 | $ echo 'sub = sub' > .hgsub | |
591 | $ hg add .hgsub |
|
599 | $ hg add .hgsub | |
592 | $ rm -f .hgsubstate |
|
600 | $ rm -f .hgsubstate | |
593 | $ hg qrefresh -u test -d '0 0' |
|
601 | $ hg qrefresh -u test -d '0 0' | |
594 | $ hg parents --template '{node}\n' |
|
602 | $ hg parents --template '{node}\n' | |
595 | 7c48c35501aae6770ed9c2517014628615821a8e |
|
603 | 7c48c35501aae6770ed9c2517014628615821a8e | |
596 | $ hg parents --template '{files}\n' |
|
604 | $ hg parents --template '{files}\n' | |
597 | .hgsub .hgsubstate |
|
605 | .hgsub .hgsubstate | |
598 |
|
606 | |||
599 | $ cd .. |
|
607 | $ cd .. | |
600 |
|
608 | |||
601 | $ cd .. |
|
609 | $ cd .. |
@@ -1,2591 +1,2592 | |||||
1 | Note for future hackers of patchbomb: this file is a bit heavy on |
|
1 | Note for future hackers of patchbomb: this file is a bit heavy on | |
2 | wildcards in test expectations due to how many things like hostnames |
|
2 | wildcards in test expectations due to how many things like hostnames | |
3 | tend to make it into outputs. As a result, you may need to perform the |
|
3 | tend to make it into outputs. As a result, you may need to perform the | |
4 | following regular expression substitutions: |
|
4 | following regular expression substitutions: | |
5 | @$HOSTNAME> -> @*> (glob) |
|
5 | @$HOSTNAME> -> @*> (glob) | |
6 | Mercurial-patchbomb/.* -> Mercurial-patchbomb/* (glob) |
|
6 | Mercurial-patchbomb/.* -> Mercurial-patchbomb/* (glob) | |
7 | /mixed; boundary="===+[0-9]+==" -> /mixed; boundary="===*== (glob)" |
|
7 | /mixed; boundary="===+[0-9]+==" -> /mixed; boundary="===*== (glob)" | |
8 | --===+[0-9]+=+--$ -> --===*=-- (glob) |
|
8 | --===+[0-9]+=+--$ -> --===*=-- (glob) | |
9 | --===+[0-9]+=+$ -> --===*= (glob) |
|
9 | --===+[0-9]+=+$ -> --===*= (glob) | |
10 |
|
10 | |||
11 | $ cat > prune-blank-after-boundary.py <<EOF |
|
11 | $ cat > prune-blank-after-boundary.py <<EOF | |
12 | > import sys |
|
12 | > import sys | |
13 | > skipblank = False |
|
13 | > skipblank = False | |
14 | > trim = lambda x: x.strip(' \r\n') |
|
14 | > trim = lambda x: x.strip(' \r\n') | |
15 | > for l in sys.stdin: |
|
15 | > for l in sys.stdin: | |
16 | > if trim(l).endswith('=--') or trim(l).endswith('=='): |
|
16 | > if trim(l).endswith('=--') or trim(l).endswith('=='): | |
17 | > skipblank = True |
|
17 | > skipblank = True | |
18 | > print l, |
|
18 | > print l, | |
19 | > continue |
|
19 | > continue | |
20 | > if not trim(l) and skipblank: |
|
20 | > if not trim(l) and skipblank: | |
21 | > continue |
|
21 | > continue | |
22 | > skipblank = False |
|
22 | > skipblank = False | |
23 | > print l, |
|
23 | > print l, | |
24 | > EOF |
|
24 | > EOF | |
25 | $ FILTERBOUNDARY="python `pwd`/prune-blank-after-boundary.py" |
|
25 | $ FILTERBOUNDARY="python `pwd`/prune-blank-after-boundary.py" | |
26 | $ echo "[extensions]" >> $HGRCPATH |
|
26 | $ echo "[extensions]" >> $HGRCPATH | |
27 | $ echo "patchbomb=" >> $HGRCPATH |
|
27 | $ echo "patchbomb=" >> $HGRCPATH | |
28 |
|
28 | |||
29 | $ hg init t |
|
29 | $ hg init t | |
30 | $ cd t |
|
30 | $ cd t | |
31 | $ echo a > a |
|
31 | $ echo a > a | |
32 | $ hg commit -Ama -d '1 0' |
|
32 | $ hg commit -Ama -d '1 0' | |
33 | adding a |
|
33 | adding a | |
34 |
|
34 | |||
35 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip |
|
35 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | |
36 | this patch series consists of 1 patches. |
|
36 | this patch series consists of 1 patches. | |
37 |
|
37 | |||
38 |
|
38 | |||
39 | displaying [PATCH] a ... |
|
39 | displaying [PATCH] a ... | |
40 | Content-Type: text/plain; charset="us-ascii" |
|
40 | Content-Type: text/plain; charset="us-ascii" | |
41 | MIME-Version: 1.0 |
|
41 | MIME-Version: 1.0 | |
42 | Content-Transfer-Encoding: 7bit |
|
42 | Content-Transfer-Encoding: 7bit | |
43 | Subject: [PATCH] a |
|
43 | Subject: [PATCH] a | |
44 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
44 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
45 | X-Mercurial-Series-Index: 1 |
|
45 | X-Mercurial-Series-Index: 1 | |
46 | X-Mercurial-Series-Total: 1 |
|
46 | X-Mercurial-Series-Total: 1 | |
47 | Message-Id: <8580ff50825a50c8f716.60@*> (glob) |
|
47 | Message-Id: <8580ff50825a50c8f716.60@*> (glob) | |
48 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob) |
|
48 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob) | |
49 | User-Agent: Mercurial-patchbomb/* (glob) |
|
49 | User-Agent: Mercurial-patchbomb/* (glob) | |
50 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
50 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
51 | From: quux |
|
51 | From: quux | |
52 | To: foo |
|
52 | To: foo | |
53 | Cc: bar |
|
53 | Cc: bar | |
54 |
|
54 | |||
55 | # HG changeset patch |
|
55 | # HG changeset patch | |
56 | # User test |
|
56 | # User test | |
57 | # Date 1 0 |
|
57 | # Date 1 0 | |
58 | # Thu Jan 01 00:00:01 1970 +0000 |
|
58 | # Thu Jan 01 00:00:01 1970 +0000 | |
59 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
59 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
60 | # Parent 0000000000000000000000000000000000000000 |
|
60 | # Parent 0000000000000000000000000000000000000000 | |
61 | a |
|
61 | a | |
62 |
|
62 | |||
63 | diff -r 000000000000 -r 8580ff50825a a |
|
63 | diff -r 000000000000 -r 8580ff50825a a | |
64 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
64 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
65 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
65 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
66 | @@ -0,0 +1,1 @@ |
|
66 | @@ -0,0 +1,1 @@ | |
67 | +a |
|
67 | +a | |
68 |
|
68 | |||
69 |
|
69 | |||
70 | $ hg --config ui.interactive=1 email --confirm -n -f quux -t foo -c bar -r tip<<EOF |
|
70 | $ hg --config ui.interactive=1 email --confirm -n -f quux -t foo -c bar -r tip<<EOF | |
71 | > n |
|
71 | > n | |
72 | > EOF |
|
72 | > EOF | |
73 | this patch series consists of 1 patches. |
|
73 | this patch series consists of 1 patches. | |
74 |
|
74 | |||
75 |
|
75 | |||
76 | Final summary: |
|
76 | Final summary: | |
77 |
|
77 | |||
78 | From: quux |
|
78 | From: quux | |
79 | To: foo |
|
79 | To: foo | |
80 | Cc: bar |
|
80 | Cc: bar | |
81 | Subject: [PATCH] a |
|
81 | Subject: [PATCH] a | |
82 | a | 1 + |
|
82 | a | 1 + | |
83 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
83 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
84 |
|
84 | |||
85 |
are you sure you want to send (yn)? |
|
85 | are you sure you want to send (yn)? n | |
|
86 | abort: patchbomb canceled | |||
86 | [255] |
|
87 | [255] | |
87 |
|
88 | |||
88 | $ echo b > b |
|
89 | $ echo b > b | |
89 | $ hg commit -Amb -d '2 0' |
|
90 | $ hg commit -Amb -d '2 0' | |
90 | adding b |
|
91 | adding b | |
91 |
|
92 | |||
92 | $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip |
|
93 | $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | |
93 | this patch series consists of 2 patches. |
|
94 | this patch series consists of 2 patches. | |
94 |
|
95 | |||
95 |
|
96 | |||
96 | Write the introductory message for the patch series. |
|
97 | Write the introductory message for the patch series. | |
97 |
|
98 | |||
98 |
|
99 | |||
99 | displaying [PATCH 0 of 2] test ... |
|
100 | displaying [PATCH 0 of 2] test ... | |
100 |
Content-Type: text/plain; |
|
101 | Content-Type: text/plain; charset="us-ascii" | |
101 | MIME-Version: 1.0 |
|
102 | MIME-Version: 1.0 | |
102 | Content-Transfer-Encoding: 7bit |
|
103 | Content-Transfer-Encoding: 7bit | |
103 | Subject: [PATCH 0 of 2] test |
|
104 | Subject: [PATCH 0 of 2] test | |
104 | Message-Id: <patchbomb.120@*> (glob) |
|
105 | Message-Id: <patchbomb.120@*> (glob) | |
105 | User-Agent: Mercurial-patchbomb/* (glob) |
|
106 | User-Agent: Mercurial-patchbomb/* (glob) | |
106 | Date: Thu, 01 Jan 1970 00:02:00 +0000 |
|
107 | Date: Thu, 01 Jan 1970 00:02:00 +0000 | |
107 | From: quux |
|
108 | From: quux | |
108 | To: foo |
|
109 | To: foo | |
109 | Cc: bar |
|
110 | Cc: bar | |
110 |
|
111 | |||
111 |
|
112 | |||
112 | displaying [PATCH 1 of 2] a ... |
|
113 | displaying [PATCH 1 of 2] a ... | |
113 | Content-Type: text/plain; charset="us-ascii" |
|
114 | Content-Type: text/plain; charset="us-ascii" | |
114 | MIME-Version: 1.0 |
|
115 | MIME-Version: 1.0 | |
115 | Content-Transfer-Encoding: 7bit |
|
116 | Content-Transfer-Encoding: 7bit | |
116 | Subject: [PATCH 1 of 2] a |
|
117 | Subject: [PATCH 1 of 2] a | |
117 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
118 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
118 | X-Mercurial-Series-Index: 1 |
|
119 | X-Mercurial-Series-Index: 1 | |
119 | X-Mercurial-Series-Total: 2 |
|
120 | X-Mercurial-Series-Total: 2 | |
120 | Message-Id: <8580ff50825a50c8f716.121@*> (glob) |
|
121 | Message-Id: <8580ff50825a50c8f716.121@*> (glob) | |
121 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob) |
|
122 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob) | |
122 | In-Reply-To: <patchbomb.120@*> (glob) |
|
123 | In-Reply-To: <patchbomb.120@*> (glob) | |
123 | References: <patchbomb.120@*> (glob) |
|
124 | References: <patchbomb.120@*> (glob) | |
124 | User-Agent: Mercurial-patchbomb/* (glob) |
|
125 | User-Agent: Mercurial-patchbomb/* (glob) | |
125 | Date: Thu, 01 Jan 1970 00:02:01 +0000 |
|
126 | Date: Thu, 01 Jan 1970 00:02:01 +0000 | |
126 | From: quux |
|
127 | From: quux | |
127 | To: foo |
|
128 | To: foo | |
128 | Cc: bar |
|
129 | Cc: bar | |
129 |
|
130 | |||
130 | # HG changeset patch |
|
131 | # HG changeset patch | |
131 | # User test |
|
132 | # User test | |
132 | # Date 1 0 |
|
133 | # Date 1 0 | |
133 | # Thu Jan 01 00:00:01 1970 +0000 |
|
134 | # Thu Jan 01 00:00:01 1970 +0000 | |
134 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
135 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
135 | # Parent 0000000000000000000000000000000000000000 |
|
136 | # Parent 0000000000000000000000000000000000000000 | |
136 | a |
|
137 | a | |
137 |
|
138 | |||
138 | diff -r 000000000000 -r 8580ff50825a a |
|
139 | diff -r 000000000000 -r 8580ff50825a a | |
139 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
140 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
140 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
141 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
141 | @@ -0,0 +1,1 @@ |
|
142 | @@ -0,0 +1,1 @@ | |
142 | +a |
|
143 | +a | |
143 |
|
144 | |||
144 | displaying [PATCH 2 of 2] b ... |
|
145 | displaying [PATCH 2 of 2] b ... | |
145 | Content-Type: text/plain; charset="us-ascii" |
|
146 | Content-Type: text/plain; charset="us-ascii" | |
146 | MIME-Version: 1.0 |
|
147 | MIME-Version: 1.0 | |
147 | Content-Transfer-Encoding: 7bit |
|
148 | Content-Transfer-Encoding: 7bit | |
148 | Subject: [PATCH 2 of 2] b |
|
149 | Subject: [PATCH 2 of 2] b | |
149 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
150 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
150 | X-Mercurial-Series-Index: 2 |
|
151 | X-Mercurial-Series-Index: 2 | |
151 | X-Mercurial-Series-Total: 2 |
|
152 | X-Mercurial-Series-Total: 2 | |
152 | Message-Id: <97d72e5f12c7e84f8506.122@*> (glob) |
|
153 | Message-Id: <97d72e5f12c7e84f8506.122@*> (glob) | |
153 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob) |
|
154 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob) | |
154 | In-Reply-To: <patchbomb.120@*> (glob) |
|
155 | In-Reply-To: <patchbomb.120@*> (glob) | |
155 | References: <patchbomb.120@*> (glob) |
|
156 | References: <patchbomb.120@*> (glob) | |
156 | User-Agent: Mercurial-patchbomb/* (glob) |
|
157 | User-Agent: Mercurial-patchbomb/* (glob) | |
157 | Date: Thu, 01 Jan 1970 00:02:02 +0000 |
|
158 | Date: Thu, 01 Jan 1970 00:02:02 +0000 | |
158 | From: quux |
|
159 | From: quux | |
159 | To: foo |
|
160 | To: foo | |
160 | Cc: bar |
|
161 | Cc: bar | |
161 |
|
162 | |||
162 | # HG changeset patch |
|
163 | # HG changeset patch | |
163 | # User test |
|
164 | # User test | |
164 | # Date 2 0 |
|
165 | # Date 2 0 | |
165 | # Thu Jan 01 00:00:02 1970 +0000 |
|
166 | # Thu Jan 01 00:00:02 1970 +0000 | |
166 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
167 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
167 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
168 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
168 | b |
|
169 | b | |
169 |
|
170 | |||
170 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
171 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
171 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
172 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
172 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
173 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
173 | @@ -0,0 +1,1 @@ |
|
174 | @@ -0,0 +1,1 @@ | |
174 | +b |
|
175 | +b | |
175 |
|
176 | |||
176 |
|
177 | |||
177 | .hg/last-email.txt |
|
178 | .hg/last-email.txt | |
178 |
|
179 | |||
179 | $ cat > editor.sh << '__EOF__' |
|
180 | $ cat > editor.sh << '__EOF__' | |
180 | > echo "a precious introductory message" > "$1" |
|
181 | > echo "a precious introductory message" > "$1" | |
181 | > __EOF__ |
|
182 | > __EOF__ | |
182 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg email -n -t foo -s test -r 0:tip > /dev/null |
|
183 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg email -n -t foo -s test -r 0:tip > /dev/null | |
183 | $ cat .hg/last-email.txt |
|
184 | $ cat .hg/last-email.txt | |
184 | a precious introductory message |
|
185 | a precious introductory message | |
185 |
|
186 | |||
186 | $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip \ |
|
187 | $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip \ | |
187 | > --config extensions.progress= --config progress.assume-tty=1 \ |
|
188 | > --config extensions.progress= --config progress.assume-tty=1 \ | |
188 | > --config progress.delay=0 --config progress.refresh=0 \ |
|
189 | > --config progress.delay=0 --config progress.refresh=0 \ | |
189 | > --config progress.width=60 |
|
190 | > --config progress.width=60 | |
190 | this patch series consists of 2 patches. |
|
191 | this patch series consists of 2 patches. | |
191 |
|
192 | |||
192 |
|
193 | |||
193 | Write the introductory message for the patch series. |
|
194 | Write the introductory message for the patch series. | |
194 |
|
195 | |||
195 | \r (no-eol) (esc) |
|
196 | \r (no-eol) (esc) | |
196 | sending [ ] 0/3\r (no-eol) (esc) |
|
197 | sending [ ] 0/3\r (no-eol) (esc) | |
197 | sending [ ] 0/3\r (no-eol) (esc) |
|
198 | sending [ ] 0/3\r (no-eol) (esc) | |
198 | \r (no-eol) (esc) |
|
199 | \r (no-eol) (esc) | |
199 | \r (no-eol) (esc) |
|
200 | \r (no-eol) (esc) | |
200 | \r (no-eol) (esc) |
|
201 | \r (no-eol) (esc) | |
201 | \r (no-eol) (esc) |
|
202 | \r (no-eol) (esc) | |
202 | sending [==============> ] 1/3\r (no-eol) (esc) |
|
203 | sending [==============> ] 1/3\r (no-eol) (esc) | |
203 | sending [==============> ] 1/3\r (no-eol) (esc) |
|
204 | sending [==============> ] 1/3\r (no-eol) (esc) | |
204 | \r (no-eol) (esc) |
|
205 | \r (no-eol) (esc) | |
205 | \r (no-eol) (esc) |
|
206 | \r (no-eol) (esc) | |
206 | \r (no-eol) (esc) |
|
207 | \r (no-eol) (esc) | |
207 | \r (no-eol) (esc) |
|
208 | \r (no-eol) (esc) | |
208 | sending [=============================> ] 2/3\r (no-eol) (esc) |
|
209 | sending [=============================> ] 2/3\r (no-eol) (esc) | |
209 | sending [=============================> ] 2/3\r (no-eol) (esc) |
|
210 | sending [=============================> ] 2/3\r (no-eol) (esc) | |
210 | \r (esc) |
|
211 | \r (esc) | |
211 | sending [PATCH 0 of 2] test ... |
|
212 | sending [PATCH 0 of 2] test ... | |
212 | sending [PATCH 1 of 2] a ... |
|
213 | sending [PATCH 1 of 2] a ... | |
213 | sending [PATCH 2 of 2] b ... |
|
214 | sending [PATCH 2 of 2] b ... | |
214 |
|
215 | |||
215 | $ cd .. |
|
216 | $ cd .. | |
216 |
|
217 | |||
217 | $ hg clone -q t t2 |
|
218 | $ hg clone -q t t2 | |
218 | $ cd t2 |
|
219 | $ cd t2 | |
219 | $ echo c > c |
|
220 | $ echo c > c | |
220 | $ hg commit -Amc -d '3 0' |
|
221 | $ hg commit -Amc -d '3 0' | |
221 | adding c |
|
222 | adding c | |
222 |
|
223 | |||
223 | $ cat > description <<EOF |
|
224 | $ cat > description <<EOF | |
224 | > a multiline |
|
225 | > a multiline | |
225 | > |
|
226 | > | |
226 | > description |
|
227 | > description | |
227 | > EOF |
|
228 | > EOF | |
228 |
|
229 | |||
229 |
|
230 | |||
230 | test bundle and description: |
|
231 | test bundle and description: | |
231 | $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \ |
|
232 | $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \ | |
232 | > -c bar -s test -r tip -b --desc description | $FILTERBOUNDARY |
|
233 | > -c bar -s test -r tip -b --desc description | $FILTERBOUNDARY | |
233 | searching for changes |
|
234 | searching for changes | |
234 | 1 changesets found |
|
235 | 1 changesets found | |
235 |
|
236 | |||
236 | displaying test ... |
|
237 | displaying test ... | |
237 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
238 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
238 | MIME-Version: 1.0 |
|
239 | MIME-Version: 1.0 | |
239 | Subject: test |
|
240 | Subject: test | |
240 | Message-Id: <patchbomb.180@*> (glob) |
|
241 | Message-Id: <patchbomb.180@*> (glob) | |
241 | User-Agent: Mercurial-patchbomb/* (glob) |
|
242 | User-Agent: Mercurial-patchbomb/* (glob) | |
242 | Date: Thu, 01 Jan 1970 00:03:00 +0000 |
|
243 | Date: Thu, 01 Jan 1970 00:03:00 +0000 | |
243 | From: quux |
|
244 | From: quux | |
244 | To: foo |
|
245 | To: foo | |
245 | Cc: bar |
|
246 | Cc: bar | |
246 |
|
247 | |||
247 | --===*= (glob) |
|
248 | --===*= (glob) | |
248 | Content-Type: text/plain; charset="us-ascii" |
|
249 | Content-Type: text/plain; charset="us-ascii" | |
249 | MIME-Version: 1.0 |
|
250 | MIME-Version: 1.0 | |
250 | Content-Transfer-Encoding: 7bit |
|
251 | Content-Transfer-Encoding: 7bit | |
251 |
|
252 | |||
252 | a multiline |
|
253 | a multiline | |
253 |
|
254 | |||
254 | description |
|
255 | description | |
255 |
|
256 | |||
256 | --===*= (glob) |
|
257 | --===*= (glob) | |
257 | Content-Type: application/x-mercurial-bundle |
|
258 | Content-Type: application/x-mercurial-bundle | |
258 | MIME-Version: 1.0 |
|
259 | MIME-Version: 1.0 | |
259 | Content-Disposition: attachment; filename="bundle.hg" |
|
260 | Content-Disposition: attachment; filename="bundle.hg" | |
260 | Content-Transfer-Encoding: base64 |
|
261 | Content-Transfer-Encoding: base64 | |
261 |
|
262 | |||
262 | SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA |
|
263 | SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA | |
263 | 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8 |
|
264 | 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8 | |
264 | oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2 |
|
265 | oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2 | |
265 | Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE |
|
266 | Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE | |
266 | SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD |
|
267 | SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD | |
267 | sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC |
|
268 | sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC | |
268 | Q70eyNw= |
|
269 | Q70eyNw= | |
269 | --===*=-- (glob) |
|
270 | --===*=-- (glob) | |
270 |
|
271 | |||
271 | utf-8 patch: |
|
272 | utf-8 patch: | |
272 | $ python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();' |
|
273 | $ python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();' | |
273 | $ hg commit -A -d '4 0' -m 'utf-8 content' |
|
274 | $ hg commit -A -d '4 0' -m 'utf-8 content' | |
274 | adding description |
|
275 | adding description | |
275 | adding utf |
|
276 | adding utf | |
276 |
|
277 | |||
277 | no mime encoding for email --test: |
|
278 | no mime encoding for email --test: | |
278 | $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n |
|
279 | $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | |
279 | this patch series consists of 1 patches. |
|
280 | this patch series consists of 1 patches. | |
280 |
|
281 | |||
281 |
|
282 | |||
282 | displaying [PATCH] utf-8 content ... |
|
283 | displaying [PATCH] utf-8 content ... | |
283 | Content-Type: text/plain; charset="us-ascii" |
|
284 | Content-Type: text/plain; charset="us-ascii" | |
284 | MIME-Version: 1.0 |
|
285 | MIME-Version: 1.0 | |
285 | Content-Transfer-Encoding: 8bit |
|
286 | Content-Transfer-Encoding: 8bit | |
286 | Subject: [PATCH] utf-8 content |
|
287 | Subject: [PATCH] utf-8 content | |
287 | X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
288 | X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f | |
288 | X-Mercurial-Series-Index: 1 |
|
289 | X-Mercurial-Series-Index: 1 | |
289 | X-Mercurial-Series-Total: 1 |
|
290 | X-Mercurial-Series-Total: 1 | |
290 | Message-Id: <909a00e13e9d78b575ae.240@*> (glob) |
|
291 | Message-Id: <909a00e13e9d78b575ae.240@*> (glob) | |
291 | X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob) |
|
292 | X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob) | |
292 | User-Agent: Mercurial-patchbomb/* (glob) |
|
293 | User-Agent: Mercurial-patchbomb/* (glob) | |
293 | Date: Thu, 01 Jan 1970 00:04:00 +0000 |
|
294 | Date: Thu, 01 Jan 1970 00:04:00 +0000 | |
294 | From: quux |
|
295 | From: quux | |
295 | To: foo |
|
296 | To: foo | |
296 | Cc: bar |
|
297 | Cc: bar | |
297 |
|
298 | |||
298 | # HG changeset patch |
|
299 | # HG changeset patch | |
299 | # User test |
|
300 | # User test | |
300 | # Date 4 0 |
|
301 | # Date 4 0 | |
301 | # Thu Jan 01 00:00:04 1970 +0000 |
|
302 | # Thu Jan 01 00:00:04 1970 +0000 | |
302 | # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
303 | # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f | |
303 | # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
304 | # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
304 | utf-8 content |
|
305 | utf-8 content | |
305 |
|
306 | |||
306 | diff -r ff2c9fa2018b -r 909a00e13e9d description |
|
307 | diff -r ff2c9fa2018b -r 909a00e13e9d description | |
307 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
308 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
308 | +++ b/description Thu Jan 01 00:00:04 1970 +0000 |
|
309 | +++ b/description Thu Jan 01 00:00:04 1970 +0000 | |
309 | @@ -0,0 +1,3 @@ |
|
310 | @@ -0,0 +1,3 @@ | |
310 | +a multiline |
|
311 | +a multiline | |
311 | + |
|
312 | + | |
312 | +description |
|
313 | +description | |
313 | diff -r ff2c9fa2018b -r 909a00e13e9d utf |
|
314 | diff -r ff2c9fa2018b -r 909a00e13e9d utf | |
314 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
315 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
315 | +++ b/utf Thu Jan 01 00:00:04 1970 +0000 |
|
316 | +++ b/utf Thu Jan 01 00:00:04 1970 +0000 | |
316 | @@ -0,0 +1,1 @@ |
|
317 | @@ -0,0 +1,1 @@ | |
317 | +h\xc3\xb6mma! (esc) |
|
318 | +h\xc3\xb6mma! (esc) | |
318 |
|
319 | |||
319 |
|
320 | |||
320 | mime encoded mbox (base64): |
|
321 | mime encoded mbox (base64): | |
321 | $ hg email --date '1970-1-1 0:4' -f 'Q <quux>' -t foo -c bar -r tip -m mbox |
|
322 | $ hg email --date '1970-1-1 0:4' -f 'Q <quux>' -t foo -c bar -r tip -m mbox | |
322 | this patch series consists of 1 patches. |
|
323 | this patch series consists of 1 patches. | |
323 |
|
324 | |||
324 |
|
325 | |||
325 | sending [PATCH] utf-8 content ... |
|
326 | sending [PATCH] utf-8 content ... | |
326 |
|
327 | |||
327 | $ cat mbox |
|
328 | $ cat mbox | |
328 | From quux ... ... .. ..:..:.. .... (re) |
|
329 | From quux ... ... .. ..:..:.. .... (re) | |
329 | Content-Type: text/plain; charset="utf-8" |
|
330 | Content-Type: text/plain; charset="utf-8" | |
330 | MIME-Version: 1.0 |
|
331 | MIME-Version: 1.0 | |
331 | Content-Transfer-Encoding: base64 |
|
332 | Content-Transfer-Encoding: base64 | |
332 | Subject: [PATCH] utf-8 content |
|
333 | Subject: [PATCH] utf-8 content | |
333 | X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
334 | X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f | |
334 | X-Mercurial-Series-Index: 1 |
|
335 | X-Mercurial-Series-Index: 1 | |
335 | X-Mercurial-Series-Total: 1 |
|
336 | X-Mercurial-Series-Total: 1 | |
336 | Message-Id: <909a00e13e9d78b575ae.240@*> (glob) |
|
337 | Message-Id: <909a00e13e9d78b575ae.240@*> (glob) | |
337 | X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob) |
|
338 | X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob) | |
338 | User-Agent: Mercurial-patchbomb/* (glob) |
|
339 | User-Agent: Mercurial-patchbomb/* (glob) | |
339 | Date: Thu, 01 Jan 1970 00:04:00 +0000 |
|
340 | Date: Thu, 01 Jan 1970 00:04:00 +0000 | |
340 | From: Q <quux> |
|
341 | From: Q <quux> | |
341 | To: foo |
|
342 | To: foo | |
342 | Cc: bar |
|
343 | Cc: bar | |
343 |
|
344 | |||
344 | IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojICAgICAgVGh1IEph |
|
345 | IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojICAgICAgVGh1IEph | |
345 | biAwMSAwMDowMDowNCAxOTcwICswMDAwCiMgTm9kZSBJRCA5MDlhMDBlMTNlOWQ3OGI1NzVhZWVl |
|
346 | biAwMSAwMDowMDowNCAxOTcwICswMDAwCiMgTm9kZSBJRCA5MDlhMDBlMTNlOWQ3OGI1NzVhZWVl | |
346 | MjNkZGRiYWRhNDZkNWExNDNmCiMgUGFyZW50ICBmZjJjOWZhMjAxOGIxNWZhNzRiMzMzNjNiZGE5 |
|
347 | MjNkZGRiYWRhNDZkNWExNDNmCiMgUGFyZW50ICBmZjJjOWZhMjAxOGIxNWZhNzRiMzMzNjNiZGE5 | |
347 | NTI3MzIzZTJhOTlmCnV0Zi04IGNvbnRlbnQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIDkwOWEw |
|
348 | NTI3MzIzZTJhOTlmCnV0Zi04IGNvbnRlbnQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIDkwOWEw | |
348 | MGUxM2U5ZCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3 |
|
349 | MGUxM2U5ZCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3 | |
349 | MCArMDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK |
|
350 | MCArMDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK | |
350 | QEAgLTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5 |
|
351 | QEAgLTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5 | |
351 | ZmEyMDE4YiAtciA5MDlhMDBlMTNlOWQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow |
|
352 | ZmEyMDE4YiAtciA5MDlhMDBlMTNlOWQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow | |
352 | MDowMCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK |
|
353 | MDowMCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK | |
353 | QEAgLTAsMCArMSwxIEBACitow7ZtbWEhCg== |
|
354 | QEAgLTAsMCArMSwxIEBACitow7ZtbWEhCg== | |
354 |
|
355 | |||
355 |
|
356 | |||
356 | $ python -c 'print open("mbox").read().split("\n\n")[1].decode("base64")' |
|
357 | $ python -c 'print open("mbox").read().split("\n\n")[1].decode("base64")' | |
357 | # HG changeset patch |
|
358 | # HG changeset patch | |
358 | # User test |
|
359 | # User test | |
359 | # Date 4 0 |
|
360 | # Date 4 0 | |
360 | # Thu Jan 01 00:00:04 1970 +0000 |
|
361 | # Thu Jan 01 00:00:04 1970 +0000 | |
361 | # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
362 | # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f | |
362 | # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
363 | # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
363 | utf-8 content |
|
364 | utf-8 content | |
364 |
|
365 | |||
365 | diff -r ff2c9fa2018b -r 909a00e13e9d description |
|
366 | diff -r ff2c9fa2018b -r 909a00e13e9d description | |
366 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
367 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
367 | +++ b/description Thu Jan 01 00:00:04 1970 +0000 |
|
368 | +++ b/description Thu Jan 01 00:00:04 1970 +0000 | |
368 | @@ -0,0 +1,3 @@ |
|
369 | @@ -0,0 +1,3 @@ | |
369 | +a multiline |
|
370 | +a multiline | |
370 | + |
|
371 | + | |
371 | +description |
|
372 | +description | |
372 | diff -r ff2c9fa2018b -r 909a00e13e9d utf |
|
373 | diff -r ff2c9fa2018b -r 909a00e13e9d utf | |
373 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
374 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
374 | +++ b/utf Thu Jan 01 00:00:04 1970 +0000 |
|
375 | +++ b/utf Thu Jan 01 00:00:04 1970 +0000 | |
375 | @@ -0,0 +1,1 @@ |
|
376 | @@ -0,0 +1,1 @@ | |
376 | +h\xc3\xb6mma! (esc) |
|
377 | +h\xc3\xb6mma! (esc) | |
377 |
|
378 | |||
378 | $ rm mbox |
|
379 | $ rm mbox | |
379 |
|
380 | |||
380 | mime encoded mbox (quoted-printable): |
|
381 | mime encoded mbox (quoted-printable): | |
381 | $ python -c 'fp = open("long", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();' |
|
382 | $ python -c 'fp = open("long", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();' | |
382 | $ hg commit -A -d '4 0' -m 'long line' |
|
383 | $ hg commit -A -d '4 0' -m 'long line' | |
383 | adding long |
|
384 | adding long | |
384 |
|
385 | |||
385 | no mime encoding for email --test: |
|
386 | no mime encoding for email --test: | |
386 | $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n |
|
387 | $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | |
387 | this patch series consists of 1 patches. |
|
388 | this patch series consists of 1 patches. | |
388 |
|
389 | |||
389 |
|
390 | |||
390 | displaying [PATCH] long line ... |
|
391 | displaying [PATCH] long line ... | |
391 | Content-Type: text/plain; charset="us-ascii" |
|
392 | Content-Type: text/plain; charset="us-ascii" | |
392 | MIME-Version: 1.0 |
|
393 | MIME-Version: 1.0 | |
393 | Content-Transfer-Encoding: quoted-printable |
|
394 | Content-Transfer-Encoding: quoted-printable | |
394 | Subject: [PATCH] long line |
|
395 | Subject: [PATCH] long line | |
395 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
396 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
396 | X-Mercurial-Series-Index: 1 |
|
397 | X-Mercurial-Series-Index: 1 | |
397 | X-Mercurial-Series-Total: 1 |
|
398 | X-Mercurial-Series-Total: 1 | |
398 | Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) |
|
399 | Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) | |
399 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) |
|
400 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) | |
400 | User-Agent: Mercurial-patchbomb/* (glob) |
|
401 | User-Agent: Mercurial-patchbomb/* (glob) | |
401 | Date: Thu, 01 Jan 1970 00:04:00 +0000 |
|
402 | Date: Thu, 01 Jan 1970 00:04:00 +0000 | |
402 | From: quux |
|
403 | From: quux | |
403 | To: foo |
|
404 | To: foo | |
404 | Cc: bar |
|
405 | Cc: bar | |
405 |
|
406 | |||
406 | # HG changeset patch |
|
407 | # HG changeset patch | |
407 | # User test |
|
408 | # User test | |
408 | # Date 4 0 |
|
409 | # Date 4 0 | |
409 | # Thu Jan 01 00:00:04 1970 +0000 |
|
410 | # Thu Jan 01 00:00:04 1970 +0000 | |
410 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
411 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
411 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
412 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
412 | long line |
|
413 | long line | |
413 |
|
414 | |||
414 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
415 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
415 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
416 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
416 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
417 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
417 | @@ -0,0 +1,4 @@ |
|
418 | @@ -0,0 +1,4 @@ | |
418 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
419 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
419 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
420 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
420 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
421 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
421 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
422 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
422 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
423 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
423 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
424 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
424 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
425 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
425 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
426 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
426 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
427 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
427 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
428 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
428 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
429 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
429 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
430 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
430 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
431 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
431 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
432 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
432 | +foo |
|
433 | +foo | |
433 | + |
|
434 | + | |
434 | +bar |
|
435 | +bar | |
435 |
|
436 | |||
436 |
|
437 | |||
437 | mime encoded mbox (quoted-printable): |
|
438 | mime encoded mbox (quoted-printable): | |
438 | $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox |
|
439 | $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox | |
439 | this patch series consists of 1 patches. |
|
440 | this patch series consists of 1 patches. | |
440 |
|
441 | |||
441 |
|
442 | |||
442 | sending [PATCH] long line ... |
|
443 | sending [PATCH] long line ... | |
443 | $ cat mbox |
|
444 | $ cat mbox | |
444 | From quux ... ... .. ..:..:.. .... (re) |
|
445 | From quux ... ... .. ..:..:.. .... (re) | |
445 | Content-Type: text/plain; charset="us-ascii" |
|
446 | Content-Type: text/plain; charset="us-ascii" | |
446 | MIME-Version: 1.0 |
|
447 | MIME-Version: 1.0 | |
447 | Content-Transfer-Encoding: quoted-printable |
|
448 | Content-Transfer-Encoding: quoted-printable | |
448 | Subject: [PATCH] long line |
|
449 | Subject: [PATCH] long line | |
449 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
450 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
450 | X-Mercurial-Series-Index: 1 |
|
451 | X-Mercurial-Series-Index: 1 | |
451 | X-Mercurial-Series-Total: 1 |
|
452 | X-Mercurial-Series-Total: 1 | |
452 | Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) |
|
453 | Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) | |
453 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) |
|
454 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob) | |
454 | User-Agent: Mercurial-patchbomb/* (glob) |
|
455 | User-Agent: Mercurial-patchbomb/* (glob) | |
455 | Date: Thu, 01 Jan 1970 00:04:00 +0000 |
|
456 | Date: Thu, 01 Jan 1970 00:04:00 +0000 | |
456 | From: quux |
|
457 | From: quux | |
457 | To: foo |
|
458 | To: foo | |
458 | Cc: bar |
|
459 | Cc: bar | |
459 |
|
460 | |||
460 | # HG changeset patch |
|
461 | # HG changeset patch | |
461 | # User test |
|
462 | # User test | |
462 | # Date 4 0 |
|
463 | # Date 4 0 | |
463 | # Thu Jan 01 00:00:04 1970 +0000 |
|
464 | # Thu Jan 01 00:00:04 1970 +0000 | |
464 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
465 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
465 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
466 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
466 | long line |
|
467 | long line | |
467 |
|
468 | |||
468 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
469 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
469 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
470 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
470 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
471 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
471 | @@ -0,0 +1,4 @@ |
|
472 | @@ -0,0 +1,4 @@ | |
472 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
473 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
473 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
474 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
474 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
475 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
475 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
476 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
476 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
477 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
477 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
478 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
478 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
479 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
479 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
480 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
480 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
481 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
481 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
482 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
482 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
483 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
483 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
484 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
484 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
485 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
485 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
486 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
486 | +foo |
|
487 | +foo | |
487 | + |
|
488 | + | |
488 | +bar |
|
489 | +bar | |
489 |
|
490 | |||
490 |
|
491 | |||
491 |
|
492 | |||
492 | $ rm mbox |
|
493 | $ rm mbox | |
493 |
|
494 | |||
494 | iso-8859-1 patch: |
|
495 | iso-8859-1 patch: | |
495 | $ python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();' |
|
496 | $ python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();' | |
496 | $ hg commit -A -d '5 0' -m 'isolatin 8-bit encoding' |
|
497 | $ hg commit -A -d '5 0' -m 'isolatin 8-bit encoding' | |
497 | adding isolatin |
|
498 | adding isolatin | |
498 |
|
499 | |||
499 | fake ascii mbox: |
|
500 | fake ascii mbox: | |
500 | $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox |
|
501 | $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox | |
501 | this patch series consists of 1 patches. |
|
502 | this patch series consists of 1 patches. | |
502 |
|
503 | |||
503 |
|
504 | |||
504 | sending [PATCH] isolatin 8-bit encoding ... |
|
505 | sending [PATCH] isolatin 8-bit encoding ... | |
505 | $ cat mbox |
|
506 | $ cat mbox | |
506 | From quux ... ... .. ..:..:.. .... (re) |
|
507 | From quux ... ... .. ..:..:.. .... (re) | |
507 | Content-Type: text/plain; charset="us-ascii" |
|
508 | Content-Type: text/plain; charset="us-ascii" | |
508 | MIME-Version: 1.0 |
|
509 | MIME-Version: 1.0 | |
509 | Content-Transfer-Encoding: 8bit |
|
510 | Content-Transfer-Encoding: 8bit | |
510 | Subject: [PATCH] isolatin 8-bit encoding |
|
511 | Subject: [PATCH] isolatin 8-bit encoding | |
511 | X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 |
|
512 | X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 | |
512 | X-Mercurial-Series-Index: 1 |
|
513 | X-Mercurial-Series-Index: 1 | |
513 | X-Mercurial-Series-Total: 1 |
|
514 | X-Mercurial-Series-Total: 1 | |
514 | Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob) |
|
515 | Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob) | |
515 | X-Mercurial-Series-Id: <240fb913fc1b7ff15ddb.300@*> (glob) |
|
516 | X-Mercurial-Series-Id: <240fb913fc1b7ff15ddb.300@*> (glob) | |
516 | User-Agent: Mercurial-patchbomb/* (glob) |
|
517 | User-Agent: Mercurial-patchbomb/* (glob) | |
517 | Date: Thu, 01 Jan 1970 00:05:00 +0000 |
|
518 | Date: Thu, 01 Jan 1970 00:05:00 +0000 | |
518 | From: quux |
|
519 | From: quux | |
519 | To: foo |
|
520 | To: foo | |
520 | Cc: bar |
|
521 | Cc: bar | |
521 |
|
522 | |||
522 | # HG changeset patch |
|
523 | # HG changeset patch | |
523 | # User test |
|
524 | # User test | |
524 | # Date 5 0 |
|
525 | # Date 5 0 | |
525 | # Thu Jan 01 00:00:05 1970 +0000 |
|
526 | # Thu Jan 01 00:00:05 1970 +0000 | |
526 | # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 |
|
527 | # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 | |
527 | # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
528 | # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
528 | isolatin 8-bit encoding |
|
529 | isolatin 8-bit encoding | |
529 |
|
530 | |||
530 | diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin |
|
531 | diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin | |
531 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
532 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
532 | +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000 |
|
533 | +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000 | |
533 | @@ -0,0 +1,1 @@ |
|
534 | @@ -0,0 +1,1 @@ | |
534 | +h\xf6mma! (esc) |
|
535 | +h\xf6mma! (esc) | |
535 |
|
536 | |||
536 |
|
537 | |||
537 |
|
538 | |||
538 | test diffstat for single patch: |
|
539 | test diffstat for single patch: | |
539 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 |
|
540 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | |
540 | this patch series consists of 1 patches. |
|
541 | this patch series consists of 1 patches. | |
541 |
|
542 | |||
542 |
|
543 | |||
543 | Final summary: |
|
544 | Final summary: | |
544 |
|
545 | |||
545 | From: quux |
|
546 | From: quux | |
546 | To: foo |
|
547 | To: foo | |
547 | Cc: bar |
|
548 | Cc: bar | |
548 | Subject: [PATCH] test |
|
549 | Subject: [PATCH] test | |
549 | c | 1 + |
|
550 | c | 1 + | |
550 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
551 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
551 |
|
552 | |||
552 | are you sure you want to send (yn)? y |
|
553 | are you sure you want to send (yn)? y | |
553 |
|
554 | |||
554 | displaying [PATCH] test ... |
|
555 | displaying [PATCH] test ... | |
555 | Content-Type: text/plain; charset="us-ascii" |
|
556 | Content-Type: text/plain; charset="us-ascii" | |
556 | MIME-Version: 1.0 |
|
557 | MIME-Version: 1.0 | |
557 | Content-Transfer-Encoding: 7bit |
|
558 | Content-Transfer-Encoding: 7bit | |
558 | Subject: [PATCH] test |
|
559 | Subject: [PATCH] test | |
559 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
560 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
560 | X-Mercurial-Series-Index: 1 |
|
561 | X-Mercurial-Series-Index: 1 | |
561 | X-Mercurial-Series-Total: 1 |
|
562 | X-Mercurial-Series-Total: 1 | |
562 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
563 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
563 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
564 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
564 | User-Agent: Mercurial-patchbomb/* (glob) |
|
565 | User-Agent: Mercurial-patchbomb/* (glob) | |
565 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
566 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
566 | From: quux |
|
567 | From: quux | |
567 | To: foo |
|
568 | To: foo | |
568 | Cc: bar |
|
569 | Cc: bar | |
569 |
|
570 | |||
570 | c | 1 + |
|
571 | c | 1 + | |
571 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
572 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
572 |
|
573 | |||
573 |
|
574 | |||
574 | # HG changeset patch |
|
575 | # HG changeset patch | |
575 | # User test |
|
576 | # User test | |
576 | # Date 3 0 |
|
577 | # Date 3 0 | |
577 | # Thu Jan 01 00:00:03 1970 +0000 |
|
578 | # Thu Jan 01 00:00:03 1970 +0000 | |
578 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
579 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
579 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
580 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
580 | c |
|
581 | c | |
581 |
|
582 | |||
582 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
583 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
583 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
584 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
584 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
585 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
585 | @@ -0,0 +1,1 @@ |
|
586 | @@ -0,0 +1,1 @@ | |
586 | +c |
|
587 | +c | |
587 |
|
588 | |||
588 |
|
589 | |||
589 | test diffstat for multiple patches: |
|
590 | test diffstat for multiple patches: | |
590 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \ |
|
591 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \ | |
591 | > -r 0:1 |
|
592 | > -r 0:1 | |
592 | this patch series consists of 2 patches. |
|
593 | this patch series consists of 2 patches. | |
593 |
|
594 | |||
594 |
|
595 | |||
595 | Write the introductory message for the patch series. |
|
596 | Write the introductory message for the patch series. | |
596 |
|
597 | |||
597 |
|
598 | |||
598 | Final summary: |
|
599 | Final summary: | |
599 |
|
600 | |||
600 | From: quux |
|
601 | From: quux | |
601 | To: foo |
|
602 | To: foo | |
602 | Cc: bar |
|
603 | Cc: bar | |
603 | Subject: [PATCH 0 of 2] test |
|
604 | Subject: [PATCH 0 of 2] test | |
604 | a | 1 + |
|
605 | a | 1 + | |
605 | b | 1 + |
|
606 | b | 1 + | |
606 | 2 files changed, 2 insertions(+), 0 deletions(-) |
|
607 | 2 files changed, 2 insertions(+), 0 deletions(-) | |
607 | Subject: [PATCH 1 of 2] a |
|
608 | Subject: [PATCH 1 of 2] a | |
608 | a | 1 + |
|
609 | a | 1 + | |
609 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
610 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
610 | Subject: [PATCH 2 of 2] b |
|
611 | Subject: [PATCH 2 of 2] b | |
611 | b | 1 + |
|
612 | b | 1 + | |
612 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
613 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
613 |
|
614 | |||
614 | are you sure you want to send (yn)? y |
|
615 | are you sure you want to send (yn)? y | |
615 |
|
616 | |||
616 | displaying [PATCH 0 of 2] test ... |
|
617 | displaying [PATCH 0 of 2] test ... | |
617 | Content-Type: text/plain; charset="us-ascii" |
|
618 | Content-Type: text/plain; charset="us-ascii" | |
618 | MIME-Version: 1.0 |
|
619 | MIME-Version: 1.0 | |
619 | Content-Transfer-Encoding: 7bit |
|
620 | Content-Transfer-Encoding: 7bit | |
620 | Subject: [PATCH 0 of 2] test |
|
621 | Subject: [PATCH 0 of 2] test | |
621 | Message-Id: <patchbomb.60@*> (glob) |
|
622 | Message-Id: <patchbomb.60@*> (glob) | |
622 | User-Agent: Mercurial-patchbomb/* (glob) |
|
623 | User-Agent: Mercurial-patchbomb/* (glob) | |
623 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
624 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
624 | From: quux |
|
625 | From: quux | |
625 | To: foo |
|
626 | To: foo | |
626 | Cc: bar |
|
627 | Cc: bar | |
627 |
|
628 | |||
628 |
|
629 | |||
629 | a | 1 + |
|
630 | a | 1 + | |
630 | b | 1 + |
|
631 | b | 1 + | |
631 | 2 files changed, 2 insertions(+), 0 deletions(-) |
|
632 | 2 files changed, 2 insertions(+), 0 deletions(-) | |
632 |
|
633 | |||
633 | displaying [PATCH 1 of 2] a ... |
|
634 | displaying [PATCH 1 of 2] a ... | |
634 | Content-Type: text/plain; charset="us-ascii" |
|
635 | Content-Type: text/plain; charset="us-ascii" | |
635 | MIME-Version: 1.0 |
|
636 | MIME-Version: 1.0 | |
636 | Content-Transfer-Encoding: 7bit |
|
637 | Content-Transfer-Encoding: 7bit | |
637 | Subject: [PATCH 1 of 2] a |
|
638 | Subject: [PATCH 1 of 2] a | |
638 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
639 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
639 | X-Mercurial-Series-Index: 1 |
|
640 | X-Mercurial-Series-Index: 1 | |
640 | X-Mercurial-Series-Total: 2 |
|
641 | X-Mercurial-Series-Total: 2 | |
641 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
642 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
642 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
643 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
643 | In-Reply-To: <patchbomb.60@*> (glob) |
|
644 | In-Reply-To: <patchbomb.60@*> (glob) | |
644 | References: <patchbomb.60@*> (glob) |
|
645 | References: <patchbomb.60@*> (glob) | |
645 | User-Agent: Mercurial-patchbomb/* (glob) |
|
646 | User-Agent: Mercurial-patchbomb/* (glob) | |
646 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
647 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
647 | From: quux |
|
648 | From: quux | |
648 | To: foo |
|
649 | To: foo | |
649 | Cc: bar |
|
650 | Cc: bar | |
650 |
|
651 | |||
651 | a | 1 + |
|
652 | a | 1 + | |
652 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
653 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
653 |
|
654 | |||
654 |
|
655 | |||
655 | # HG changeset patch |
|
656 | # HG changeset patch | |
656 | # User test |
|
657 | # User test | |
657 | # Date 1 0 |
|
658 | # Date 1 0 | |
658 | # Thu Jan 01 00:00:01 1970 +0000 |
|
659 | # Thu Jan 01 00:00:01 1970 +0000 | |
659 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
660 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
660 | # Parent 0000000000000000000000000000000000000000 |
|
661 | # Parent 0000000000000000000000000000000000000000 | |
661 | a |
|
662 | a | |
662 |
|
663 | |||
663 | diff -r 000000000000 -r 8580ff50825a a |
|
664 | diff -r 000000000000 -r 8580ff50825a a | |
664 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
665 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
665 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
666 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
666 | @@ -0,0 +1,1 @@ |
|
667 | @@ -0,0 +1,1 @@ | |
667 | +a |
|
668 | +a | |
668 |
|
669 | |||
669 | displaying [PATCH 2 of 2] b ... |
|
670 | displaying [PATCH 2 of 2] b ... | |
670 | Content-Type: text/plain; charset="us-ascii" |
|
671 | Content-Type: text/plain; charset="us-ascii" | |
671 | MIME-Version: 1.0 |
|
672 | MIME-Version: 1.0 | |
672 | Content-Transfer-Encoding: 7bit |
|
673 | Content-Transfer-Encoding: 7bit | |
673 | Subject: [PATCH 2 of 2] b |
|
674 | Subject: [PATCH 2 of 2] b | |
674 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
675 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
675 | X-Mercurial-Series-Index: 2 |
|
676 | X-Mercurial-Series-Index: 2 | |
676 | X-Mercurial-Series-Total: 2 |
|
677 | X-Mercurial-Series-Total: 2 | |
677 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
678 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
678 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
679 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
679 | In-Reply-To: <patchbomb.60@*> (glob) |
|
680 | In-Reply-To: <patchbomb.60@*> (glob) | |
680 | References: <patchbomb.60@*> (glob) |
|
681 | References: <patchbomb.60@*> (glob) | |
681 | User-Agent: Mercurial-patchbomb/* (glob) |
|
682 | User-Agent: Mercurial-patchbomb/* (glob) | |
682 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
683 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
683 | From: quux |
|
684 | From: quux | |
684 | To: foo |
|
685 | To: foo | |
685 | Cc: bar |
|
686 | Cc: bar | |
686 |
|
687 | |||
687 | b | 1 + |
|
688 | b | 1 + | |
688 | 1 files changed, 1 insertions(+), 0 deletions(-) |
|
689 | 1 files changed, 1 insertions(+), 0 deletions(-) | |
689 |
|
690 | |||
690 |
|
691 | |||
691 | # HG changeset patch |
|
692 | # HG changeset patch | |
692 | # User test |
|
693 | # User test | |
693 | # Date 2 0 |
|
694 | # Date 2 0 | |
694 | # Thu Jan 01 00:00:02 1970 +0000 |
|
695 | # Thu Jan 01 00:00:02 1970 +0000 | |
695 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
696 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
696 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
697 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
697 | b |
|
698 | b | |
698 |
|
699 | |||
699 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
700 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
700 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
701 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
701 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
702 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
702 | @@ -0,0 +1,1 @@ |
|
703 | @@ -0,0 +1,1 @@ | |
703 | +b |
|
704 | +b | |
704 |
|
705 | |||
705 |
|
706 | |||
706 | test inline for single patch: |
|
707 | test inline for single patch: | |
707 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | $FILTERBOUNDARY |
|
708 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | $FILTERBOUNDARY | |
708 | this patch series consists of 1 patches. |
|
709 | this patch series consists of 1 patches. | |
709 |
|
710 | |||
710 |
|
711 | |||
711 | displaying [PATCH] test ... |
|
712 | displaying [PATCH] test ... | |
712 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
713 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
713 | MIME-Version: 1.0 |
|
714 | MIME-Version: 1.0 | |
714 | Subject: [PATCH] test |
|
715 | Subject: [PATCH] test | |
715 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
716 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
716 | X-Mercurial-Series-Index: 1 |
|
717 | X-Mercurial-Series-Index: 1 | |
717 | X-Mercurial-Series-Total: 1 |
|
718 | X-Mercurial-Series-Total: 1 | |
718 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
719 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
719 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
720 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
720 | User-Agent: Mercurial-patchbomb/* (glob) |
|
721 | User-Agent: Mercurial-patchbomb/* (glob) | |
721 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
722 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
722 | From: quux |
|
723 | From: quux | |
723 | To: foo |
|
724 | To: foo | |
724 | Cc: bar |
|
725 | Cc: bar | |
725 |
|
726 | |||
726 | --===*= (glob) |
|
727 | --===*= (glob) | |
727 | Content-Type: text/x-patch; charset="us-ascii" |
|
728 | Content-Type: text/x-patch; charset="us-ascii" | |
728 | MIME-Version: 1.0 |
|
729 | MIME-Version: 1.0 | |
729 | Content-Transfer-Encoding: 7bit |
|
730 | Content-Transfer-Encoding: 7bit | |
730 | Content-Disposition: inline; filename=t2.patch |
|
731 | Content-Disposition: inline; filename=t2.patch | |
731 |
|
732 | |||
732 | # HG changeset patch |
|
733 | # HG changeset patch | |
733 | # User test |
|
734 | # User test | |
734 | # Date 3 0 |
|
735 | # Date 3 0 | |
735 | # Thu Jan 01 00:00:03 1970 +0000 |
|
736 | # Thu Jan 01 00:00:03 1970 +0000 | |
736 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
737 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
737 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
738 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
738 | c |
|
739 | c | |
739 |
|
740 | |||
740 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
741 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
741 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
742 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
742 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
743 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
743 | @@ -0,0 +1,1 @@ |
|
744 | @@ -0,0 +1,1 @@ | |
744 | +c |
|
745 | +c | |
745 |
|
746 | |||
746 | --===*=-- (glob) |
|
747 | --===*=-- (glob) | |
747 |
|
748 | |||
748 |
|
749 | |||
749 | test inline for single patch (quoted-printable): |
|
750 | test inline for single patch (quoted-printable): | |
750 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | $FILTERBOUNDARY |
|
751 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | $FILTERBOUNDARY | |
751 | this patch series consists of 1 patches. |
|
752 | this patch series consists of 1 patches. | |
752 |
|
753 | |||
753 |
|
754 | |||
754 | displaying [PATCH] test ... |
|
755 | displaying [PATCH] test ... | |
755 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
756 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
756 | MIME-Version: 1.0 |
|
757 | MIME-Version: 1.0 | |
757 | Subject: [PATCH] test |
|
758 | Subject: [PATCH] test | |
758 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
759 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
759 | X-Mercurial-Series-Index: 1 |
|
760 | X-Mercurial-Series-Index: 1 | |
760 | X-Mercurial-Series-Total: 1 |
|
761 | X-Mercurial-Series-Total: 1 | |
761 | Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) |
|
762 | Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) | |
762 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) |
|
763 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) | |
763 | User-Agent: Mercurial-patchbomb/* (glob) |
|
764 | User-Agent: Mercurial-patchbomb/* (glob) | |
764 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
765 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
765 | From: quux |
|
766 | From: quux | |
766 | To: foo |
|
767 | To: foo | |
767 | Cc: bar |
|
768 | Cc: bar | |
768 |
|
769 | |||
769 | --===*= (glob) |
|
770 | --===*= (glob) | |
770 | Content-Type: text/x-patch; charset="us-ascii" |
|
771 | Content-Type: text/x-patch; charset="us-ascii" | |
771 | MIME-Version: 1.0 |
|
772 | MIME-Version: 1.0 | |
772 | Content-Transfer-Encoding: quoted-printable |
|
773 | Content-Transfer-Encoding: quoted-printable | |
773 | Content-Disposition: inline; filename=t2.patch |
|
774 | Content-Disposition: inline; filename=t2.patch | |
774 |
|
775 | |||
775 | # HG changeset patch |
|
776 | # HG changeset patch | |
776 | # User test |
|
777 | # User test | |
777 | # Date 4 0 |
|
778 | # Date 4 0 | |
778 | # Thu Jan 01 00:00:04 1970 +0000 |
|
779 | # Thu Jan 01 00:00:04 1970 +0000 | |
779 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
780 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
780 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
781 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
781 | long line |
|
782 | long line | |
782 |
|
783 | |||
783 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
784 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
784 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
785 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
785 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
786 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
786 | @@ -0,0 +1,4 @@ |
|
787 | @@ -0,0 +1,4 @@ | |
787 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
788 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
788 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
789 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
789 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
790 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
790 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
791 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
791 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
792 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
792 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
793 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
793 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
794 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
794 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
795 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
795 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
796 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
796 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
797 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
797 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
798 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
798 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
799 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
799 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
800 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
800 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
801 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
801 | +foo |
|
802 | +foo | |
802 | + |
|
803 | + | |
803 | +bar |
|
804 | +bar | |
804 |
|
805 | |||
805 | --===*=-- (glob) |
|
806 | --===*=-- (glob) | |
806 |
|
807 | |||
807 | test inline for multiple patches: |
|
808 | test inline for multiple patches: | |
808 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \ |
|
809 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \ | |
809 | > -r 0:1 -r 4 | $FILTERBOUNDARY |
|
810 | > -r 0:1 -r 4 | $FILTERBOUNDARY | |
810 | this patch series consists of 3 patches. |
|
811 | this patch series consists of 3 patches. | |
811 |
|
812 | |||
812 |
|
813 | |||
813 | Write the introductory message for the patch series. |
|
814 | Write the introductory message for the patch series. | |
814 |
|
815 | |||
815 |
|
816 | |||
816 | displaying [PATCH 0 of 3] test ... |
|
817 | displaying [PATCH 0 of 3] test ... | |
817 | Content-Type: text/plain; charset="us-ascii" |
|
818 | Content-Type: text/plain; charset="us-ascii" | |
818 | MIME-Version: 1.0 |
|
819 | MIME-Version: 1.0 | |
819 | Content-Transfer-Encoding: 7bit |
|
820 | Content-Transfer-Encoding: 7bit | |
820 | Subject: [PATCH 0 of 3] test |
|
821 | Subject: [PATCH 0 of 3] test | |
821 | Message-Id: <patchbomb.60@*> (glob) |
|
822 | Message-Id: <patchbomb.60@*> (glob) | |
822 | User-Agent: Mercurial-patchbomb/* (glob) |
|
823 | User-Agent: Mercurial-patchbomb/* (glob) | |
823 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
824 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
824 | From: quux |
|
825 | From: quux | |
825 | To: foo |
|
826 | To: foo | |
826 | Cc: bar |
|
827 | Cc: bar | |
827 |
|
828 | |||
828 |
|
829 | |||
829 | displaying [PATCH 1 of 3] a ... |
|
830 | displaying [PATCH 1 of 3] a ... | |
830 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
831 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
831 | MIME-Version: 1.0 |
|
832 | MIME-Version: 1.0 | |
832 | Subject: [PATCH 1 of 3] a |
|
833 | Subject: [PATCH 1 of 3] a | |
833 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
834 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
834 | X-Mercurial-Series-Index: 1 |
|
835 | X-Mercurial-Series-Index: 1 | |
835 | X-Mercurial-Series-Total: 3 |
|
836 | X-Mercurial-Series-Total: 3 | |
836 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
837 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
837 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
838 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
838 | In-Reply-To: <patchbomb.60@*> (glob) |
|
839 | In-Reply-To: <patchbomb.60@*> (glob) | |
839 | References: <patchbomb.60@*> (glob) |
|
840 | References: <patchbomb.60@*> (glob) | |
840 | User-Agent: Mercurial-patchbomb/* (glob) |
|
841 | User-Agent: Mercurial-patchbomb/* (glob) | |
841 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
842 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
842 | From: quux |
|
843 | From: quux | |
843 | To: foo |
|
844 | To: foo | |
844 | Cc: bar |
|
845 | Cc: bar | |
845 |
|
846 | |||
846 | --===*= (glob) |
|
847 | --===*= (glob) | |
847 | Content-Type: text/x-patch; charset="us-ascii" |
|
848 | Content-Type: text/x-patch; charset="us-ascii" | |
848 | MIME-Version: 1.0 |
|
849 | MIME-Version: 1.0 | |
849 | Content-Transfer-Encoding: 7bit |
|
850 | Content-Transfer-Encoding: 7bit | |
850 | Content-Disposition: inline; filename=t2-1.patch |
|
851 | Content-Disposition: inline; filename=t2-1.patch | |
851 |
|
852 | |||
852 | # HG changeset patch |
|
853 | # HG changeset patch | |
853 | # User test |
|
854 | # User test | |
854 | # Date 1 0 |
|
855 | # Date 1 0 | |
855 | # Thu Jan 01 00:00:01 1970 +0000 |
|
856 | # Thu Jan 01 00:00:01 1970 +0000 | |
856 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
857 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
857 | # Parent 0000000000000000000000000000000000000000 |
|
858 | # Parent 0000000000000000000000000000000000000000 | |
858 | a |
|
859 | a | |
859 |
|
860 | |||
860 | diff -r 000000000000 -r 8580ff50825a a |
|
861 | diff -r 000000000000 -r 8580ff50825a a | |
861 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
862 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
862 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
863 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
863 | @@ -0,0 +1,1 @@ |
|
864 | @@ -0,0 +1,1 @@ | |
864 | +a |
|
865 | +a | |
865 |
|
866 | |||
866 | --===*=-- (glob) |
|
867 | --===*=-- (glob) | |
867 | displaying [PATCH 2 of 3] b ... |
|
868 | displaying [PATCH 2 of 3] b ... | |
868 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
869 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
869 | MIME-Version: 1.0 |
|
870 | MIME-Version: 1.0 | |
870 | Subject: [PATCH 2 of 3] b |
|
871 | Subject: [PATCH 2 of 3] b | |
871 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
872 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
872 | X-Mercurial-Series-Index: 2 |
|
873 | X-Mercurial-Series-Index: 2 | |
873 | X-Mercurial-Series-Total: 3 |
|
874 | X-Mercurial-Series-Total: 3 | |
874 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
875 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
875 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
876 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
876 | In-Reply-To: <patchbomb.60@*> (glob) |
|
877 | In-Reply-To: <patchbomb.60@*> (glob) | |
877 | References: <patchbomb.60@*> (glob) |
|
878 | References: <patchbomb.60@*> (glob) | |
878 | User-Agent: Mercurial-patchbomb/* (glob) |
|
879 | User-Agent: Mercurial-patchbomb/* (glob) | |
879 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
880 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
880 | From: quux |
|
881 | From: quux | |
881 | To: foo |
|
882 | To: foo | |
882 | Cc: bar |
|
883 | Cc: bar | |
883 |
|
884 | |||
884 | --===*= (glob) |
|
885 | --===*= (glob) | |
885 | Content-Type: text/x-patch; charset="us-ascii" |
|
886 | Content-Type: text/x-patch; charset="us-ascii" | |
886 | MIME-Version: 1.0 |
|
887 | MIME-Version: 1.0 | |
887 | Content-Transfer-Encoding: 7bit |
|
888 | Content-Transfer-Encoding: 7bit | |
888 | Content-Disposition: inline; filename=t2-2.patch |
|
889 | Content-Disposition: inline; filename=t2-2.patch | |
889 |
|
890 | |||
890 | # HG changeset patch |
|
891 | # HG changeset patch | |
891 | # User test |
|
892 | # User test | |
892 | # Date 2 0 |
|
893 | # Date 2 0 | |
893 | # Thu Jan 01 00:00:02 1970 +0000 |
|
894 | # Thu Jan 01 00:00:02 1970 +0000 | |
894 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
895 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
895 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
896 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
896 | b |
|
897 | b | |
897 |
|
898 | |||
898 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
899 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
899 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
900 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
900 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
901 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
901 | @@ -0,0 +1,1 @@ |
|
902 | @@ -0,0 +1,1 @@ | |
902 | +b |
|
903 | +b | |
903 |
|
904 | |||
904 | --===*=-- (glob) |
|
905 | --===*=-- (glob) | |
905 | displaying [PATCH 3 of 3] long line ... |
|
906 | displaying [PATCH 3 of 3] long line ... | |
906 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
907 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
907 | MIME-Version: 1.0 |
|
908 | MIME-Version: 1.0 | |
908 | Subject: [PATCH 3 of 3] long line |
|
909 | Subject: [PATCH 3 of 3] long line | |
909 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
910 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
910 | X-Mercurial-Series-Index: 3 |
|
911 | X-Mercurial-Series-Index: 3 | |
911 | X-Mercurial-Series-Total: 3 |
|
912 | X-Mercurial-Series-Total: 3 | |
912 | Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob) |
|
913 | Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob) | |
913 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
914 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
914 | In-Reply-To: <patchbomb.60@*> (glob) |
|
915 | In-Reply-To: <patchbomb.60@*> (glob) | |
915 | References: <patchbomb.60@*> (glob) |
|
916 | References: <patchbomb.60@*> (glob) | |
916 | User-Agent: Mercurial-patchbomb/* (glob) |
|
917 | User-Agent: Mercurial-patchbomb/* (glob) | |
917 | Date: Thu, 01 Jan 1970 00:01:03 +0000 |
|
918 | Date: Thu, 01 Jan 1970 00:01:03 +0000 | |
918 | From: quux |
|
919 | From: quux | |
919 | To: foo |
|
920 | To: foo | |
920 | Cc: bar |
|
921 | Cc: bar | |
921 |
|
922 | |||
922 | --===*= (glob) |
|
923 | --===*= (glob) | |
923 | Content-Type: text/x-patch; charset="us-ascii" |
|
924 | Content-Type: text/x-patch; charset="us-ascii" | |
924 | MIME-Version: 1.0 |
|
925 | MIME-Version: 1.0 | |
925 | Content-Transfer-Encoding: quoted-printable |
|
926 | Content-Transfer-Encoding: quoted-printable | |
926 | Content-Disposition: inline; filename=t2-3.patch |
|
927 | Content-Disposition: inline; filename=t2-3.patch | |
927 |
|
928 | |||
928 | # HG changeset patch |
|
929 | # HG changeset patch | |
929 | # User test |
|
930 | # User test | |
930 | # Date 4 0 |
|
931 | # Date 4 0 | |
931 | # Thu Jan 01 00:00:04 1970 +0000 |
|
932 | # Thu Jan 01 00:00:04 1970 +0000 | |
932 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
933 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
933 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
934 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
934 | long line |
|
935 | long line | |
935 |
|
936 | |||
936 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
937 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
937 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
938 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
938 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
939 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
939 | @@ -0,0 +1,4 @@ |
|
940 | @@ -0,0 +1,4 @@ | |
940 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
941 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
941 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
942 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
942 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
943 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
943 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
944 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
944 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
945 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
945 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
946 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
946 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
947 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
947 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
948 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
948 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
949 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
949 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
950 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
950 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
951 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
951 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
952 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
952 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
953 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
953 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
954 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
954 | +foo |
|
955 | +foo | |
955 | + |
|
956 | + | |
956 | +bar |
|
957 | +bar | |
957 |
|
958 | |||
958 | --===*=-- (glob) |
|
959 | --===*=-- (glob) | |
959 |
|
960 | |||
960 | test attach for single patch: |
|
961 | test attach for single patch: | |
961 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | $FILTERBOUNDARY |
|
962 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | $FILTERBOUNDARY | |
962 | this patch series consists of 1 patches. |
|
963 | this patch series consists of 1 patches. | |
963 |
|
964 | |||
964 |
|
965 | |||
965 | displaying [PATCH] test ... |
|
966 | displaying [PATCH] test ... | |
966 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
967 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
967 | MIME-Version: 1.0 |
|
968 | MIME-Version: 1.0 | |
968 | Subject: [PATCH] test |
|
969 | Subject: [PATCH] test | |
969 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
970 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
970 | X-Mercurial-Series-Index: 1 |
|
971 | X-Mercurial-Series-Index: 1 | |
971 | X-Mercurial-Series-Total: 1 |
|
972 | X-Mercurial-Series-Total: 1 | |
972 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
973 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
973 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
974 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
974 | User-Agent: Mercurial-patchbomb/* (glob) |
|
975 | User-Agent: Mercurial-patchbomb/* (glob) | |
975 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
976 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
976 | From: quux |
|
977 | From: quux | |
977 | To: foo |
|
978 | To: foo | |
978 | Cc: bar |
|
979 | Cc: bar | |
979 |
|
980 | |||
980 | --===*= (glob) |
|
981 | --===*= (glob) | |
981 | Content-Type: text/plain; charset="us-ascii" |
|
982 | Content-Type: text/plain; charset="us-ascii" | |
982 | MIME-Version: 1.0 |
|
983 | MIME-Version: 1.0 | |
983 | Content-Transfer-Encoding: 7bit |
|
984 | Content-Transfer-Encoding: 7bit | |
984 |
|
985 | |||
985 | Patch subject is complete summary. |
|
986 | Patch subject is complete summary. | |
986 |
|
987 | |||
987 |
|
988 | |||
988 |
|
989 | |||
989 | --===*= (glob) |
|
990 | --===*= (glob) | |
990 | Content-Type: text/x-patch; charset="us-ascii" |
|
991 | Content-Type: text/x-patch; charset="us-ascii" | |
991 | MIME-Version: 1.0 |
|
992 | MIME-Version: 1.0 | |
992 | Content-Transfer-Encoding: 7bit |
|
993 | Content-Transfer-Encoding: 7bit | |
993 | Content-Disposition: attachment; filename=t2.patch |
|
994 | Content-Disposition: attachment; filename=t2.patch | |
994 |
|
995 | |||
995 | # HG changeset patch |
|
996 | # HG changeset patch | |
996 | # User test |
|
997 | # User test | |
997 | # Date 3 0 |
|
998 | # Date 3 0 | |
998 | # Thu Jan 01 00:00:03 1970 +0000 |
|
999 | # Thu Jan 01 00:00:03 1970 +0000 | |
999 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1000 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1000 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1001 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1001 | c |
|
1002 | c | |
1002 |
|
1003 | |||
1003 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1004 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1004 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1005 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1005 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1006 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1006 | @@ -0,0 +1,1 @@ |
|
1007 | @@ -0,0 +1,1 @@ | |
1007 | +c |
|
1008 | +c | |
1008 |
|
1009 | |||
1009 | --===*=-- (glob) |
|
1010 | --===*=-- (glob) | |
1010 |
|
1011 | |||
1011 | test attach for single patch (quoted-printable): |
|
1012 | test attach for single patch (quoted-printable): | |
1012 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | $FILTERBOUNDARY |
|
1013 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | $FILTERBOUNDARY | |
1013 | this patch series consists of 1 patches. |
|
1014 | this patch series consists of 1 patches. | |
1014 |
|
1015 | |||
1015 |
|
1016 | |||
1016 | displaying [PATCH] test ... |
|
1017 | displaying [PATCH] test ... | |
1017 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1018 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1018 | MIME-Version: 1.0 |
|
1019 | MIME-Version: 1.0 | |
1019 | Subject: [PATCH] test |
|
1020 | Subject: [PATCH] test | |
1020 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
1021 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
1021 | X-Mercurial-Series-Index: 1 |
|
1022 | X-Mercurial-Series-Index: 1 | |
1022 | X-Mercurial-Series-Total: 1 |
|
1023 | X-Mercurial-Series-Total: 1 | |
1023 | Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) |
|
1024 | Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) | |
1024 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) |
|
1025 | X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob) | |
1025 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1026 | User-Agent: Mercurial-patchbomb/* (glob) | |
1026 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1027 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1027 | From: quux |
|
1028 | From: quux | |
1028 | To: foo |
|
1029 | To: foo | |
1029 | Cc: bar |
|
1030 | Cc: bar | |
1030 |
|
1031 | |||
1031 | --===*= (glob) |
|
1032 | --===*= (glob) | |
1032 | Content-Type: text/plain; charset="us-ascii" |
|
1033 | Content-Type: text/plain; charset="us-ascii" | |
1033 | MIME-Version: 1.0 |
|
1034 | MIME-Version: 1.0 | |
1034 | Content-Transfer-Encoding: 7bit |
|
1035 | Content-Transfer-Encoding: 7bit | |
1035 |
|
1036 | |||
1036 | Patch subject is complete summary. |
|
1037 | Patch subject is complete summary. | |
1037 |
|
1038 | |||
1038 |
|
1039 | |||
1039 |
|
1040 | |||
1040 | --===*= (glob) |
|
1041 | --===*= (glob) | |
1041 | Content-Type: text/x-patch; charset="us-ascii" |
|
1042 | Content-Type: text/x-patch; charset="us-ascii" | |
1042 | MIME-Version: 1.0 |
|
1043 | MIME-Version: 1.0 | |
1043 | Content-Transfer-Encoding: quoted-printable |
|
1044 | Content-Transfer-Encoding: quoted-printable | |
1044 | Content-Disposition: attachment; filename=t2.patch |
|
1045 | Content-Disposition: attachment; filename=t2.patch | |
1045 |
|
1046 | |||
1046 | # HG changeset patch |
|
1047 | # HG changeset patch | |
1047 | # User test |
|
1048 | # User test | |
1048 | # Date 4 0 |
|
1049 | # Date 4 0 | |
1049 | # Thu Jan 01 00:00:04 1970 +0000 |
|
1050 | # Thu Jan 01 00:00:04 1970 +0000 | |
1050 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
1051 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
1051 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
1052 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
1052 | long line |
|
1053 | long line | |
1053 |
|
1054 | |||
1054 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
1055 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
1055 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1056 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1056 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
1057 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
1057 | @@ -0,0 +1,4 @@ |
|
1058 | @@ -0,0 +1,4 @@ | |
1058 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1059 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1059 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1060 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1060 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1061 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1061 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1062 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1062 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1063 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1063 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1064 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1064 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1065 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1065 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1066 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1066 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1067 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1067 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1068 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1068 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1069 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1069 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1070 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1070 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1071 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1071 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
1072 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
1072 | +foo |
|
1073 | +foo | |
1073 | + |
|
1074 | + | |
1074 | +bar |
|
1075 | +bar | |
1075 |
|
1076 | |||
1076 | --===*=-- (glob) |
|
1077 | --===*=-- (glob) | |
1077 |
|
1078 | |||
1078 | test attach and body for single patch: |
|
1079 | test attach and body for single patch: | |
1079 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a --body -r 2 | $FILTERBOUNDARY |
|
1080 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a --body -r 2 | $FILTERBOUNDARY | |
1080 | this patch series consists of 1 patches. |
|
1081 | this patch series consists of 1 patches. | |
1081 |
|
1082 | |||
1082 |
|
1083 | |||
1083 | displaying [PATCH] test ... |
|
1084 | displaying [PATCH] test ... | |
1084 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1085 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1085 | MIME-Version: 1.0 |
|
1086 | MIME-Version: 1.0 | |
1086 | Subject: [PATCH] test |
|
1087 | Subject: [PATCH] test | |
1087 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1088 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1088 | X-Mercurial-Series-Index: 1 |
|
1089 | X-Mercurial-Series-Index: 1 | |
1089 | X-Mercurial-Series-Total: 1 |
|
1090 | X-Mercurial-Series-Total: 1 | |
1090 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1091 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1091 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1092 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1092 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1093 | User-Agent: Mercurial-patchbomb/* (glob) | |
1093 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1094 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1094 | From: quux |
|
1095 | From: quux | |
1095 | To: foo |
|
1096 | To: foo | |
1096 | Cc: bar |
|
1097 | Cc: bar | |
1097 |
|
1098 | |||
1098 | --===*= (glob) |
|
1099 | --===*= (glob) | |
1099 | Content-Type: text/plain; charset="us-ascii" |
|
1100 | Content-Type: text/plain; charset="us-ascii" | |
1100 | MIME-Version: 1.0 |
|
1101 | MIME-Version: 1.0 | |
1101 | Content-Transfer-Encoding: 7bit |
|
1102 | Content-Transfer-Encoding: 7bit | |
1102 |
|
1103 | |||
1103 | # HG changeset patch |
|
1104 | # HG changeset patch | |
1104 | # User test |
|
1105 | # User test | |
1105 | # Date 3 0 |
|
1106 | # Date 3 0 | |
1106 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1107 | # Thu Jan 01 00:00:03 1970 +0000 | |
1107 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1108 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1108 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1109 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1109 | c |
|
1110 | c | |
1110 |
|
1111 | |||
1111 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1112 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1112 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1113 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1113 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1114 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1114 | @@ -0,0 +1,1 @@ |
|
1115 | @@ -0,0 +1,1 @@ | |
1115 | +c |
|
1116 | +c | |
1116 |
|
1117 | |||
1117 | --===*= (glob) |
|
1118 | --===*= (glob) | |
1118 | Content-Type: text/x-patch; charset="us-ascii" |
|
1119 | Content-Type: text/x-patch; charset="us-ascii" | |
1119 | MIME-Version: 1.0 |
|
1120 | MIME-Version: 1.0 | |
1120 | Content-Transfer-Encoding: 7bit |
|
1121 | Content-Transfer-Encoding: 7bit | |
1121 | Content-Disposition: attachment; filename=t2.patch |
|
1122 | Content-Disposition: attachment; filename=t2.patch | |
1122 |
|
1123 | |||
1123 | # HG changeset patch |
|
1124 | # HG changeset patch | |
1124 | # User test |
|
1125 | # User test | |
1125 | # Date 3 0 |
|
1126 | # Date 3 0 | |
1126 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1127 | # Thu Jan 01 00:00:03 1970 +0000 | |
1127 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1128 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1128 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1129 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1129 | c |
|
1130 | c | |
1130 |
|
1131 | |||
1131 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1132 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1132 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1133 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1133 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1134 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1134 | @@ -0,0 +1,1 @@ |
|
1135 | @@ -0,0 +1,1 @@ | |
1135 | +c |
|
1136 | +c | |
1136 |
|
1137 | |||
1137 | --===*=-- (glob) |
|
1138 | --===*=-- (glob) | |
1138 |
|
1139 | |||
1139 | test attach for multiple patches: |
|
1140 | test attach for multiple patches: | |
1140 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \ |
|
1141 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \ | |
1141 | > -r 0:1 -r 4 | $FILTERBOUNDARY |
|
1142 | > -r 0:1 -r 4 | $FILTERBOUNDARY | |
1142 | this patch series consists of 3 patches. |
|
1143 | this patch series consists of 3 patches. | |
1143 |
|
1144 | |||
1144 |
|
1145 | |||
1145 | Write the introductory message for the patch series. |
|
1146 | Write the introductory message for the patch series. | |
1146 |
|
1147 | |||
1147 |
|
1148 | |||
1148 | displaying [PATCH 0 of 3] test ... |
|
1149 | displaying [PATCH 0 of 3] test ... | |
1149 | Content-Type: text/plain; charset="us-ascii" |
|
1150 | Content-Type: text/plain; charset="us-ascii" | |
1150 | MIME-Version: 1.0 |
|
1151 | MIME-Version: 1.0 | |
1151 | Content-Transfer-Encoding: 7bit |
|
1152 | Content-Transfer-Encoding: 7bit | |
1152 | Subject: [PATCH 0 of 3] test |
|
1153 | Subject: [PATCH 0 of 3] test | |
1153 | Message-Id: <patchbomb.60@*> (glob) |
|
1154 | Message-Id: <patchbomb.60@*> (glob) | |
1154 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1155 | User-Agent: Mercurial-patchbomb/* (glob) | |
1155 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1156 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1156 | From: quux |
|
1157 | From: quux | |
1157 | To: foo |
|
1158 | To: foo | |
1158 | Cc: bar |
|
1159 | Cc: bar | |
1159 |
|
1160 | |||
1160 |
|
1161 | |||
1161 | displaying [PATCH 1 of 3] a ... |
|
1162 | displaying [PATCH 1 of 3] a ... | |
1162 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1163 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1163 | MIME-Version: 1.0 |
|
1164 | MIME-Version: 1.0 | |
1164 | Subject: [PATCH 1 of 3] a |
|
1165 | Subject: [PATCH 1 of 3] a | |
1165 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1166 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1166 | X-Mercurial-Series-Index: 1 |
|
1167 | X-Mercurial-Series-Index: 1 | |
1167 | X-Mercurial-Series-Total: 3 |
|
1168 | X-Mercurial-Series-Total: 3 | |
1168 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1169 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1169 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1170 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1170 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1171 | In-Reply-To: <patchbomb.60@*> (glob) | |
1171 | References: <patchbomb.60@*> (glob) |
|
1172 | References: <patchbomb.60@*> (glob) | |
1172 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1173 | User-Agent: Mercurial-patchbomb/* (glob) | |
1173 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1174 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1174 | From: quux |
|
1175 | From: quux | |
1175 | To: foo |
|
1176 | To: foo | |
1176 | Cc: bar |
|
1177 | Cc: bar | |
1177 |
|
1178 | |||
1178 | --===*= (glob) |
|
1179 | --===*= (glob) | |
1179 | Content-Type: text/plain; charset="us-ascii" |
|
1180 | Content-Type: text/plain; charset="us-ascii" | |
1180 | MIME-Version: 1.0 |
|
1181 | MIME-Version: 1.0 | |
1181 | Content-Transfer-Encoding: 7bit |
|
1182 | Content-Transfer-Encoding: 7bit | |
1182 |
|
1183 | |||
1183 | Patch subject is complete summary. |
|
1184 | Patch subject is complete summary. | |
1184 |
|
1185 | |||
1185 |
|
1186 | |||
1186 |
|
1187 | |||
1187 | --===*= (glob) |
|
1188 | --===*= (glob) | |
1188 | Content-Type: text/x-patch; charset="us-ascii" |
|
1189 | Content-Type: text/x-patch; charset="us-ascii" | |
1189 | MIME-Version: 1.0 |
|
1190 | MIME-Version: 1.0 | |
1190 | Content-Transfer-Encoding: 7bit |
|
1191 | Content-Transfer-Encoding: 7bit | |
1191 | Content-Disposition: attachment; filename=t2-1.patch |
|
1192 | Content-Disposition: attachment; filename=t2-1.patch | |
1192 |
|
1193 | |||
1193 | # HG changeset patch |
|
1194 | # HG changeset patch | |
1194 | # User test |
|
1195 | # User test | |
1195 | # Date 1 0 |
|
1196 | # Date 1 0 | |
1196 | # Thu Jan 01 00:00:01 1970 +0000 |
|
1197 | # Thu Jan 01 00:00:01 1970 +0000 | |
1197 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1198 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1198 | # Parent 0000000000000000000000000000000000000000 |
|
1199 | # Parent 0000000000000000000000000000000000000000 | |
1199 | a |
|
1200 | a | |
1200 |
|
1201 | |||
1201 | diff -r 000000000000 -r 8580ff50825a a |
|
1202 | diff -r 000000000000 -r 8580ff50825a a | |
1202 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1203 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1203 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
1204 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
1204 | @@ -0,0 +1,1 @@ |
|
1205 | @@ -0,0 +1,1 @@ | |
1205 | +a |
|
1206 | +a | |
1206 |
|
1207 | |||
1207 | --===*=-- (glob) |
|
1208 | --===*=-- (glob) | |
1208 | displaying [PATCH 2 of 3] b ... |
|
1209 | displaying [PATCH 2 of 3] b ... | |
1209 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1210 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1210 | MIME-Version: 1.0 |
|
1211 | MIME-Version: 1.0 | |
1211 | Subject: [PATCH 2 of 3] b |
|
1212 | Subject: [PATCH 2 of 3] b | |
1212 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1213 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1213 | X-Mercurial-Series-Index: 2 |
|
1214 | X-Mercurial-Series-Index: 2 | |
1214 | X-Mercurial-Series-Total: 3 |
|
1215 | X-Mercurial-Series-Total: 3 | |
1215 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
1216 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
1216 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1217 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1217 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1218 | In-Reply-To: <patchbomb.60@*> (glob) | |
1218 | References: <patchbomb.60@*> (glob) |
|
1219 | References: <patchbomb.60@*> (glob) | |
1219 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1220 | User-Agent: Mercurial-patchbomb/* (glob) | |
1220 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
1221 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
1221 | From: quux |
|
1222 | From: quux | |
1222 | To: foo |
|
1223 | To: foo | |
1223 | Cc: bar |
|
1224 | Cc: bar | |
1224 |
|
1225 | |||
1225 | --===*= (glob) |
|
1226 | --===*= (glob) | |
1226 | Content-Type: text/plain; charset="us-ascii" |
|
1227 | Content-Type: text/plain; charset="us-ascii" | |
1227 | MIME-Version: 1.0 |
|
1228 | MIME-Version: 1.0 | |
1228 | Content-Transfer-Encoding: 7bit |
|
1229 | Content-Transfer-Encoding: 7bit | |
1229 |
|
1230 | |||
1230 | Patch subject is complete summary. |
|
1231 | Patch subject is complete summary. | |
1231 |
|
1232 | |||
1232 |
|
1233 | |||
1233 |
|
1234 | |||
1234 | --===*= (glob) |
|
1235 | --===*= (glob) | |
1235 | Content-Type: text/x-patch; charset="us-ascii" |
|
1236 | Content-Type: text/x-patch; charset="us-ascii" | |
1236 | MIME-Version: 1.0 |
|
1237 | MIME-Version: 1.0 | |
1237 | Content-Transfer-Encoding: 7bit |
|
1238 | Content-Transfer-Encoding: 7bit | |
1238 | Content-Disposition: attachment; filename=t2-2.patch |
|
1239 | Content-Disposition: attachment; filename=t2-2.patch | |
1239 |
|
1240 | |||
1240 | # HG changeset patch |
|
1241 | # HG changeset patch | |
1241 | # User test |
|
1242 | # User test | |
1242 | # Date 2 0 |
|
1243 | # Date 2 0 | |
1243 | # Thu Jan 01 00:00:02 1970 +0000 |
|
1244 | # Thu Jan 01 00:00:02 1970 +0000 | |
1244 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1245 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1245 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1246 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1246 | b |
|
1247 | b | |
1247 |
|
1248 | |||
1248 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
1249 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
1249 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1250 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1250 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
1251 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
1251 | @@ -0,0 +1,1 @@ |
|
1252 | @@ -0,0 +1,1 @@ | |
1252 | +b |
|
1253 | +b | |
1253 |
|
1254 | |||
1254 | --===*=-- (glob) |
|
1255 | --===*=-- (glob) | |
1255 | displaying [PATCH 3 of 3] long line ... |
|
1256 | displaying [PATCH 3 of 3] long line ... | |
1256 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1257 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1257 | MIME-Version: 1.0 |
|
1258 | MIME-Version: 1.0 | |
1258 | Subject: [PATCH 3 of 3] long line |
|
1259 | Subject: [PATCH 3 of 3] long line | |
1259 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
1260 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
1260 | X-Mercurial-Series-Index: 3 |
|
1261 | X-Mercurial-Series-Index: 3 | |
1261 | X-Mercurial-Series-Total: 3 |
|
1262 | X-Mercurial-Series-Total: 3 | |
1262 | Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob) |
|
1263 | Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob) | |
1263 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1264 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1264 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1265 | In-Reply-To: <patchbomb.60@*> (glob) | |
1265 | References: <patchbomb.60@*> (glob) |
|
1266 | References: <patchbomb.60@*> (glob) | |
1266 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1267 | User-Agent: Mercurial-patchbomb/* (glob) | |
1267 | Date: Thu, 01 Jan 1970 00:01:03 +0000 |
|
1268 | Date: Thu, 01 Jan 1970 00:01:03 +0000 | |
1268 | From: quux |
|
1269 | From: quux | |
1269 | To: foo |
|
1270 | To: foo | |
1270 | Cc: bar |
|
1271 | Cc: bar | |
1271 |
|
1272 | |||
1272 | --===*= (glob) |
|
1273 | --===*= (glob) | |
1273 | Content-Type: text/plain; charset="us-ascii" |
|
1274 | Content-Type: text/plain; charset="us-ascii" | |
1274 | MIME-Version: 1.0 |
|
1275 | MIME-Version: 1.0 | |
1275 | Content-Transfer-Encoding: 7bit |
|
1276 | Content-Transfer-Encoding: 7bit | |
1276 |
|
1277 | |||
1277 | Patch subject is complete summary. |
|
1278 | Patch subject is complete summary. | |
1278 |
|
1279 | |||
1279 |
|
1280 | |||
1280 |
|
1281 | |||
1281 | --===*= (glob) |
|
1282 | --===*= (glob) | |
1282 | Content-Type: text/x-patch; charset="us-ascii" |
|
1283 | Content-Type: text/x-patch; charset="us-ascii" | |
1283 | MIME-Version: 1.0 |
|
1284 | MIME-Version: 1.0 | |
1284 | Content-Transfer-Encoding: quoted-printable |
|
1285 | Content-Transfer-Encoding: quoted-printable | |
1285 | Content-Disposition: attachment; filename=t2-3.patch |
|
1286 | Content-Disposition: attachment; filename=t2-3.patch | |
1286 |
|
1287 | |||
1287 | # HG changeset patch |
|
1288 | # HG changeset patch | |
1288 | # User test |
|
1289 | # User test | |
1289 | # Date 4 0 |
|
1290 | # Date 4 0 | |
1290 | # Thu Jan 01 00:00:04 1970 +0000 |
|
1291 | # Thu Jan 01 00:00:04 1970 +0000 | |
1291 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
1292 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
1292 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
1293 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
1293 | long line |
|
1294 | long line | |
1294 |
|
1295 | |||
1295 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
1296 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
1296 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1297 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1297 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
1298 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
1298 | @@ -0,0 +1,4 @@ |
|
1299 | @@ -0,0 +1,4 @@ | |
1299 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1300 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1300 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1301 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1301 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1302 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1302 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1303 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1303 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1304 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1304 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1305 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1305 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1306 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1306 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1307 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1307 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1308 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1308 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1309 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1309 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1310 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1310 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1311 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1311 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
1312 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
1312 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
1313 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
1313 | +foo |
|
1314 | +foo | |
1314 | + |
|
1315 | + | |
1315 | +bar |
|
1316 | +bar | |
1316 |
|
1317 | |||
1317 | --===*=-- (glob) |
|
1318 | --===*=-- (glob) | |
1318 |
|
1319 | |||
1319 | test intro for single patch: |
|
1320 | test intro for single patch: | |
1320 | $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \ |
|
1321 | $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \ | |
1321 | > -r 2 |
|
1322 | > -r 2 | |
1322 | this patch series consists of 1 patches. |
|
1323 | this patch series consists of 1 patches. | |
1323 |
|
1324 | |||
1324 |
|
1325 | |||
1325 | Write the introductory message for the patch series. |
|
1326 | Write the introductory message for the patch series. | |
1326 |
|
1327 | |||
1327 |
|
1328 | |||
1328 | displaying [PATCH 0 of 1] test ... |
|
1329 | displaying [PATCH 0 of 1] test ... | |
1329 | Content-Type: text/plain; charset="us-ascii" |
|
1330 | Content-Type: text/plain; charset="us-ascii" | |
1330 | MIME-Version: 1.0 |
|
1331 | MIME-Version: 1.0 | |
1331 | Content-Transfer-Encoding: 7bit |
|
1332 | Content-Transfer-Encoding: 7bit | |
1332 | Subject: [PATCH 0 of 1] test |
|
1333 | Subject: [PATCH 0 of 1] test | |
1333 | Message-Id: <patchbomb.60@*> (glob) |
|
1334 | Message-Id: <patchbomb.60@*> (glob) | |
1334 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1335 | User-Agent: Mercurial-patchbomb/* (glob) | |
1335 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1336 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1336 | From: quux |
|
1337 | From: quux | |
1337 | To: foo |
|
1338 | To: foo | |
1338 | Cc: bar |
|
1339 | Cc: bar | |
1339 |
|
1340 | |||
1340 |
|
1341 | |||
1341 | displaying [PATCH 1 of 1] c ... |
|
1342 | displaying [PATCH 1 of 1] c ... | |
1342 | Content-Type: text/plain; charset="us-ascii" |
|
1343 | Content-Type: text/plain; charset="us-ascii" | |
1343 | MIME-Version: 1.0 |
|
1344 | MIME-Version: 1.0 | |
1344 | Content-Transfer-Encoding: 7bit |
|
1345 | Content-Transfer-Encoding: 7bit | |
1345 | Subject: [PATCH 1 of 1] c |
|
1346 | Subject: [PATCH 1 of 1] c | |
1346 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1347 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1347 | X-Mercurial-Series-Index: 1 |
|
1348 | X-Mercurial-Series-Index: 1 | |
1348 | X-Mercurial-Series-Total: 1 |
|
1349 | X-Mercurial-Series-Total: 1 | |
1349 | Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) |
|
1350 | Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) | |
1350 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) |
|
1351 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) | |
1351 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1352 | In-Reply-To: <patchbomb.60@*> (glob) | |
1352 | References: <patchbomb.60@*> (glob) |
|
1353 | References: <patchbomb.60@*> (glob) | |
1353 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1354 | User-Agent: Mercurial-patchbomb/* (glob) | |
1354 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1355 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1355 | From: quux |
|
1356 | From: quux | |
1356 | To: foo |
|
1357 | To: foo | |
1357 | Cc: bar |
|
1358 | Cc: bar | |
1358 |
|
1359 | |||
1359 | # HG changeset patch |
|
1360 | # HG changeset patch | |
1360 | # User test |
|
1361 | # User test | |
1361 | # Date 3 0 |
|
1362 | # Date 3 0 | |
1362 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1363 | # Thu Jan 01 00:00:03 1970 +0000 | |
1363 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1364 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1364 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1365 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1365 | c |
|
1366 | c | |
1366 |
|
1367 | |||
1367 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1368 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1368 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1369 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1369 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1370 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1370 | @@ -0,0 +1,1 @@ |
|
1371 | @@ -0,0 +1,1 @@ | |
1371 | +c |
|
1372 | +c | |
1372 |
|
1373 | |||
1373 |
|
1374 | |||
1374 | test --desc without --intro for a single patch: |
|
1375 | test --desc without --intro for a single patch: | |
1375 | $ echo foo > intro.text |
|
1376 | $ echo foo > intro.text | |
1376 | $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \ |
|
1377 | $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \ | |
1377 | > -s test -r 2 |
|
1378 | > -s test -r 2 | |
1378 | this patch series consists of 1 patches. |
|
1379 | this patch series consists of 1 patches. | |
1379 |
|
1380 | |||
1380 |
|
1381 | |||
1381 | displaying [PATCH 0 of 1] test ... |
|
1382 | displaying [PATCH 0 of 1] test ... | |
1382 | Content-Type: text/plain; charset="us-ascii" |
|
1383 | Content-Type: text/plain; charset="us-ascii" | |
1383 | MIME-Version: 1.0 |
|
1384 | MIME-Version: 1.0 | |
1384 | Content-Transfer-Encoding: 7bit |
|
1385 | Content-Transfer-Encoding: 7bit | |
1385 | Subject: [PATCH 0 of 1] test |
|
1386 | Subject: [PATCH 0 of 1] test | |
1386 | Message-Id: <patchbomb.60@*> (glob) |
|
1387 | Message-Id: <patchbomb.60@*> (glob) | |
1387 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1388 | User-Agent: Mercurial-patchbomb/* (glob) | |
1388 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1389 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1389 | From: quux |
|
1390 | From: quux | |
1390 | To: foo |
|
1391 | To: foo | |
1391 | Cc: bar |
|
1392 | Cc: bar | |
1392 |
|
1393 | |||
1393 | foo |
|
1394 | foo | |
1394 |
|
1395 | |||
1395 | displaying [PATCH 1 of 1] c ... |
|
1396 | displaying [PATCH 1 of 1] c ... | |
1396 | Content-Type: text/plain; charset="us-ascii" |
|
1397 | Content-Type: text/plain; charset="us-ascii" | |
1397 | MIME-Version: 1.0 |
|
1398 | MIME-Version: 1.0 | |
1398 | Content-Transfer-Encoding: 7bit |
|
1399 | Content-Transfer-Encoding: 7bit | |
1399 | Subject: [PATCH 1 of 1] c |
|
1400 | Subject: [PATCH 1 of 1] c | |
1400 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1401 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1401 | X-Mercurial-Series-Index: 1 |
|
1402 | X-Mercurial-Series-Index: 1 | |
1402 | X-Mercurial-Series-Total: 1 |
|
1403 | X-Mercurial-Series-Total: 1 | |
1403 | Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) |
|
1404 | Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) | |
1404 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) |
|
1405 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob) | |
1405 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1406 | In-Reply-To: <patchbomb.60@*> (glob) | |
1406 | References: <patchbomb.60@*> (glob) |
|
1407 | References: <patchbomb.60@*> (glob) | |
1407 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1408 | User-Agent: Mercurial-patchbomb/* (glob) | |
1408 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1409 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1409 | From: quux |
|
1410 | From: quux | |
1410 | To: foo |
|
1411 | To: foo | |
1411 | Cc: bar |
|
1412 | Cc: bar | |
1412 |
|
1413 | |||
1413 | # HG changeset patch |
|
1414 | # HG changeset patch | |
1414 | # User test |
|
1415 | # User test | |
1415 | # Date 3 0 |
|
1416 | # Date 3 0 | |
1416 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1417 | # Thu Jan 01 00:00:03 1970 +0000 | |
1417 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1418 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1418 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1419 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1419 | c |
|
1420 | c | |
1420 |
|
1421 | |||
1421 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1422 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1422 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1423 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1423 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1424 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1424 | @@ -0,0 +1,1 @@ |
|
1425 | @@ -0,0 +1,1 @@ | |
1425 | +c |
|
1426 | +c | |
1426 |
|
1427 | |||
1427 |
|
1428 | |||
1428 | test intro for multiple patches: |
|
1429 | test intro for multiple patches: | |
1429 | $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \ |
|
1430 | $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \ | |
1430 | > -r 0:1 |
|
1431 | > -r 0:1 | |
1431 | this patch series consists of 2 patches. |
|
1432 | this patch series consists of 2 patches. | |
1432 |
|
1433 | |||
1433 |
|
1434 | |||
1434 | Write the introductory message for the patch series. |
|
1435 | Write the introductory message for the patch series. | |
1435 |
|
1436 | |||
1436 |
|
1437 | |||
1437 | displaying [PATCH 0 of 2] test ... |
|
1438 | displaying [PATCH 0 of 2] test ... | |
1438 | Content-Type: text/plain; charset="us-ascii" |
|
1439 | Content-Type: text/plain; charset="us-ascii" | |
1439 | MIME-Version: 1.0 |
|
1440 | MIME-Version: 1.0 | |
1440 | Content-Transfer-Encoding: 7bit |
|
1441 | Content-Transfer-Encoding: 7bit | |
1441 | Subject: [PATCH 0 of 2] test |
|
1442 | Subject: [PATCH 0 of 2] test | |
1442 | Message-Id: <patchbomb.60@*> (glob) |
|
1443 | Message-Id: <patchbomb.60@*> (glob) | |
1443 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1444 | User-Agent: Mercurial-patchbomb/* (glob) | |
1444 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1445 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1445 | From: quux |
|
1446 | From: quux | |
1446 | To: foo |
|
1447 | To: foo | |
1447 | Cc: bar |
|
1448 | Cc: bar | |
1448 |
|
1449 | |||
1449 |
|
1450 | |||
1450 | displaying [PATCH 1 of 2] a ... |
|
1451 | displaying [PATCH 1 of 2] a ... | |
1451 | Content-Type: text/plain; charset="us-ascii" |
|
1452 | Content-Type: text/plain; charset="us-ascii" | |
1452 | MIME-Version: 1.0 |
|
1453 | MIME-Version: 1.0 | |
1453 | Content-Transfer-Encoding: 7bit |
|
1454 | Content-Transfer-Encoding: 7bit | |
1454 | Subject: [PATCH 1 of 2] a |
|
1455 | Subject: [PATCH 1 of 2] a | |
1455 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1456 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1456 | X-Mercurial-Series-Index: 1 |
|
1457 | X-Mercurial-Series-Index: 1 | |
1457 | X-Mercurial-Series-Total: 2 |
|
1458 | X-Mercurial-Series-Total: 2 | |
1458 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1459 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1459 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1460 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1460 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1461 | In-Reply-To: <patchbomb.60@*> (glob) | |
1461 | References: <patchbomb.60@*> (glob) |
|
1462 | References: <patchbomb.60@*> (glob) | |
1462 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1463 | User-Agent: Mercurial-patchbomb/* (glob) | |
1463 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1464 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1464 | From: quux |
|
1465 | From: quux | |
1465 | To: foo |
|
1466 | To: foo | |
1466 | Cc: bar |
|
1467 | Cc: bar | |
1467 |
|
1468 | |||
1468 | # HG changeset patch |
|
1469 | # HG changeset patch | |
1469 | # User test |
|
1470 | # User test | |
1470 | # Date 1 0 |
|
1471 | # Date 1 0 | |
1471 | # Thu Jan 01 00:00:01 1970 +0000 |
|
1472 | # Thu Jan 01 00:00:01 1970 +0000 | |
1472 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1473 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1473 | # Parent 0000000000000000000000000000000000000000 |
|
1474 | # Parent 0000000000000000000000000000000000000000 | |
1474 | a |
|
1475 | a | |
1475 |
|
1476 | |||
1476 | diff -r 000000000000 -r 8580ff50825a a |
|
1477 | diff -r 000000000000 -r 8580ff50825a a | |
1477 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1478 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1478 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
1479 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
1479 | @@ -0,0 +1,1 @@ |
|
1480 | @@ -0,0 +1,1 @@ | |
1480 | +a |
|
1481 | +a | |
1481 |
|
1482 | |||
1482 | displaying [PATCH 2 of 2] b ... |
|
1483 | displaying [PATCH 2 of 2] b ... | |
1483 | Content-Type: text/plain; charset="us-ascii" |
|
1484 | Content-Type: text/plain; charset="us-ascii" | |
1484 | MIME-Version: 1.0 |
|
1485 | MIME-Version: 1.0 | |
1485 | Content-Transfer-Encoding: 7bit |
|
1486 | Content-Transfer-Encoding: 7bit | |
1486 | Subject: [PATCH 2 of 2] b |
|
1487 | Subject: [PATCH 2 of 2] b | |
1487 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1488 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1488 | X-Mercurial-Series-Index: 2 |
|
1489 | X-Mercurial-Series-Index: 2 | |
1489 | X-Mercurial-Series-Total: 2 |
|
1490 | X-Mercurial-Series-Total: 2 | |
1490 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
1491 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
1491 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1492 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1492 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1493 | In-Reply-To: <patchbomb.60@*> (glob) | |
1493 | References: <patchbomb.60@*> (glob) |
|
1494 | References: <patchbomb.60@*> (glob) | |
1494 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1495 | User-Agent: Mercurial-patchbomb/* (glob) | |
1495 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
1496 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
1496 | From: quux |
|
1497 | From: quux | |
1497 | To: foo |
|
1498 | To: foo | |
1498 | Cc: bar |
|
1499 | Cc: bar | |
1499 |
|
1500 | |||
1500 | # HG changeset patch |
|
1501 | # HG changeset patch | |
1501 | # User test |
|
1502 | # User test | |
1502 | # Date 2 0 |
|
1503 | # Date 2 0 | |
1503 | # Thu Jan 01 00:00:02 1970 +0000 |
|
1504 | # Thu Jan 01 00:00:02 1970 +0000 | |
1504 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1505 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1505 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1506 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1506 | b |
|
1507 | b | |
1507 |
|
1508 | |||
1508 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
1509 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
1509 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1510 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1510 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
1511 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
1511 | @@ -0,0 +1,1 @@ |
|
1512 | @@ -0,0 +1,1 @@ | |
1512 | +b |
|
1513 | +b | |
1513 |
|
1514 | |||
1514 |
|
1515 | |||
1515 | test reply-to via config: |
|
1516 | test reply-to via config: | |
1516 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \ |
|
1517 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \ | |
1517 | > --config patchbomb.reply-to='baz@example.com' |
|
1518 | > --config patchbomb.reply-to='baz@example.com' | |
1518 | this patch series consists of 1 patches. |
|
1519 | this patch series consists of 1 patches. | |
1519 |
|
1520 | |||
1520 |
|
1521 | |||
1521 | displaying [PATCH] test ... |
|
1522 | displaying [PATCH] test ... | |
1522 | Content-Type: text/plain; charset="us-ascii" |
|
1523 | Content-Type: text/plain; charset="us-ascii" | |
1523 | MIME-Version: 1.0 |
|
1524 | MIME-Version: 1.0 | |
1524 | Content-Transfer-Encoding: 7bit |
|
1525 | Content-Transfer-Encoding: 7bit | |
1525 | Subject: [PATCH] test |
|
1526 | Subject: [PATCH] test | |
1526 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1527 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1527 | X-Mercurial-Series-Index: 1 |
|
1528 | X-Mercurial-Series-Index: 1 | |
1528 | X-Mercurial-Series-Total: 1 |
|
1529 | X-Mercurial-Series-Total: 1 | |
1529 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1530 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1530 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1531 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1531 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1532 | User-Agent: Mercurial-patchbomb/* (glob) | |
1532 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1533 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1533 | From: quux |
|
1534 | From: quux | |
1534 | To: foo |
|
1535 | To: foo | |
1535 | Cc: bar |
|
1536 | Cc: bar | |
1536 | Reply-To: baz@example.com |
|
1537 | Reply-To: baz@example.com | |
1537 |
|
1538 | |||
1538 | # HG changeset patch |
|
1539 | # HG changeset patch | |
1539 | # User test |
|
1540 | # User test | |
1540 | # Date 3 0 |
|
1541 | # Date 3 0 | |
1541 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1542 | # Thu Jan 01 00:00:03 1970 +0000 | |
1542 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1543 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1543 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1544 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1544 | c |
|
1545 | c | |
1545 |
|
1546 | |||
1546 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1547 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1547 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1548 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1548 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1549 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1549 | @@ -0,0 +1,1 @@ |
|
1550 | @@ -0,0 +1,1 @@ | |
1550 | +c |
|
1551 | +c | |
1551 |
|
1552 | |||
1552 |
|
1553 | |||
1553 | test reply-to via command line: |
|
1554 | test reply-to via command line: | |
1554 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \ |
|
1555 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \ | |
1555 | > --reply-to baz --reply-to fred |
|
1556 | > --reply-to baz --reply-to fred | |
1556 | this patch series consists of 1 patches. |
|
1557 | this patch series consists of 1 patches. | |
1557 |
|
1558 | |||
1558 |
|
1559 | |||
1559 | displaying [PATCH] test ... |
|
1560 | displaying [PATCH] test ... | |
1560 | Content-Type: text/plain; charset="us-ascii" |
|
1561 | Content-Type: text/plain; charset="us-ascii" | |
1561 | MIME-Version: 1.0 |
|
1562 | MIME-Version: 1.0 | |
1562 | Content-Transfer-Encoding: 7bit |
|
1563 | Content-Transfer-Encoding: 7bit | |
1563 | Subject: [PATCH] test |
|
1564 | Subject: [PATCH] test | |
1564 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1565 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1565 | X-Mercurial-Series-Index: 1 |
|
1566 | X-Mercurial-Series-Index: 1 | |
1566 | X-Mercurial-Series-Total: 1 |
|
1567 | X-Mercurial-Series-Total: 1 | |
1567 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1568 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1568 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1569 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1569 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1570 | User-Agent: Mercurial-patchbomb/* (glob) | |
1570 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1571 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1571 | From: quux |
|
1572 | From: quux | |
1572 | To: foo |
|
1573 | To: foo | |
1573 | Cc: bar |
|
1574 | Cc: bar | |
1574 | Reply-To: baz, fred |
|
1575 | Reply-To: baz, fred | |
1575 |
|
1576 | |||
1576 | # HG changeset patch |
|
1577 | # HG changeset patch | |
1577 | # User test |
|
1578 | # User test | |
1578 | # Date 3 0 |
|
1579 | # Date 3 0 | |
1579 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1580 | # Thu Jan 01 00:00:03 1970 +0000 | |
1580 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1581 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1581 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1582 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1582 | c |
|
1583 | c | |
1583 |
|
1584 | |||
1584 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1585 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1585 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1586 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1586 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1587 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1587 | @@ -0,0 +1,1 @@ |
|
1588 | @@ -0,0 +1,1 @@ | |
1588 | +c |
|
1589 | +c | |
1589 |
|
1590 | |||
1590 |
|
1591 | |||
1591 | tagging csets: |
|
1592 | tagging csets: | |
1592 | $ hg tag -r0 zero zero.foo |
|
1593 | $ hg tag -r0 zero zero.foo | |
1593 | $ hg tag -r1 one one.patch |
|
1594 | $ hg tag -r1 one one.patch | |
1594 | $ hg tag -r2 two two.diff |
|
1595 | $ hg tag -r2 two two.diff | |
1595 |
|
1596 | |||
1596 | test inline for single named patch: |
|
1597 | test inline for single named patch: | |
1597 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \ |
|
1598 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \ | |
1598 | > -r 2 | $FILTERBOUNDARY |
|
1599 | > -r 2 | $FILTERBOUNDARY | |
1599 | this patch series consists of 1 patches. |
|
1600 | this patch series consists of 1 patches. | |
1600 |
|
1601 | |||
1601 |
|
1602 | |||
1602 | displaying [PATCH] test ... |
|
1603 | displaying [PATCH] test ... | |
1603 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1604 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1604 | MIME-Version: 1.0 |
|
1605 | MIME-Version: 1.0 | |
1605 | Subject: [PATCH] test |
|
1606 | Subject: [PATCH] test | |
1606 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1607 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1607 | X-Mercurial-Series-Index: 1 |
|
1608 | X-Mercurial-Series-Index: 1 | |
1608 | X-Mercurial-Series-Total: 1 |
|
1609 | X-Mercurial-Series-Total: 1 | |
1609 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1610 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1610 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1611 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1611 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1612 | User-Agent: Mercurial-patchbomb/* (glob) | |
1612 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1613 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1613 | From: quux |
|
1614 | From: quux | |
1614 | To: foo |
|
1615 | To: foo | |
1615 | Cc: bar |
|
1616 | Cc: bar | |
1616 |
|
1617 | |||
1617 | --===*= (glob) |
|
1618 | --===*= (glob) | |
1618 | Content-Type: text/x-patch; charset="us-ascii" |
|
1619 | Content-Type: text/x-patch; charset="us-ascii" | |
1619 | MIME-Version: 1.0 |
|
1620 | MIME-Version: 1.0 | |
1620 | Content-Transfer-Encoding: 7bit |
|
1621 | Content-Transfer-Encoding: 7bit | |
1621 | Content-Disposition: inline; filename=two.diff |
|
1622 | Content-Disposition: inline; filename=two.diff | |
1622 |
|
1623 | |||
1623 | # HG changeset patch |
|
1624 | # HG changeset patch | |
1624 | # User test |
|
1625 | # User test | |
1625 | # Date 3 0 |
|
1626 | # Date 3 0 | |
1626 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1627 | # Thu Jan 01 00:00:03 1970 +0000 | |
1627 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1628 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1628 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1629 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1629 | c |
|
1630 | c | |
1630 |
|
1631 | |||
1631 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1632 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1632 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1633 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1633 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1634 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1634 | @@ -0,0 +1,1 @@ |
|
1635 | @@ -0,0 +1,1 @@ | |
1635 | +c |
|
1636 | +c | |
1636 |
|
1637 | |||
1637 | --===*=-- (glob) |
|
1638 | --===*=-- (glob) | |
1638 |
|
1639 | |||
1639 | test inline for multiple named/unnamed patches: |
|
1640 | test inline for multiple named/unnamed patches: | |
1640 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \ |
|
1641 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \ | |
1641 | > -r 0:1 | $FILTERBOUNDARY |
|
1642 | > -r 0:1 | $FILTERBOUNDARY | |
1642 | this patch series consists of 2 patches. |
|
1643 | this patch series consists of 2 patches. | |
1643 |
|
1644 | |||
1644 |
|
1645 | |||
1645 | Write the introductory message for the patch series. |
|
1646 | Write the introductory message for the patch series. | |
1646 |
|
1647 | |||
1647 |
|
1648 | |||
1648 | displaying [PATCH 0 of 2] test ... |
|
1649 | displaying [PATCH 0 of 2] test ... | |
1649 | Content-Type: text/plain; charset="us-ascii" |
|
1650 | Content-Type: text/plain; charset="us-ascii" | |
1650 | MIME-Version: 1.0 |
|
1651 | MIME-Version: 1.0 | |
1651 | Content-Transfer-Encoding: 7bit |
|
1652 | Content-Transfer-Encoding: 7bit | |
1652 | Subject: [PATCH 0 of 2] test |
|
1653 | Subject: [PATCH 0 of 2] test | |
1653 | Message-Id: <patchbomb.60@*> (glob) |
|
1654 | Message-Id: <patchbomb.60@*> (glob) | |
1654 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1655 | User-Agent: Mercurial-patchbomb/* (glob) | |
1655 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1656 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1656 | From: quux |
|
1657 | From: quux | |
1657 | To: foo |
|
1658 | To: foo | |
1658 | Cc: bar |
|
1659 | Cc: bar | |
1659 |
|
1660 | |||
1660 |
|
1661 | |||
1661 | displaying [PATCH 1 of 2] a ... |
|
1662 | displaying [PATCH 1 of 2] a ... | |
1662 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1663 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1663 | MIME-Version: 1.0 |
|
1664 | MIME-Version: 1.0 | |
1664 | Subject: [PATCH 1 of 2] a |
|
1665 | Subject: [PATCH 1 of 2] a | |
1665 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1666 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1666 | X-Mercurial-Series-Index: 1 |
|
1667 | X-Mercurial-Series-Index: 1 | |
1667 | X-Mercurial-Series-Total: 2 |
|
1668 | X-Mercurial-Series-Total: 2 | |
1668 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1669 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1669 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1670 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1670 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1671 | In-Reply-To: <patchbomb.60@*> (glob) | |
1671 | References: <patchbomb.60@*> (glob) |
|
1672 | References: <patchbomb.60@*> (glob) | |
1672 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1673 | User-Agent: Mercurial-patchbomb/* (glob) | |
1673 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1674 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1674 | From: quux |
|
1675 | From: quux | |
1675 | To: foo |
|
1676 | To: foo | |
1676 | Cc: bar |
|
1677 | Cc: bar | |
1677 |
|
1678 | |||
1678 | --===*= (glob) |
|
1679 | --===*= (glob) | |
1679 | Content-Type: text/x-patch; charset="us-ascii" |
|
1680 | Content-Type: text/x-patch; charset="us-ascii" | |
1680 | MIME-Version: 1.0 |
|
1681 | MIME-Version: 1.0 | |
1681 | Content-Transfer-Encoding: 7bit |
|
1682 | Content-Transfer-Encoding: 7bit | |
1682 | Content-Disposition: inline; filename=t2-1.patch |
|
1683 | Content-Disposition: inline; filename=t2-1.patch | |
1683 |
|
1684 | |||
1684 | # HG changeset patch |
|
1685 | # HG changeset patch | |
1685 | # User test |
|
1686 | # User test | |
1686 | # Date 1 0 |
|
1687 | # Date 1 0 | |
1687 | # Thu Jan 01 00:00:01 1970 +0000 |
|
1688 | # Thu Jan 01 00:00:01 1970 +0000 | |
1688 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1689 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1689 | # Parent 0000000000000000000000000000000000000000 |
|
1690 | # Parent 0000000000000000000000000000000000000000 | |
1690 | a |
|
1691 | a | |
1691 |
|
1692 | |||
1692 | diff -r 000000000000 -r 8580ff50825a a |
|
1693 | diff -r 000000000000 -r 8580ff50825a a | |
1693 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1694 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1694 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
1695 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
1695 | @@ -0,0 +1,1 @@ |
|
1696 | @@ -0,0 +1,1 @@ | |
1696 | +a |
|
1697 | +a | |
1697 |
|
1698 | |||
1698 | --===*=-- (glob) |
|
1699 | --===*=-- (glob) | |
1699 | displaying [PATCH 2 of 2] b ... |
|
1700 | displaying [PATCH 2 of 2] b ... | |
1700 | Content-Type: multipart/mixed; boundary="===*==" (glob) |
|
1701 | Content-Type: multipart/mixed; boundary="===*==" (glob) | |
1701 | MIME-Version: 1.0 |
|
1702 | MIME-Version: 1.0 | |
1702 | Subject: [PATCH 2 of 2] b |
|
1703 | Subject: [PATCH 2 of 2] b | |
1703 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1704 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1704 | X-Mercurial-Series-Index: 2 |
|
1705 | X-Mercurial-Series-Index: 2 | |
1705 | X-Mercurial-Series-Total: 2 |
|
1706 | X-Mercurial-Series-Total: 2 | |
1706 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
1707 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
1707 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1708 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1708 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1709 | In-Reply-To: <patchbomb.60@*> (glob) | |
1709 | References: <patchbomb.60@*> (glob) |
|
1710 | References: <patchbomb.60@*> (glob) | |
1710 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1711 | User-Agent: Mercurial-patchbomb/* (glob) | |
1711 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
1712 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
1712 | From: quux |
|
1713 | From: quux | |
1713 | To: foo |
|
1714 | To: foo | |
1714 | Cc: bar |
|
1715 | Cc: bar | |
1715 |
|
1716 | |||
1716 | --===*= (glob) |
|
1717 | --===*= (glob) | |
1717 | Content-Type: text/x-patch; charset="us-ascii" |
|
1718 | Content-Type: text/x-patch; charset="us-ascii" | |
1718 | MIME-Version: 1.0 |
|
1719 | MIME-Version: 1.0 | |
1719 | Content-Transfer-Encoding: 7bit |
|
1720 | Content-Transfer-Encoding: 7bit | |
1720 | Content-Disposition: inline; filename=one.patch |
|
1721 | Content-Disposition: inline; filename=one.patch | |
1721 |
|
1722 | |||
1722 | # HG changeset patch |
|
1723 | # HG changeset patch | |
1723 | # User test |
|
1724 | # User test | |
1724 | # Date 2 0 |
|
1725 | # Date 2 0 | |
1725 | # Thu Jan 01 00:00:02 1970 +0000 |
|
1726 | # Thu Jan 01 00:00:02 1970 +0000 | |
1726 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1727 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1727 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1728 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1728 | b |
|
1729 | b | |
1729 |
|
1730 | |||
1730 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
1731 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
1731 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1732 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1732 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
1733 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
1733 | @@ -0,0 +1,1 @@ |
|
1734 | @@ -0,0 +1,1 @@ | |
1734 | +b |
|
1735 | +b | |
1735 |
|
1736 | |||
1736 | --===*=-- (glob) |
|
1737 | --===*=-- (glob) | |
1737 |
|
1738 | |||
1738 |
|
1739 | |||
1739 | test inreplyto: |
|
1740 | test inreplyto: | |
1740 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ |
|
1741 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ | |
1741 | > -r tip |
|
1742 | > -r tip | |
1742 | this patch series consists of 1 patches. |
|
1743 | this patch series consists of 1 patches. | |
1743 |
|
1744 | |||
1744 |
|
1745 | |||
1745 | displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ... |
|
1746 | displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ... | |
1746 | Content-Type: text/plain; charset="us-ascii" |
|
1747 | Content-Type: text/plain; charset="us-ascii" | |
1747 | MIME-Version: 1.0 |
|
1748 | MIME-Version: 1.0 | |
1748 | Content-Transfer-Encoding: 7bit |
|
1749 | Content-Transfer-Encoding: 7bit | |
1749 | Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b |
|
1750 | Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b | |
1750 | X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed |
|
1751 | X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed | |
1751 | X-Mercurial-Series-Index: 1 |
|
1752 | X-Mercurial-Series-Index: 1 | |
1752 | X-Mercurial-Series-Total: 1 |
|
1753 | X-Mercurial-Series-Total: 1 | |
1753 | Message-Id: <7aead2484924c445ad8c.60@*> (glob) |
|
1754 | Message-Id: <7aead2484924c445ad8c.60@*> (glob) | |
1754 | X-Mercurial-Series-Id: <7aead2484924c445ad8c.60@*> (glob) |
|
1755 | X-Mercurial-Series-Id: <7aead2484924c445ad8c.60@*> (glob) | |
1755 | In-Reply-To: <baz> |
|
1756 | In-Reply-To: <baz> | |
1756 | References: <baz> |
|
1757 | References: <baz> | |
1757 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1758 | User-Agent: Mercurial-patchbomb/* (glob) | |
1758 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1759 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1759 | From: quux |
|
1760 | From: quux | |
1760 | To: foo |
|
1761 | To: foo | |
1761 | Cc: bar |
|
1762 | Cc: bar | |
1762 |
|
1763 | |||
1763 | # HG changeset patch |
|
1764 | # HG changeset patch | |
1764 | # User test |
|
1765 | # User test | |
1765 | # Date 0 0 |
|
1766 | # Date 0 0 | |
1766 | # Thu Jan 01 00:00:00 1970 +0000 |
|
1767 | # Thu Jan 01 00:00:00 1970 +0000 | |
1767 | # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed |
|
1768 | # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed | |
1768 | # Parent 045ca29b1ea20e4940411e695e20e521f2f0f98e |
|
1769 | # Parent 045ca29b1ea20e4940411e695e20e521f2f0f98e | |
1769 | Added tag two, two.diff for changeset ff2c9fa2018b |
|
1770 | Added tag two, two.diff for changeset ff2c9fa2018b | |
1770 |
|
1771 | |||
1771 | diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags |
|
1772 | diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags | |
1772 | --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000 |
|
1773 | --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000 | |
1773 | +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000 |
|
1774 | +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000 | |
1774 | @@ -2,3 +2,5 @@ |
|
1775 | @@ -2,3 +2,5 @@ | |
1775 | 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo |
|
1776 | 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo | |
1776 | 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one |
|
1777 | 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one | |
1777 | 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch |
|
1778 | 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch | |
1778 | +ff2c9fa2018b15fa74b33363bda9527323e2a99f two |
|
1779 | +ff2c9fa2018b15fa74b33363bda9527323e2a99f two | |
1779 | +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff |
|
1780 | +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff | |
1780 |
|
1781 | |||
1781 | no intro message in non-interactive mode |
|
1782 | no intro message in non-interactive mode | |
1782 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ |
|
1783 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ | |
1783 | > -r 0:1 |
|
1784 | > -r 0:1 | |
1784 | this patch series consists of 2 patches. |
|
1785 | this patch series consists of 2 patches. | |
1785 |
|
1786 | |||
1786 | (optional) Subject: [PATCH 0 of 2] |
|
1787 | (optional) Subject: [PATCH 0 of 2] | |
1787 |
|
1788 | |||
1788 | displaying [PATCH 1 of 2] a ... |
|
1789 | displaying [PATCH 1 of 2] a ... | |
1789 | Content-Type: text/plain; charset="us-ascii" |
|
1790 | Content-Type: text/plain; charset="us-ascii" | |
1790 | MIME-Version: 1.0 |
|
1791 | MIME-Version: 1.0 | |
1791 | Content-Transfer-Encoding: 7bit |
|
1792 | Content-Transfer-Encoding: 7bit | |
1792 | Subject: [PATCH 1 of 2] a |
|
1793 | Subject: [PATCH 1 of 2] a | |
1793 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1794 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1794 | X-Mercurial-Series-Index: 1 |
|
1795 | X-Mercurial-Series-Index: 1 | |
1795 | X-Mercurial-Series-Total: 2 |
|
1796 | X-Mercurial-Series-Total: 2 | |
1796 | Message-Id: <8580ff50825a50c8f716.60@*> (glob) |
|
1797 | Message-Id: <8580ff50825a50c8f716.60@*> (glob) | |
1797 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob) |
|
1798 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob) | |
1798 | In-Reply-To: <baz> |
|
1799 | In-Reply-To: <baz> | |
1799 | References: <baz> |
|
1800 | References: <baz> | |
1800 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1801 | User-Agent: Mercurial-patchbomb/* (glob) | |
1801 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1802 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1802 | From: quux |
|
1803 | From: quux | |
1803 | To: foo |
|
1804 | To: foo | |
1804 | Cc: bar |
|
1805 | Cc: bar | |
1805 |
|
1806 | |||
1806 | # HG changeset patch |
|
1807 | # HG changeset patch | |
1807 | # User test |
|
1808 | # User test | |
1808 | # Date 1 0 |
|
1809 | # Date 1 0 | |
1809 | # Thu Jan 01 00:00:01 1970 +0000 |
|
1810 | # Thu Jan 01 00:00:01 1970 +0000 | |
1810 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1811 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1811 | # Parent 0000000000000000000000000000000000000000 |
|
1812 | # Parent 0000000000000000000000000000000000000000 | |
1812 | a |
|
1813 | a | |
1813 |
|
1814 | |||
1814 | diff -r 000000000000 -r 8580ff50825a a |
|
1815 | diff -r 000000000000 -r 8580ff50825a a | |
1815 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1816 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1816 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
1817 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
1817 | @@ -0,0 +1,1 @@ |
|
1818 | @@ -0,0 +1,1 @@ | |
1818 | +a |
|
1819 | +a | |
1819 |
|
1820 | |||
1820 | displaying [PATCH 2 of 2] b ... |
|
1821 | displaying [PATCH 2 of 2] b ... | |
1821 | Content-Type: text/plain; charset="us-ascii" |
|
1822 | Content-Type: text/plain; charset="us-ascii" | |
1822 | MIME-Version: 1.0 |
|
1823 | MIME-Version: 1.0 | |
1823 | Content-Transfer-Encoding: 7bit |
|
1824 | Content-Transfer-Encoding: 7bit | |
1824 | Subject: [PATCH 2 of 2] b |
|
1825 | Subject: [PATCH 2 of 2] b | |
1825 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1826 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1826 | X-Mercurial-Series-Index: 2 |
|
1827 | X-Mercurial-Series-Index: 2 | |
1827 | X-Mercurial-Series-Total: 2 |
|
1828 | X-Mercurial-Series-Total: 2 | |
1828 | Message-Id: <97d72e5f12c7e84f8506.61@*> (glob) |
|
1829 | Message-Id: <97d72e5f12c7e84f8506.61@*> (glob) | |
1829 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob) |
|
1830 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob) | |
1830 | In-Reply-To: <baz> |
|
1831 | In-Reply-To: <baz> | |
1831 | References: <baz> |
|
1832 | References: <baz> | |
1832 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1833 | User-Agent: Mercurial-patchbomb/* (glob) | |
1833 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1834 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1834 | From: quux |
|
1835 | From: quux | |
1835 | To: foo |
|
1836 | To: foo | |
1836 | Cc: bar |
|
1837 | Cc: bar | |
1837 |
|
1838 | |||
1838 | # HG changeset patch |
|
1839 | # HG changeset patch | |
1839 | # User test |
|
1840 | # User test | |
1840 | # Date 2 0 |
|
1841 | # Date 2 0 | |
1841 | # Thu Jan 01 00:00:02 1970 +0000 |
|
1842 | # Thu Jan 01 00:00:02 1970 +0000 | |
1842 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1843 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1843 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1844 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1844 | b |
|
1845 | b | |
1845 |
|
1846 | |||
1846 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
1847 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
1847 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1848 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1848 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
1849 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
1849 | @@ -0,0 +1,1 @@ |
|
1850 | @@ -0,0 +1,1 @@ | |
1850 | +b |
|
1851 | +b | |
1851 |
|
1852 | |||
1852 |
|
1853 | |||
1853 |
|
1854 | |||
1854 |
|
1855 | |||
1855 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ |
|
1856 | $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ | |
1856 | > -s test -r 0:1 |
|
1857 | > -s test -r 0:1 | |
1857 | this patch series consists of 2 patches. |
|
1858 | this patch series consists of 2 patches. | |
1858 |
|
1859 | |||
1859 |
|
1860 | |||
1860 | Write the introductory message for the patch series. |
|
1861 | Write the introductory message for the patch series. | |
1861 |
|
1862 | |||
1862 |
|
1863 | |||
1863 | displaying [PATCH 0 of 2] test ... |
|
1864 | displaying [PATCH 0 of 2] test ... | |
1864 | Content-Type: text/plain; charset="us-ascii" |
|
1865 | Content-Type: text/plain; charset="us-ascii" | |
1865 | MIME-Version: 1.0 |
|
1866 | MIME-Version: 1.0 | |
1866 | Content-Transfer-Encoding: 7bit |
|
1867 | Content-Transfer-Encoding: 7bit | |
1867 | Subject: [PATCH 0 of 2] test |
|
1868 | Subject: [PATCH 0 of 2] test | |
1868 | Message-Id: <patchbomb.60@*> (glob) |
|
1869 | Message-Id: <patchbomb.60@*> (glob) | |
1869 | In-Reply-To: <baz> |
|
1870 | In-Reply-To: <baz> | |
1870 | References: <baz> |
|
1871 | References: <baz> | |
1871 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1872 | User-Agent: Mercurial-patchbomb/* (glob) | |
1872 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1873 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1873 | From: quux |
|
1874 | From: quux | |
1874 | To: foo |
|
1875 | To: foo | |
1875 | Cc: bar |
|
1876 | Cc: bar | |
1876 |
|
1877 | |||
1877 |
|
1878 | |||
1878 | displaying [PATCH 1 of 2] a ... |
|
1879 | displaying [PATCH 1 of 2] a ... | |
1879 | Content-Type: text/plain; charset="us-ascii" |
|
1880 | Content-Type: text/plain; charset="us-ascii" | |
1880 | MIME-Version: 1.0 |
|
1881 | MIME-Version: 1.0 | |
1881 | Content-Transfer-Encoding: 7bit |
|
1882 | Content-Transfer-Encoding: 7bit | |
1882 | Subject: [PATCH 1 of 2] a |
|
1883 | Subject: [PATCH 1 of 2] a | |
1883 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1884 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1884 | X-Mercurial-Series-Index: 1 |
|
1885 | X-Mercurial-Series-Index: 1 | |
1885 | X-Mercurial-Series-Total: 2 |
|
1886 | X-Mercurial-Series-Total: 2 | |
1886 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1887 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1887 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1888 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1888 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1889 | In-Reply-To: <patchbomb.60@*> (glob) | |
1889 | References: <patchbomb.60@*> (glob) |
|
1890 | References: <patchbomb.60@*> (glob) | |
1890 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1891 | User-Agent: Mercurial-patchbomb/* (glob) | |
1891 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
1892 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
1892 | From: quux |
|
1893 | From: quux | |
1893 | To: foo |
|
1894 | To: foo | |
1894 | Cc: bar |
|
1895 | Cc: bar | |
1895 |
|
1896 | |||
1896 | # HG changeset patch |
|
1897 | # HG changeset patch | |
1897 | # User test |
|
1898 | # User test | |
1898 | # Date 1 0 |
|
1899 | # Date 1 0 | |
1899 | # Thu Jan 01 00:00:01 1970 +0000 |
|
1900 | # Thu Jan 01 00:00:01 1970 +0000 | |
1900 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1901 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1901 | # Parent 0000000000000000000000000000000000000000 |
|
1902 | # Parent 0000000000000000000000000000000000000000 | |
1902 | a |
|
1903 | a | |
1903 |
|
1904 | |||
1904 | diff -r 000000000000 -r 8580ff50825a a |
|
1905 | diff -r 000000000000 -r 8580ff50825a a | |
1905 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1906 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1906 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
1907 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
1907 | @@ -0,0 +1,1 @@ |
|
1908 | @@ -0,0 +1,1 @@ | |
1908 | +a |
|
1909 | +a | |
1909 |
|
1910 | |||
1910 | displaying [PATCH 2 of 2] b ... |
|
1911 | displaying [PATCH 2 of 2] b ... | |
1911 | Content-Type: text/plain; charset="us-ascii" |
|
1912 | Content-Type: text/plain; charset="us-ascii" | |
1912 | MIME-Version: 1.0 |
|
1913 | MIME-Version: 1.0 | |
1913 | Content-Transfer-Encoding: 7bit |
|
1914 | Content-Transfer-Encoding: 7bit | |
1914 | Subject: [PATCH 2 of 2] b |
|
1915 | Subject: [PATCH 2 of 2] b | |
1915 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1916 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1916 | X-Mercurial-Series-Index: 2 |
|
1917 | X-Mercurial-Series-Index: 2 | |
1917 | X-Mercurial-Series-Total: 2 |
|
1918 | X-Mercurial-Series-Total: 2 | |
1918 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
1919 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
1919 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
1920 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
1920 | In-Reply-To: <patchbomb.60@*> (glob) |
|
1921 | In-Reply-To: <patchbomb.60@*> (glob) | |
1921 | References: <patchbomb.60@*> (glob) |
|
1922 | References: <patchbomb.60@*> (glob) | |
1922 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1923 | User-Agent: Mercurial-patchbomb/* (glob) | |
1923 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
1924 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
1924 | From: quux |
|
1925 | From: quux | |
1925 | To: foo |
|
1926 | To: foo | |
1926 | Cc: bar |
|
1927 | Cc: bar | |
1927 |
|
1928 | |||
1928 | # HG changeset patch |
|
1929 | # HG changeset patch | |
1929 | # User test |
|
1930 | # User test | |
1930 | # Date 2 0 |
|
1931 | # Date 2 0 | |
1931 | # Thu Jan 01 00:00:02 1970 +0000 |
|
1932 | # Thu Jan 01 00:00:02 1970 +0000 | |
1932 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1933 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1933 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
1934 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
1934 | b |
|
1935 | b | |
1935 |
|
1936 | |||
1936 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
1937 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
1937 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1938 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1938 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
1939 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
1939 | @@ -0,0 +1,1 @@ |
|
1940 | @@ -0,0 +1,1 @@ | |
1940 | +b |
|
1941 | +b | |
1941 |
|
1942 | |||
1942 |
|
1943 | |||
1943 | test single flag for single patch (and no warning when not mailing dirty rev): |
|
1944 | test single flag for single patch (and no warning when not mailing dirty rev): | |
1944 | $ hg up -qr1 |
|
1945 | $ hg up -qr1 | |
1945 | $ echo dirt > a |
|
1946 | $ echo dirt > a | |
1946 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \ |
|
1947 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \ | |
1947 | > -r 2 | $FILTERBOUNDARY |
|
1948 | > -r 2 | $FILTERBOUNDARY | |
1948 | this patch series consists of 1 patches. |
|
1949 | this patch series consists of 1 patches. | |
1949 |
|
1950 | |||
1950 |
|
1951 | |||
1951 | displaying [PATCH fooFlag] test ... |
|
1952 | displaying [PATCH fooFlag] test ... | |
1952 | Content-Type: text/plain; charset="us-ascii" |
|
1953 | Content-Type: text/plain; charset="us-ascii" | |
1953 | MIME-Version: 1.0 |
|
1954 | MIME-Version: 1.0 | |
1954 | Content-Transfer-Encoding: 7bit |
|
1955 | Content-Transfer-Encoding: 7bit | |
1955 | Subject: [PATCH fooFlag] test |
|
1956 | Subject: [PATCH fooFlag] test | |
1956 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1957 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1957 | X-Mercurial-Series-Index: 1 |
|
1958 | X-Mercurial-Series-Index: 1 | |
1958 | X-Mercurial-Series-Total: 1 |
|
1959 | X-Mercurial-Series-Total: 1 | |
1959 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1960 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1960 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
1961 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
1961 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1962 | User-Agent: Mercurial-patchbomb/* (glob) | |
1962 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
1963 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
1963 | From: quux |
|
1964 | From: quux | |
1964 | To: foo |
|
1965 | To: foo | |
1965 | Cc: bar |
|
1966 | Cc: bar | |
1966 |
|
1967 | |||
1967 | # HG changeset patch |
|
1968 | # HG changeset patch | |
1968 | # User test |
|
1969 | # User test | |
1969 | # Date 3 0 |
|
1970 | # Date 3 0 | |
1970 | # Thu Jan 01 00:00:03 1970 +0000 |
|
1971 | # Thu Jan 01 00:00:03 1970 +0000 | |
1971 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
1972 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
1972 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
1973 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
1973 | c |
|
1974 | c | |
1974 |
|
1975 | |||
1975 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
1976 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
1976 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
1977 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
1977 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
1978 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
1978 | @@ -0,0 +1,1 @@ |
|
1979 | @@ -0,0 +1,1 @@ | |
1979 | +c |
|
1980 | +c | |
1980 |
|
1981 | |||
1981 |
|
1982 | |||
1982 | test single flag for multiple patches (and warning when mailing dirty rev): |
|
1983 | test single flag for multiple patches (and warning when mailing dirty rev): | |
1983 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \ |
|
1984 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \ | |
1984 | > -r 0:1 |
|
1985 | > -r 0:1 | |
1985 | warning: working directory has uncommitted changes |
|
1986 | warning: working directory has uncommitted changes | |
1986 | this patch series consists of 2 patches. |
|
1987 | this patch series consists of 2 patches. | |
1987 |
|
1988 | |||
1988 |
|
1989 | |||
1989 | Write the introductory message for the patch series. |
|
1990 | Write the introductory message for the patch series. | |
1990 |
|
1991 | |||
1991 |
|
1992 | |||
1992 | displaying [PATCH 0 of 2 fooFlag] test ... |
|
1993 | displaying [PATCH 0 of 2 fooFlag] test ... | |
1993 | Content-Type: text/plain; charset="us-ascii" |
|
1994 | Content-Type: text/plain; charset="us-ascii" | |
1994 | MIME-Version: 1.0 |
|
1995 | MIME-Version: 1.0 | |
1995 | Content-Transfer-Encoding: 7bit |
|
1996 | Content-Transfer-Encoding: 7bit | |
1996 | Subject: [PATCH 0 of 2 fooFlag] test |
|
1997 | Subject: [PATCH 0 of 2 fooFlag] test | |
1997 | Message-Id: <patchbomb.60@*> (glob) |
|
1998 | Message-Id: <patchbomb.60@*> (glob) | |
1998 | User-Agent: Mercurial-patchbomb/* (glob) |
|
1999 | User-Agent: Mercurial-patchbomb/* (glob) | |
1999 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
2000 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
2000 | From: quux |
|
2001 | From: quux | |
2001 | To: foo |
|
2002 | To: foo | |
2002 | Cc: bar |
|
2003 | Cc: bar | |
2003 |
|
2004 | |||
2004 |
|
2005 | |||
2005 | displaying [PATCH 1 of 2 fooFlag] a ... |
|
2006 | displaying [PATCH 1 of 2 fooFlag] a ... | |
2006 | Content-Type: text/plain; charset="us-ascii" |
|
2007 | Content-Type: text/plain; charset="us-ascii" | |
2007 | MIME-Version: 1.0 |
|
2008 | MIME-Version: 1.0 | |
2008 | Content-Transfer-Encoding: 7bit |
|
2009 | Content-Transfer-Encoding: 7bit | |
2009 | Subject: [PATCH 1 of 2 fooFlag] a |
|
2010 | Subject: [PATCH 1 of 2 fooFlag] a | |
2010 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2011 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2011 | X-Mercurial-Series-Index: 1 |
|
2012 | X-Mercurial-Series-Index: 1 | |
2012 | X-Mercurial-Series-Total: 2 |
|
2013 | X-Mercurial-Series-Total: 2 | |
2013 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
2014 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
2014 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
2015 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
2015 | In-Reply-To: <patchbomb.60@*> (glob) |
|
2016 | In-Reply-To: <patchbomb.60@*> (glob) | |
2016 | References: <patchbomb.60@*> (glob) |
|
2017 | References: <patchbomb.60@*> (glob) | |
2017 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2018 | User-Agent: Mercurial-patchbomb/* (glob) | |
2018 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
2019 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
2019 | From: quux |
|
2020 | From: quux | |
2020 | To: foo |
|
2021 | To: foo | |
2021 | Cc: bar |
|
2022 | Cc: bar | |
2022 |
|
2023 | |||
2023 | # HG changeset patch |
|
2024 | # HG changeset patch | |
2024 | # User test |
|
2025 | # User test | |
2025 | # Date 1 0 |
|
2026 | # Date 1 0 | |
2026 | # Thu Jan 01 00:00:01 1970 +0000 |
|
2027 | # Thu Jan 01 00:00:01 1970 +0000 | |
2027 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2028 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2028 | # Parent 0000000000000000000000000000000000000000 |
|
2029 | # Parent 0000000000000000000000000000000000000000 | |
2029 | a |
|
2030 | a | |
2030 |
|
2031 | |||
2031 | diff -r 000000000000 -r 8580ff50825a a |
|
2032 | diff -r 000000000000 -r 8580ff50825a a | |
2032 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2033 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2033 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
2034 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
2034 | @@ -0,0 +1,1 @@ |
|
2035 | @@ -0,0 +1,1 @@ | |
2035 | +a |
|
2036 | +a | |
2036 |
|
2037 | |||
2037 | displaying [PATCH 2 of 2 fooFlag] b ... |
|
2038 | displaying [PATCH 2 of 2 fooFlag] b ... | |
2038 | Content-Type: text/plain; charset="us-ascii" |
|
2039 | Content-Type: text/plain; charset="us-ascii" | |
2039 | MIME-Version: 1.0 |
|
2040 | MIME-Version: 1.0 | |
2040 | Content-Transfer-Encoding: 7bit |
|
2041 | Content-Transfer-Encoding: 7bit | |
2041 | Subject: [PATCH 2 of 2 fooFlag] b |
|
2042 | Subject: [PATCH 2 of 2 fooFlag] b | |
2042 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2043 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2043 | X-Mercurial-Series-Index: 2 |
|
2044 | X-Mercurial-Series-Index: 2 | |
2044 | X-Mercurial-Series-Total: 2 |
|
2045 | X-Mercurial-Series-Total: 2 | |
2045 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
2046 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
2046 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
2047 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
2047 | In-Reply-To: <patchbomb.60@*> (glob) |
|
2048 | In-Reply-To: <patchbomb.60@*> (glob) | |
2048 | References: <patchbomb.60@*> (glob) |
|
2049 | References: <patchbomb.60@*> (glob) | |
2049 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2050 | User-Agent: Mercurial-patchbomb/* (glob) | |
2050 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
2051 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
2051 | From: quux |
|
2052 | From: quux | |
2052 | To: foo |
|
2053 | To: foo | |
2053 | Cc: bar |
|
2054 | Cc: bar | |
2054 |
|
2055 | |||
2055 | # HG changeset patch |
|
2056 | # HG changeset patch | |
2056 | # User test |
|
2057 | # User test | |
2057 | # Date 2 0 |
|
2058 | # Date 2 0 | |
2058 | # Thu Jan 01 00:00:02 1970 +0000 |
|
2059 | # Thu Jan 01 00:00:02 1970 +0000 | |
2059 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2060 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2060 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2061 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2061 | b |
|
2062 | b | |
2062 |
|
2063 | |||
2063 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
2064 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
2064 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2065 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2065 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
2066 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
2066 | @@ -0,0 +1,1 @@ |
|
2067 | @@ -0,0 +1,1 @@ | |
2067 | +b |
|
2068 | +b | |
2068 |
|
2069 | |||
2069 | $ hg revert --no-b a |
|
2070 | $ hg revert --no-b a | |
2070 | $ hg up -q |
|
2071 | $ hg up -q | |
2071 |
|
2072 | |||
2072 | test multiple flags for single patch: |
|
2073 | test multiple flags for single patch: | |
2073 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \ |
|
2074 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \ | |
2074 | > -c bar -s test -r 2 |
|
2075 | > -c bar -s test -r 2 | |
2075 | this patch series consists of 1 patches. |
|
2076 | this patch series consists of 1 patches. | |
2076 |
|
2077 | |||
2077 |
|
2078 | |||
2078 | displaying [PATCH fooFlag barFlag] test ... |
|
2079 | displaying [PATCH fooFlag barFlag] test ... | |
2079 | Content-Type: text/plain; charset="us-ascii" |
|
2080 | Content-Type: text/plain; charset="us-ascii" | |
2080 | MIME-Version: 1.0 |
|
2081 | MIME-Version: 1.0 | |
2081 | Content-Transfer-Encoding: 7bit |
|
2082 | Content-Transfer-Encoding: 7bit | |
2082 | Subject: [PATCH fooFlag barFlag] test |
|
2083 | Subject: [PATCH fooFlag barFlag] test | |
2083 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
2084 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
2084 | X-Mercurial-Series-Index: 1 |
|
2085 | X-Mercurial-Series-Index: 1 | |
2085 | X-Mercurial-Series-Total: 1 |
|
2086 | X-Mercurial-Series-Total: 1 | |
2086 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
2087 | Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
2087 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) |
|
2088 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob) | |
2088 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2089 | User-Agent: Mercurial-patchbomb/* (glob) | |
2089 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
2090 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
2090 | From: quux |
|
2091 | From: quux | |
2091 | To: foo |
|
2092 | To: foo | |
2092 | Cc: bar |
|
2093 | Cc: bar | |
2093 |
|
2094 | |||
2094 | # HG changeset patch |
|
2095 | # HG changeset patch | |
2095 | # User test |
|
2096 | # User test | |
2096 | # Date 3 0 |
|
2097 | # Date 3 0 | |
2097 | # Thu Jan 01 00:00:03 1970 +0000 |
|
2098 | # Thu Jan 01 00:00:03 1970 +0000 | |
2098 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
2099 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
2099 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2100 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2100 | c |
|
2101 | c | |
2101 |
|
2102 | |||
2102 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
2103 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
2103 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2104 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2104 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
2105 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
2105 | @@ -0,0 +1,1 @@ |
|
2106 | @@ -0,0 +1,1 @@ | |
2106 | +c |
|
2107 | +c | |
2107 |
|
2108 | |||
2108 |
|
2109 | |||
2109 | test multiple flags for multiple patches: |
|
2110 | test multiple flags for multiple patches: | |
2110 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \ |
|
2111 | $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \ | |
2111 | > -c bar -s test -r 0:1 |
|
2112 | > -c bar -s test -r 0:1 | |
2112 | this patch series consists of 2 patches. |
|
2113 | this patch series consists of 2 patches. | |
2113 |
|
2114 | |||
2114 |
|
2115 | |||
2115 | Write the introductory message for the patch series. |
|
2116 | Write the introductory message for the patch series. | |
2116 |
|
2117 | |||
2117 |
|
2118 | |||
2118 | displaying [PATCH 0 of 2 fooFlag barFlag] test ... |
|
2119 | displaying [PATCH 0 of 2 fooFlag barFlag] test ... | |
2119 | Content-Type: text/plain; charset="us-ascii" |
|
2120 | Content-Type: text/plain; charset="us-ascii" | |
2120 | MIME-Version: 1.0 |
|
2121 | MIME-Version: 1.0 | |
2121 | Content-Transfer-Encoding: 7bit |
|
2122 | Content-Transfer-Encoding: 7bit | |
2122 | Subject: [PATCH 0 of 2 fooFlag barFlag] test |
|
2123 | Subject: [PATCH 0 of 2 fooFlag barFlag] test | |
2123 | Message-Id: <patchbomb.60@*> (glob) |
|
2124 | Message-Id: <patchbomb.60@*> (glob) | |
2124 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2125 | User-Agent: Mercurial-patchbomb/* (glob) | |
2125 | Date: Thu, 01 Jan 1970 00:01:00 +0000 |
|
2126 | Date: Thu, 01 Jan 1970 00:01:00 +0000 | |
2126 | From: quux |
|
2127 | From: quux | |
2127 | To: foo |
|
2128 | To: foo | |
2128 | Cc: bar |
|
2129 | Cc: bar | |
2129 |
|
2130 | |||
2130 |
|
2131 | |||
2131 | displaying [PATCH 1 of 2 fooFlag barFlag] a ... |
|
2132 | displaying [PATCH 1 of 2 fooFlag barFlag] a ... | |
2132 | Content-Type: text/plain; charset="us-ascii" |
|
2133 | Content-Type: text/plain; charset="us-ascii" | |
2133 | MIME-Version: 1.0 |
|
2134 | MIME-Version: 1.0 | |
2134 | Content-Transfer-Encoding: 7bit |
|
2135 | Content-Transfer-Encoding: 7bit | |
2135 | Subject: [PATCH 1 of 2 fooFlag barFlag] a |
|
2136 | Subject: [PATCH 1 of 2 fooFlag barFlag] a | |
2136 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2137 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2137 | X-Mercurial-Series-Index: 1 |
|
2138 | X-Mercurial-Series-Index: 1 | |
2138 | X-Mercurial-Series-Total: 2 |
|
2139 | X-Mercurial-Series-Total: 2 | |
2139 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
2140 | Message-Id: <8580ff50825a50c8f716.61@*> (glob) | |
2140 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
2141 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
2141 | In-Reply-To: <patchbomb.60@*> (glob) |
|
2142 | In-Reply-To: <patchbomb.60@*> (glob) | |
2142 | References: <patchbomb.60@*> (glob) |
|
2143 | References: <patchbomb.60@*> (glob) | |
2143 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2144 | User-Agent: Mercurial-patchbomb/* (glob) | |
2144 | Date: Thu, 01 Jan 1970 00:01:01 +0000 |
|
2145 | Date: Thu, 01 Jan 1970 00:01:01 +0000 | |
2145 | From: quux |
|
2146 | From: quux | |
2146 | To: foo |
|
2147 | To: foo | |
2147 | Cc: bar |
|
2148 | Cc: bar | |
2148 |
|
2149 | |||
2149 | # HG changeset patch |
|
2150 | # HG changeset patch | |
2150 | # User test |
|
2151 | # User test | |
2151 | # Date 1 0 |
|
2152 | # Date 1 0 | |
2152 | # Thu Jan 01 00:00:01 1970 +0000 |
|
2153 | # Thu Jan 01 00:00:01 1970 +0000 | |
2153 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2154 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2154 | # Parent 0000000000000000000000000000000000000000 |
|
2155 | # Parent 0000000000000000000000000000000000000000 | |
2155 | a |
|
2156 | a | |
2156 |
|
2157 | |||
2157 | diff -r 000000000000 -r 8580ff50825a a |
|
2158 | diff -r 000000000000 -r 8580ff50825a a | |
2158 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2159 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2159 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
2160 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
2160 | @@ -0,0 +1,1 @@ |
|
2161 | @@ -0,0 +1,1 @@ | |
2161 | +a |
|
2162 | +a | |
2162 |
|
2163 | |||
2163 | displaying [PATCH 2 of 2 fooFlag barFlag] b ... |
|
2164 | displaying [PATCH 2 of 2 fooFlag barFlag] b ... | |
2164 | Content-Type: text/plain; charset="us-ascii" |
|
2165 | Content-Type: text/plain; charset="us-ascii" | |
2165 | MIME-Version: 1.0 |
|
2166 | MIME-Version: 1.0 | |
2166 | Content-Transfer-Encoding: 7bit |
|
2167 | Content-Transfer-Encoding: 7bit | |
2167 | Subject: [PATCH 2 of 2 fooFlag barFlag] b |
|
2168 | Subject: [PATCH 2 of 2 fooFlag barFlag] b | |
2168 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2169 | X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2169 | X-Mercurial-Series-Index: 2 |
|
2170 | X-Mercurial-Series-Index: 2 | |
2170 | X-Mercurial-Series-Total: 2 |
|
2171 | X-Mercurial-Series-Total: 2 | |
2171 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) |
|
2172 | Message-Id: <97d72e5f12c7e84f8506.62@*> (glob) | |
2172 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) |
|
2173 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob) | |
2173 | In-Reply-To: <patchbomb.60@*> (glob) |
|
2174 | In-Reply-To: <patchbomb.60@*> (glob) | |
2174 | References: <patchbomb.60@*> (glob) |
|
2175 | References: <patchbomb.60@*> (glob) | |
2175 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2176 | User-Agent: Mercurial-patchbomb/* (glob) | |
2176 | Date: Thu, 01 Jan 1970 00:01:02 +0000 |
|
2177 | Date: Thu, 01 Jan 1970 00:01:02 +0000 | |
2177 | From: quux |
|
2178 | From: quux | |
2178 | To: foo |
|
2179 | To: foo | |
2179 | Cc: bar |
|
2180 | Cc: bar | |
2180 |
|
2181 | |||
2181 | # HG changeset patch |
|
2182 | # HG changeset patch | |
2182 | # User test |
|
2183 | # User test | |
2183 | # Date 2 0 |
|
2184 | # Date 2 0 | |
2184 | # Thu Jan 01 00:00:02 1970 +0000 |
|
2185 | # Thu Jan 01 00:00:02 1970 +0000 | |
2185 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2186 | # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2186 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2187 | # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2187 | b |
|
2188 | b | |
2188 |
|
2189 | |||
2189 | diff -r 8580ff50825a -r 97d72e5f12c7 b |
|
2190 | diff -r 8580ff50825a -r 97d72e5f12c7 b | |
2190 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2191 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2191 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 |
|
2192 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
2192 | @@ -0,0 +1,1 @@ |
|
2193 | @@ -0,0 +1,1 @@ | |
2193 | +b |
|
2194 | +b | |
2194 |
|
2195 | |||
2195 |
|
2196 | |||
2196 | test multi-address parsing: |
|
2197 | test multi-address parsing: | |
2197 | $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \ |
|
2198 | $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \ | |
2198 | > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \ |
|
2199 | > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \ | |
2199 | > --config email.bcc='"Quux, A." <quux>' |
|
2200 | > --config email.bcc='"Quux, A." <quux>' | |
2200 | this patch series consists of 1 patches. |
|
2201 | this patch series consists of 1 patches. | |
2201 |
|
2202 | |||
2202 |
|
2203 | |||
2203 | sending [PATCH] test ... |
|
2204 | sending [PATCH] test ... | |
2204 | $ cat < tmp.mbox |
|
2205 | $ cat < tmp.mbox | |
2205 | From quux ... ... .. ..:..:.. .... (re) |
|
2206 | From quux ... ... .. ..:..:.. .... (re) | |
2206 | Content-Type: text/plain; charset="us-ascii" |
|
2207 | Content-Type: text/plain; charset="us-ascii" | |
2207 | MIME-Version: 1.0 |
|
2208 | MIME-Version: 1.0 | |
2208 | Content-Transfer-Encoding: 7bit |
|
2209 | Content-Transfer-Encoding: 7bit | |
2209 | Subject: [PATCH] test |
|
2210 | Subject: [PATCH] test | |
2210 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2211 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2211 | X-Mercurial-Series-Index: 1 |
|
2212 | X-Mercurial-Series-Index: 1 | |
2212 | X-Mercurial-Series-Total: 1 |
|
2213 | X-Mercurial-Series-Total: 1 | |
2213 | Message-Id: <8580ff50825a50c8f716.315532860@*> (glob) |
|
2214 | Message-Id: <8580ff50825a50c8f716.315532860@*> (glob) | |
2214 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob) |
|
2215 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob) | |
2215 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2216 | User-Agent: Mercurial-patchbomb/* (glob) | |
2216 | Date: Tue, 01 Jan 1980 00:01:00 +0000 |
|
2217 | Date: Tue, 01 Jan 1980 00:01:00 +0000 | |
2217 | From: quux |
|
2218 | From: quux | |
2218 | To: spam <spam>, eggs, toast |
|
2219 | To: spam <spam>, eggs, toast | |
2219 | Cc: foo, bar@example.com, "A, B <>" <a@example.com> |
|
2220 | Cc: foo, bar@example.com, "A, B <>" <a@example.com> | |
2220 | Bcc: "Quux, A." <quux> |
|
2221 | Bcc: "Quux, A." <quux> | |
2221 |
|
2222 | |||
2222 | # HG changeset patch |
|
2223 | # HG changeset patch | |
2223 | # User test |
|
2224 | # User test | |
2224 | # Date 1 0 |
|
2225 | # Date 1 0 | |
2225 | # Thu Jan 01 00:00:01 1970 +0000 |
|
2226 | # Thu Jan 01 00:00:01 1970 +0000 | |
2226 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2227 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2227 | # Parent 0000000000000000000000000000000000000000 |
|
2228 | # Parent 0000000000000000000000000000000000000000 | |
2228 | a |
|
2229 | a | |
2229 |
|
2230 | |||
2230 | diff -r 000000000000 -r 8580ff50825a a |
|
2231 | diff -r 000000000000 -r 8580ff50825a a | |
2231 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2232 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2232 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
2233 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
2233 | @@ -0,0 +1,1 @@ |
|
2234 | @@ -0,0 +1,1 @@ | |
2234 | +a |
|
2235 | +a | |
2235 |
|
2236 | |||
2236 |
|
2237 | |||
2237 |
|
2238 | |||
2238 | test multi-byte domain parsing: |
|
2239 | test multi-byte domain parsing: | |
2239 | $ UUML=`python -c 'import sys; sys.stdout.write("\374")'` |
|
2240 | $ UUML=`python -c 'import sys; sys.stdout.write("\374")'` | |
2240 | $ HGENCODING=iso-8859-1 |
|
2241 | $ HGENCODING=iso-8859-1 | |
2241 | $ export HGENCODING |
|
2242 | $ export HGENCODING | |
2242 | $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0 |
|
2243 | $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0 | |
2243 | this patch series consists of 1 patches. |
|
2244 | this patch series consists of 1 patches. | |
2244 |
|
2245 | |||
2245 | Cc: |
|
2246 | Cc: | |
2246 |
|
2247 | |||
2247 | sending [PATCH] test ... |
|
2248 | sending [PATCH] test ... | |
2248 |
|
2249 | |||
2249 | $ cat tmp.mbox |
|
2250 | $ cat tmp.mbox | |
2250 | From quux ... ... .. ..:..:.. .... (re) |
|
2251 | From quux ... ... .. ..:..:.. .... (re) | |
2251 | Content-Type: text/plain; charset="us-ascii" |
|
2252 | Content-Type: text/plain; charset="us-ascii" | |
2252 | MIME-Version: 1.0 |
|
2253 | MIME-Version: 1.0 | |
2253 | Content-Transfer-Encoding: 7bit |
|
2254 | Content-Transfer-Encoding: 7bit | |
2254 | Subject: [PATCH] test |
|
2255 | Subject: [PATCH] test | |
2255 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2256 | X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2256 | X-Mercurial-Series-Index: 1 |
|
2257 | X-Mercurial-Series-Index: 1 | |
2257 | X-Mercurial-Series-Total: 1 |
|
2258 | X-Mercurial-Series-Total: 1 | |
2258 | Message-Id: <8580ff50825a50c8f716.315532860@*> (glob) |
|
2259 | Message-Id: <8580ff50825a50c8f716.315532860@*> (glob) | |
2259 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob) |
|
2260 | X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob) | |
2260 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2261 | User-Agent: Mercurial-patchbomb/* (glob) | |
2261 | Date: Tue, 01 Jan 1980 00:01:00 +0000 |
|
2262 | Date: Tue, 01 Jan 1980 00:01:00 +0000 | |
2262 | From: quux |
|
2263 | From: quux | |
2263 | To: bar@xn--nicode-2ya.com |
|
2264 | To: bar@xn--nicode-2ya.com | |
2264 |
|
2265 | |||
2265 | # HG changeset patch |
|
2266 | # HG changeset patch | |
2266 | # User test |
|
2267 | # User test | |
2267 | # Date 1 0 |
|
2268 | # Date 1 0 | |
2268 | # Thu Jan 01 00:00:01 1970 +0000 |
|
2269 | # Thu Jan 01 00:00:01 1970 +0000 | |
2269 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab |
|
2270 | # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab | |
2270 | # Parent 0000000000000000000000000000000000000000 |
|
2271 | # Parent 0000000000000000000000000000000000000000 | |
2271 | a |
|
2272 | a | |
2272 |
|
2273 | |||
2273 | diff -r 000000000000 -r 8580ff50825a a |
|
2274 | diff -r 000000000000 -r 8580ff50825a a | |
2274 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2275 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2275 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 |
|
2276 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
2276 | @@ -0,0 +1,1 @@ |
|
2277 | @@ -0,0 +1,1 @@ | |
2277 | +a |
|
2278 | +a | |
2278 |
|
2279 | |||
2279 |
|
2280 | |||
2280 |
|
2281 | |||
2281 | test outgoing: |
|
2282 | test outgoing: | |
2282 | $ hg up 1 |
|
2283 | $ hg up 1 | |
2283 | 0 files updated, 0 files merged, 6 files removed, 0 files unresolved |
|
2284 | 0 files updated, 0 files merged, 6 files removed, 0 files unresolved | |
2284 |
|
2285 | |||
2285 | $ hg branch test |
|
2286 | $ hg branch test | |
2286 | marked working directory as branch test |
|
2287 | marked working directory as branch test | |
2287 | (branches are permanent and global, did you want a bookmark?) |
|
2288 | (branches are permanent and global, did you want a bookmark?) | |
2288 |
|
2289 | |||
2289 | $ echo d > d |
|
2290 | $ echo d > d | |
2290 | $ hg add d |
|
2291 | $ hg add d | |
2291 | $ hg ci -md -d '4 0' |
|
2292 | $ hg ci -md -d '4 0' | |
2292 | $ echo d >> d |
|
2293 | $ echo d >> d | |
2293 | $ hg ci -mdd -d '5 0' |
|
2294 | $ hg ci -mdd -d '5 0' | |
2294 | $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n" |
|
2295 | $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n" | |
2295 | @ 10:3b6f1ec9dde9 dd |
|
2296 | @ 10:3b6f1ec9dde9 dd | |
2296 | | |
|
2297 | | | |
2297 | o 9:2f9fa9b998c5 d |
|
2298 | o 9:2f9fa9b998c5 d | |
2298 | | |
|
2299 | | | |
2299 | | o 8:7aead2484924 Added tag two, two.diff for changeset ff2c9fa2018b |
|
2300 | | o 8:7aead2484924 Added tag two, two.diff for changeset ff2c9fa2018b | |
2300 | | | |
|
2301 | | | | |
2301 | | o 7:045ca29b1ea2 Added tag one, one.patch for changeset 97d72e5f12c7 |
|
2302 | | o 7:045ca29b1ea2 Added tag one, one.patch for changeset 97d72e5f12c7 | |
2302 | | | |
|
2303 | | | | |
2303 | | o 6:5d5ef15dfe5e Added tag zero, zero.foo for changeset 8580ff50825a |
|
2304 | | o 6:5d5ef15dfe5e Added tag zero, zero.foo for changeset 8580ff50825a | |
2304 | | | |
|
2305 | | | | |
2305 | | o 5:240fb913fc1b isolatin 8-bit encoding |
|
2306 | | o 5:240fb913fc1b isolatin 8-bit encoding | |
2306 | | | |
|
2307 | | | | |
2307 | | o 4:a2ea8fc83dd8 long line |
|
2308 | | o 4:a2ea8fc83dd8 long line | |
2308 | | | |
|
2309 | | | | |
2309 | | o 3:909a00e13e9d utf-8 content |
|
2310 | | o 3:909a00e13e9d utf-8 content | |
2310 | | | |
|
2311 | | | | |
2311 | | o 2:ff2c9fa2018b c |
|
2312 | | o 2:ff2c9fa2018b c | |
2312 | |/ |
|
2313 | |/ | |
2313 | o 1:97d72e5f12c7 b |
|
2314 | o 1:97d72e5f12c7 b | |
2314 | | |
|
2315 | | | |
2315 | o 0:8580ff50825a a |
|
2316 | o 0:8580ff50825a a | |
2316 |
|
2317 | |||
2317 | $ hg phase --force --secret -r 10 |
|
2318 | $ hg phase --force --secret -r 10 | |
2318 | $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t -r 'rev(10) or rev(6)' |
|
2319 | $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t -r 'rev(10) or rev(6)' | |
2319 | comparing with ../t |
|
2320 | comparing with ../t | |
2320 | From [test]: test |
|
2321 | From [test]: test | |
2321 | this patch series consists of 6 patches. |
|
2322 | this patch series consists of 6 patches. | |
2322 |
|
2323 | |||
2323 |
|
2324 | |||
2324 | Write the introductory message for the patch series. |
|
2325 | Write the introductory message for the patch series. | |
2325 |
|
2326 | |||
2326 | Cc: |
|
2327 | Cc: | |
2327 |
|
2328 | |||
2328 | displaying [PATCH 0 of 6] test ... |
|
2329 | displaying [PATCH 0 of 6] test ... | |
2329 | Content-Type: text/plain; charset="us-ascii" |
|
2330 | Content-Type: text/plain; charset="us-ascii" | |
2330 | MIME-Version: 1.0 |
|
2331 | MIME-Version: 1.0 | |
2331 | Content-Transfer-Encoding: 7bit |
|
2332 | Content-Transfer-Encoding: 7bit | |
2332 | Subject: [PATCH 0 of 6] test |
|
2333 | Subject: [PATCH 0 of 6] test | |
2333 | Message-Id: <patchbomb.315532860@*> (glob) |
|
2334 | Message-Id: <patchbomb.315532860@*> (glob) | |
2334 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2335 | User-Agent: Mercurial-patchbomb/* (glob) | |
2335 | Date: Tue, 01 Jan 1980 00:01:00 +0000 |
|
2336 | Date: Tue, 01 Jan 1980 00:01:00 +0000 | |
2336 | From: test |
|
2337 | From: test | |
2337 | To: foo |
|
2338 | To: foo | |
2338 |
|
2339 | |||
2339 |
|
2340 | |||
2340 | displaying [PATCH 1 of 6] c ... |
|
2341 | displaying [PATCH 1 of 6] c ... | |
2341 | Content-Type: text/plain; charset="us-ascii" |
|
2342 | Content-Type: text/plain; charset="us-ascii" | |
2342 | MIME-Version: 1.0 |
|
2343 | MIME-Version: 1.0 | |
2343 | Content-Transfer-Encoding: 7bit |
|
2344 | Content-Transfer-Encoding: 7bit | |
2344 | Subject: [PATCH 1 of 6] c |
|
2345 | Subject: [PATCH 1 of 6] c | |
2345 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
2346 | X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
2346 | X-Mercurial-Series-Index: 1 |
|
2347 | X-Mercurial-Series-Index: 1 | |
2347 | X-Mercurial-Series-Total: 6 |
|
2348 | X-Mercurial-Series-Total: 6 | |
2348 | Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2349 | Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2349 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2350 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2350 | In-Reply-To: <patchbomb.315532860@*> (glob) |
|
2351 | In-Reply-To: <patchbomb.315532860@*> (glob) | |
2351 | References: <patchbomb.315532860@*> (glob) |
|
2352 | References: <patchbomb.315532860@*> (glob) | |
2352 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2353 | User-Agent: Mercurial-patchbomb/* (glob) | |
2353 | Date: Tue, 01 Jan 1980 00:01:01 +0000 |
|
2354 | Date: Tue, 01 Jan 1980 00:01:01 +0000 | |
2354 | From: test |
|
2355 | From: test | |
2355 | To: foo |
|
2356 | To: foo | |
2356 |
|
2357 | |||
2357 | # HG changeset patch |
|
2358 | # HG changeset patch | |
2358 | # User test |
|
2359 | # User test | |
2359 | # Date 3 0 |
|
2360 | # Date 3 0 | |
2360 | # Thu Jan 01 00:00:03 1970 +0000 |
|
2361 | # Thu Jan 01 00:00:03 1970 +0000 | |
2361 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
2362 | # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
2362 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2363 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2363 | c |
|
2364 | c | |
2364 |
|
2365 | |||
2365 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c |
|
2366 | diff -r 97d72e5f12c7 -r ff2c9fa2018b c | |
2366 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2367 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2367 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 |
|
2368 | +++ b/c Thu Jan 01 00:00:03 1970 +0000 | |
2368 | @@ -0,0 +1,1 @@ |
|
2369 | @@ -0,0 +1,1 @@ | |
2369 | +c |
|
2370 | +c | |
2370 |
|
2371 | |||
2371 | displaying [PATCH 2 of 6] utf-8 content ... |
|
2372 | displaying [PATCH 2 of 6] utf-8 content ... | |
2372 | Content-Type: text/plain; charset="us-ascii" |
|
2373 | Content-Type: text/plain; charset="us-ascii" | |
2373 | MIME-Version: 1.0 |
|
2374 | MIME-Version: 1.0 | |
2374 | Content-Transfer-Encoding: 8bit |
|
2375 | Content-Transfer-Encoding: 8bit | |
2375 | Subject: [PATCH 2 of 6] utf-8 content |
|
2376 | Subject: [PATCH 2 of 6] utf-8 content | |
2376 | X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
2377 | X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f | |
2377 | X-Mercurial-Series-Index: 2 |
|
2378 | X-Mercurial-Series-Index: 2 | |
2378 | X-Mercurial-Series-Total: 6 |
|
2379 | X-Mercurial-Series-Total: 6 | |
2379 | Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob) |
|
2380 | Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob) | |
2380 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2381 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2381 | In-Reply-To: <patchbomb.315532860@*> (glob) |
|
2382 | In-Reply-To: <patchbomb.315532860@*> (glob) | |
2382 | References: <patchbomb.315532860@*> (glob) |
|
2383 | References: <patchbomb.315532860@*> (glob) | |
2383 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2384 | User-Agent: Mercurial-patchbomb/* (glob) | |
2384 | Date: Tue, 01 Jan 1980 00:01:02 +0000 |
|
2385 | Date: Tue, 01 Jan 1980 00:01:02 +0000 | |
2385 | From: test |
|
2386 | From: test | |
2386 | To: foo |
|
2387 | To: foo | |
2387 |
|
2388 | |||
2388 | # HG changeset patch |
|
2389 | # HG changeset patch | |
2389 | # User test |
|
2390 | # User test | |
2390 | # Date 4 0 |
|
2391 | # Date 4 0 | |
2391 | # Thu Jan 01 00:00:04 1970 +0000 |
|
2392 | # Thu Jan 01 00:00:04 1970 +0000 | |
2392 | # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
2393 | # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f | |
2393 | # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f |
|
2394 | # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f | |
2394 | utf-8 content |
|
2395 | utf-8 content | |
2395 |
|
2396 | |||
2396 | diff -r ff2c9fa2018b -r 909a00e13e9d description |
|
2397 | diff -r ff2c9fa2018b -r 909a00e13e9d description | |
2397 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2398 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2398 | +++ b/description Thu Jan 01 00:00:04 1970 +0000 |
|
2399 | +++ b/description Thu Jan 01 00:00:04 1970 +0000 | |
2399 | @@ -0,0 +1,3 @@ |
|
2400 | @@ -0,0 +1,3 @@ | |
2400 | +a multiline |
|
2401 | +a multiline | |
2401 | + |
|
2402 | + | |
2402 | +description |
|
2403 | +description | |
2403 | diff -r ff2c9fa2018b -r 909a00e13e9d utf |
|
2404 | diff -r ff2c9fa2018b -r 909a00e13e9d utf | |
2404 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2405 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2405 | +++ b/utf Thu Jan 01 00:00:04 1970 +0000 |
|
2406 | +++ b/utf Thu Jan 01 00:00:04 1970 +0000 | |
2406 | @@ -0,0 +1,1 @@ |
|
2407 | @@ -0,0 +1,1 @@ | |
2407 | +h\xc3\xb6mma! (esc) |
|
2408 | +h\xc3\xb6mma! (esc) | |
2408 |
|
2409 | |||
2409 | displaying [PATCH 3 of 6] long line ... |
|
2410 | displaying [PATCH 3 of 6] long line ... | |
2410 | Content-Type: text/plain; charset="us-ascii" |
|
2411 | Content-Type: text/plain; charset="us-ascii" | |
2411 | MIME-Version: 1.0 |
|
2412 | MIME-Version: 1.0 | |
2412 | Content-Transfer-Encoding: quoted-printable |
|
2413 | Content-Transfer-Encoding: quoted-printable | |
2413 | Subject: [PATCH 3 of 6] long line |
|
2414 | Subject: [PATCH 3 of 6] long line | |
2414 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
2415 | X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
2415 | X-Mercurial-Series-Index: 3 |
|
2416 | X-Mercurial-Series-Index: 3 | |
2416 | X-Mercurial-Series-Total: 6 |
|
2417 | X-Mercurial-Series-Total: 6 | |
2417 | Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob) |
|
2418 | Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob) | |
2418 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2419 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2419 | In-Reply-To: <patchbomb.315532860@*> (glob) |
|
2420 | In-Reply-To: <patchbomb.315532860@*> (glob) | |
2420 | References: <patchbomb.315532860@*> (glob) |
|
2421 | References: <patchbomb.315532860@*> (glob) | |
2421 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2422 | User-Agent: Mercurial-patchbomb/* (glob) | |
2422 | Date: Tue, 01 Jan 1980 00:01:03 +0000 |
|
2423 | Date: Tue, 01 Jan 1980 00:01:03 +0000 | |
2423 | From: test |
|
2424 | From: test | |
2424 | To: foo |
|
2425 | To: foo | |
2425 |
|
2426 | |||
2426 | # HG changeset patch |
|
2427 | # HG changeset patch | |
2427 | # User test |
|
2428 | # User test | |
2428 | # Date 4 0 |
|
2429 | # Date 4 0 | |
2429 | # Thu Jan 01 00:00:04 1970 +0000 |
|
2430 | # Thu Jan 01 00:00:04 1970 +0000 | |
2430 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
2431 | # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
2431 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f |
|
2432 | # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f | |
2432 | long line |
|
2433 | long line | |
2433 |
|
2434 | |||
2434 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long |
|
2435 | diff -r 909a00e13e9d -r a2ea8fc83dd8 long | |
2435 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2436 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2436 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 |
|
2437 | +++ b/long Thu Jan 01 00:00:04 1970 +0000 | |
2437 | @@ -0,0 +1,4 @@ |
|
2438 | @@ -0,0 +1,4 @@ | |
2438 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2439 | +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2439 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2440 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2440 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2441 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2441 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2442 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2442 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2443 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2443 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2444 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2444 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2445 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2445 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2446 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2446 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2447 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2447 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2448 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2448 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2449 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2449 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2450 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2450 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= |
|
2451 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | |
2451 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
|
2452 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
2452 | +foo |
|
2453 | +foo | |
2453 | + |
|
2454 | + | |
2454 | +bar |
|
2455 | +bar | |
2455 |
|
2456 | |||
2456 | displaying [PATCH 4 of 6] isolatin 8-bit encoding ... |
|
2457 | displaying [PATCH 4 of 6] isolatin 8-bit encoding ... | |
2457 | Content-Type: text/plain; charset="us-ascii" |
|
2458 | Content-Type: text/plain; charset="us-ascii" | |
2458 | MIME-Version: 1.0 |
|
2459 | MIME-Version: 1.0 | |
2459 | Content-Transfer-Encoding: 8bit |
|
2460 | Content-Transfer-Encoding: 8bit | |
2460 | Subject: [PATCH 4 of 6] isolatin 8-bit encoding |
|
2461 | Subject: [PATCH 4 of 6] isolatin 8-bit encoding | |
2461 | X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 |
|
2462 | X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 | |
2462 | X-Mercurial-Series-Index: 4 |
|
2463 | X-Mercurial-Series-Index: 4 | |
2463 | X-Mercurial-Series-Total: 6 |
|
2464 | X-Mercurial-Series-Total: 6 | |
2464 | Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob) |
|
2465 | Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob) | |
2465 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2466 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2466 | In-Reply-To: <patchbomb.315532860@*> (glob) |
|
2467 | In-Reply-To: <patchbomb.315532860@*> (glob) | |
2467 | References: <patchbomb.315532860@*> (glob) |
|
2468 | References: <patchbomb.315532860@*> (glob) | |
2468 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2469 | User-Agent: Mercurial-patchbomb/* (glob) | |
2469 | Date: Tue, 01 Jan 1980 00:01:04 +0000 |
|
2470 | Date: Tue, 01 Jan 1980 00:01:04 +0000 | |
2470 | From: test |
|
2471 | From: test | |
2471 | To: foo |
|
2472 | To: foo | |
2472 |
|
2473 | |||
2473 | # HG changeset patch |
|
2474 | # HG changeset patch | |
2474 | # User test |
|
2475 | # User test | |
2475 | # Date 5 0 |
|
2476 | # Date 5 0 | |
2476 | # Thu Jan 01 00:00:05 1970 +0000 |
|
2477 | # Thu Jan 01 00:00:05 1970 +0000 | |
2477 | # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 |
|
2478 | # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 | |
2478 | # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 |
|
2479 | # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1 | |
2479 | isolatin 8-bit encoding |
|
2480 | isolatin 8-bit encoding | |
2480 |
|
2481 | |||
2481 | diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin |
|
2482 | diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin | |
2482 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2483 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2483 | +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000 |
|
2484 | +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000 | |
2484 | @@ -0,0 +1,1 @@ |
|
2485 | @@ -0,0 +1,1 @@ | |
2485 | +h\xf6mma! (esc) |
|
2486 | +h\xf6mma! (esc) | |
2486 |
|
2487 | |||
2487 | displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ... |
|
2488 | displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ... | |
2488 | Content-Type: text/plain; charset="us-ascii" |
|
2489 | Content-Type: text/plain; charset="us-ascii" | |
2489 | MIME-Version: 1.0 |
|
2490 | MIME-Version: 1.0 | |
2490 | Content-Transfer-Encoding: 7bit |
|
2491 | Content-Transfer-Encoding: 7bit | |
2491 | Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a |
|
2492 | Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a | |
2492 | X-Mercurial-Node: 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433 |
|
2493 | X-Mercurial-Node: 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433 | |
2493 | X-Mercurial-Series-Index: 5 |
|
2494 | X-Mercurial-Series-Index: 5 | |
2494 | X-Mercurial-Series-Total: 6 |
|
2495 | X-Mercurial-Series-Total: 6 | |
2495 | Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob) |
|
2496 | Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob) | |
2496 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2497 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2497 | In-Reply-To: <patchbomb.315532860@*> (glob) |
|
2498 | In-Reply-To: <patchbomb.315532860@*> (glob) | |
2498 | References: <patchbomb.315532860@*> (glob) |
|
2499 | References: <patchbomb.315532860@*> (glob) | |
2499 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2500 | User-Agent: Mercurial-patchbomb/* (glob) | |
2500 | Date: Tue, 01 Jan 1980 00:01:05 +0000 |
|
2501 | Date: Tue, 01 Jan 1980 00:01:05 +0000 | |
2501 | From: test |
|
2502 | From: test | |
2502 | To: foo |
|
2503 | To: foo | |
2503 |
|
2504 | |||
2504 | # HG changeset patch |
|
2505 | # HG changeset patch | |
2505 | # User test |
|
2506 | # User test | |
2506 | # Date 0 0 |
|
2507 | # Date 0 0 | |
2507 | # Thu Jan 01 00:00:00 1970 +0000 |
|
2508 | # Thu Jan 01 00:00:00 1970 +0000 | |
2508 | # Node ID 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433 |
|
2509 | # Node ID 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433 | |
2509 | # Parent 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 |
|
2510 | # Parent 240fb913fc1b7ff15ddb9f33e73d82bf5277c720 | |
2510 | Added tag zero, zero.foo for changeset 8580ff50825a |
|
2511 | Added tag zero, zero.foo for changeset 8580ff50825a | |
2511 |
|
2512 | |||
2512 | diff -r 240fb913fc1b -r 5d5ef15dfe5e .hgtags |
|
2513 | diff -r 240fb913fc1b -r 5d5ef15dfe5e .hgtags | |
2513 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2514 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2514 | +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000 |
|
2515 | +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000 | |
2515 | @@ -0,0 +1,2 @@ |
|
2516 | @@ -0,0 +1,2 @@ | |
2516 | +8580ff50825a50c8f716709acdf8de0deddcd6ab zero |
|
2517 | +8580ff50825a50c8f716709acdf8de0deddcd6ab zero | |
2517 | +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo |
|
2518 | +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo | |
2518 |
|
2519 | |||
2519 | displaying [PATCH 6 of 6] d ... |
|
2520 | displaying [PATCH 6 of 6] d ... | |
2520 | Content-Type: text/plain; charset="us-ascii" |
|
2521 | Content-Type: text/plain; charset="us-ascii" | |
2521 | MIME-Version: 1.0 |
|
2522 | MIME-Version: 1.0 | |
2522 | Content-Transfer-Encoding: 7bit |
|
2523 | Content-Transfer-Encoding: 7bit | |
2523 | Subject: [PATCH 6 of 6] d |
|
2524 | Subject: [PATCH 6 of 6] d | |
2524 | X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 |
|
2525 | X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 | |
2525 | X-Mercurial-Series-Index: 6 |
|
2526 | X-Mercurial-Series-Index: 6 | |
2526 | X-Mercurial-Series-Total: 6 |
|
2527 | X-Mercurial-Series-Total: 6 | |
2527 | Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@*> (glob) |
|
2528 | Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@*> (glob) | |
2528 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) |
|
2529 | X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob) | |
2529 | In-Reply-To: <patchbomb.315532860@*> (glob) |
|
2530 | In-Reply-To: <patchbomb.315532860@*> (glob) | |
2530 | References: <patchbomb.315532860@*> (glob) |
|
2531 | References: <patchbomb.315532860@*> (glob) | |
2531 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2532 | User-Agent: Mercurial-patchbomb/* (glob) | |
2532 | Date: Tue, 01 Jan 1980 00:01:06 +0000 |
|
2533 | Date: Tue, 01 Jan 1980 00:01:06 +0000 | |
2533 | From: test |
|
2534 | From: test | |
2534 | To: foo |
|
2535 | To: foo | |
2535 |
|
2536 | |||
2536 | # HG changeset patch |
|
2537 | # HG changeset patch | |
2537 | # User test |
|
2538 | # User test | |
2538 | # Date 4 0 |
|
2539 | # Date 4 0 | |
2539 | # Thu Jan 01 00:00:04 1970 +0000 |
|
2540 | # Thu Jan 01 00:00:04 1970 +0000 | |
2540 | # Branch test |
|
2541 | # Branch test | |
2541 | # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 |
|
2542 | # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 | |
2542 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2543 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2543 | d |
|
2544 | d | |
2544 |
|
2545 | |||
2545 | diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d |
|
2546 | diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d | |
2546 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2547 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2547 | +++ b/d Thu Jan 01 00:00:04 1970 +0000 |
|
2548 | +++ b/d Thu Jan 01 00:00:04 1970 +0000 | |
2548 | @@ -0,0 +1,1 @@ |
|
2549 | @@ -0,0 +1,1 @@ | |
2549 | +d |
|
2550 | +d | |
2550 |
|
2551 | |||
2551 |
|
2552 | |||
2552 | dest#branch URIs: |
|
2553 | dest#branch URIs: | |
2553 | $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test |
|
2554 | $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test | |
2554 | comparing with ../t |
|
2555 | comparing with ../t | |
2555 | From [test]: test |
|
2556 | From [test]: test | |
2556 | this patch series consists of 1 patches. |
|
2557 | this patch series consists of 1 patches. | |
2557 |
|
2558 | |||
2558 | Cc: |
|
2559 | Cc: | |
2559 |
|
2560 | |||
2560 | displaying [PATCH] test ... |
|
2561 | displaying [PATCH] test ... | |
2561 | Content-Type: text/plain; charset="us-ascii" |
|
2562 | Content-Type: text/plain; charset="us-ascii" | |
2562 | MIME-Version: 1.0 |
|
2563 | MIME-Version: 1.0 | |
2563 | Content-Transfer-Encoding: 7bit |
|
2564 | Content-Transfer-Encoding: 7bit | |
2564 | Subject: [PATCH] test |
|
2565 | Subject: [PATCH] test | |
2565 | X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 |
|
2566 | X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 | |
2566 | X-Mercurial-Series-Index: 1 |
|
2567 | X-Mercurial-Series-Index: 1 | |
2567 | X-Mercurial-Series-Total: 1 |
|
2568 | X-Mercurial-Series-Total: 1 | |
2568 | Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob) |
|
2569 | Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob) | |
2569 | X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob) |
|
2570 | X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob) | |
2570 | User-Agent: Mercurial-patchbomb/* (glob) |
|
2571 | User-Agent: Mercurial-patchbomb/* (glob) | |
2571 | Date: Tue, 01 Jan 1980 00:01:00 +0000 |
|
2572 | Date: Tue, 01 Jan 1980 00:01:00 +0000 | |
2572 | From: test |
|
2573 | From: test | |
2573 | To: foo |
|
2574 | To: foo | |
2574 |
|
2575 | |||
2575 | # HG changeset patch |
|
2576 | # HG changeset patch | |
2576 | # User test |
|
2577 | # User test | |
2577 | # Date 4 0 |
|
2578 | # Date 4 0 | |
2578 | # Thu Jan 01 00:00:04 1970 +0000 |
|
2579 | # Thu Jan 01 00:00:04 1970 +0000 | |
2579 | # Branch test |
|
2580 | # Branch test | |
2580 | # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 |
|
2581 | # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268 | |
2581 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 |
|
2582 | # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9 | |
2582 | d |
|
2583 | d | |
2583 |
|
2584 | |||
2584 | diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d |
|
2585 | diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d | |
2585 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
2586 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
2586 | +++ b/d Thu Jan 01 00:00:04 1970 +0000 |
|
2587 | +++ b/d Thu Jan 01 00:00:04 1970 +0000 | |
2587 | @@ -0,0 +1,1 @@ |
|
2588 | @@ -0,0 +1,1 @@ | |
2588 | +d |
|
2589 | +d | |
2589 |
|
2590 | |||
2590 |
|
2591 | |||
2591 | $ cd .. |
|
2592 | $ cd .. |
@@ -1,400 +1,410 | |||||
1 | Create configuration |
|
1 | Create configuration | |
2 |
|
2 | |||
3 | $ echo "[ui]" >> $HGRCPATH |
|
3 | $ echo "[ui]" >> $HGRCPATH | |
4 | $ echo "interactive=true" >> $HGRCPATH |
|
4 | $ echo "interactive=true" >> $HGRCPATH | |
5 |
|
5 | |||
6 | help record (no record) |
|
6 | help record (no record) | |
7 |
|
7 | |||
8 | $ hg help record |
|
8 | $ hg help record | |
9 | record extension - commands to interactively select changes for |
|
9 | record extension - commands to interactively select changes for | |
10 | commit/qrefresh |
|
10 | commit/qrefresh | |
11 |
|
11 | |||
12 | (use "hg help extensions" for information on enabling extensions) |
|
12 | (use "hg help extensions" for information on enabling extensions) | |
13 |
|
13 | |||
14 | help qrecord (no record) |
|
14 | help qrecord (no record) | |
15 |
|
15 | |||
16 | $ hg help qrecord |
|
16 | $ hg help qrecord | |
17 | 'qrecord' is provided by the following extension: |
|
17 | 'qrecord' is provided by the following extension: | |
18 |
|
18 | |||
19 | record commands to interactively select changes for commit/qrefresh |
|
19 | record commands to interactively select changes for commit/qrefresh | |
20 |
|
20 | |||
21 | (use "hg help extensions" for information on enabling extensions) |
|
21 | (use "hg help extensions" for information on enabling extensions) | |
22 |
|
22 | |||
23 | $ echo "[extensions]" >> $HGRCPATH |
|
23 | $ echo "[extensions]" >> $HGRCPATH | |
24 | $ echo "record=" >> $HGRCPATH |
|
24 | $ echo "record=" >> $HGRCPATH | |
25 |
|
25 | |||
26 | help record (record) |
|
26 | help record (record) | |
27 |
|
27 | |||
28 | $ hg help record |
|
28 | $ hg help record | |
29 | hg record [OPTION]... [FILE]... |
|
29 | hg record [OPTION]... [FILE]... | |
30 |
|
30 | |||
31 | interactively select changes to commit |
|
31 | interactively select changes to commit | |
32 |
|
32 | |||
33 | If a list of files is omitted, all changes reported by "hg status" will be |
|
33 | If a list of files is omitted, all changes reported by "hg status" will be | |
34 | candidates for recording. |
|
34 | candidates for recording. | |
35 |
|
35 | |||
36 | See "hg help dates" for a list of formats valid for -d/--date. |
|
36 | See "hg help dates" for a list of formats valid for -d/--date. | |
37 |
|
37 | |||
38 | You will be prompted for whether to record changes to each modified file, |
|
38 | You will be prompted for whether to record changes to each modified file, | |
39 | and for files with multiple changes, for each change to use. For each |
|
39 | and for files with multiple changes, for each change to use. For each | |
40 | query, the following responses are possible: |
|
40 | query, the following responses are possible: | |
41 |
|
41 | |||
42 | y - record this change |
|
42 | y - record this change | |
43 | n - skip this change |
|
43 | n - skip this change | |
44 | e - edit this change manually |
|
44 | e - edit this change manually | |
45 |
|
45 | |||
46 | s - skip remaining changes to this file |
|
46 | s - skip remaining changes to this file | |
47 | f - record remaining changes to this file |
|
47 | f - record remaining changes to this file | |
48 |
|
48 | |||
49 | d - done, skip remaining changes and files |
|
49 | d - done, skip remaining changes and files | |
50 | a - record all changes to all remaining files |
|
50 | a - record all changes to all remaining files | |
51 | q - quit, recording no changes |
|
51 | q - quit, recording no changes | |
52 |
|
52 | |||
53 | ? - display help |
|
53 | ? - display help | |
54 |
|
54 | |||
55 | This command is not available when committing a merge. |
|
55 | This command is not available when committing a merge. | |
56 |
|
56 | |||
57 | options ([+] can be repeated): |
|
57 | options ([+] can be repeated): | |
58 |
|
58 | |||
59 | -A --addremove mark new/missing files as added/removed before |
|
59 | -A --addremove mark new/missing files as added/removed before | |
60 | committing |
|
60 | committing | |
61 | --close-branch mark a branch as closed, hiding it from the branch |
|
61 | --close-branch mark a branch as closed, hiding it from the branch | |
62 | list |
|
62 | list | |
63 | --amend amend the parent of the working dir |
|
63 | --amend amend the parent of the working dir | |
64 | -s --secret use the secret phase for committing |
|
64 | -s --secret use the secret phase for committing | |
65 | -e --edit invoke editor on commit messages |
|
65 | -e --edit invoke editor on commit messages | |
66 | -I --include PATTERN [+] include names matching the given patterns |
|
66 | -I --include PATTERN [+] include names matching the given patterns | |
67 | -X --exclude PATTERN [+] exclude names matching the given patterns |
|
67 | -X --exclude PATTERN [+] exclude names matching the given patterns | |
68 | -m --message TEXT use text as commit message |
|
68 | -m --message TEXT use text as commit message | |
69 | -l --logfile FILE read commit message from file |
|
69 | -l --logfile FILE read commit message from file | |
70 | -d --date DATE record the specified date as commit date |
|
70 | -d --date DATE record the specified date as commit date | |
71 | -u --user USER record the specified user as committer |
|
71 | -u --user USER record the specified user as committer | |
72 | -S --subrepos recurse into subrepositories |
|
72 | -S --subrepos recurse into subrepositories | |
73 | -w --ignore-all-space ignore white space when comparing lines |
|
73 | -w --ignore-all-space ignore white space when comparing lines | |
74 | -b --ignore-space-change ignore changes in the amount of white space |
|
74 | -b --ignore-space-change ignore changes in the amount of white space | |
75 | -B --ignore-blank-lines ignore changes whose lines are all blank |
|
75 | -B --ignore-blank-lines ignore changes whose lines are all blank | |
76 |
|
76 | |||
77 | (some details hidden, use --verbose to show complete help) |
|
77 | (some details hidden, use --verbose to show complete help) | |
78 |
|
78 | |||
79 | help (no mq, so no qrecord) |
|
79 | help (no mq, so no qrecord) | |
80 |
|
80 | |||
81 | $ hg help qrecord |
|
81 | $ hg help qrecord | |
82 | hg qrecord [OPTION]... PATCH [FILE]... |
|
82 | hg qrecord [OPTION]... PATCH [FILE]... | |
83 |
|
83 | |||
84 | interactively record a new patch |
|
84 | interactively record a new patch | |
85 |
|
85 | |||
86 | See "hg help qnew" & "hg help record" for more information and usage. |
|
86 | See "hg help qnew" & "hg help record" for more information and usage. | |
87 |
|
87 | |||
88 | (some details hidden, use --verbose to show complete help) |
|
88 | (some details hidden, use --verbose to show complete help) | |
89 |
|
89 | |||
90 | $ hg init a |
|
90 | $ hg init a | |
91 |
|
91 | |||
92 | qrecord (mq not present) |
|
92 | qrecord (mq not present) | |
93 |
|
93 | |||
94 | $ hg -R a qrecord |
|
94 | $ hg -R a qrecord | |
95 | hg qrecord: invalid arguments |
|
95 | hg qrecord: invalid arguments | |
96 | hg qrecord [OPTION]... PATCH [FILE]... |
|
96 | hg qrecord [OPTION]... PATCH [FILE]... | |
97 |
|
97 | |||
98 | interactively record a new patch |
|
98 | interactively record a new patch | |
99 |
|
99 | |||
100 | (use "hg qrecord -h" to show more help) |
|
100 | (use "hg qrecord -h" to show more help) | |
101 | [255] |
|
101 | [255] | |
102 |
|
102 | |||
103 | qrecord patch (mq not present) |
|
103 | qrecord patch (mq not present) | |
104 |
|
104 | |||
105 | $ hg -R a qrecord patch |
|
105 | $ hg -R a qrecord patch | |
106 | abort: 'mq' extension not loaded |
|
106 | abort: 'mq' extension not loaded | |
107 | [255] |
|
107 | [255] | |
108 |
|
108 | |||
109 | help (bad mq) |
|
109 | help (bad mq) | |
110 |
|
110 | |||
111 | $ echo "mq=nonexistent" >> $HGRCPATH |
|
111 | $ echo "mq=nonexistent" >> $HGRCPATH | |
112 | $ hg help qrecord |
|
112 | $ hg help qrecord | |
113 | *** failed to import extension mq from nonexistent: [Errno *] * (glob) |
|
113 | *** failed to import extension mq from nonexistent: [Errno *] * (glob) | |
114 | hg qrecord [OPTION]... PATCH [FILE]... |
|
114 | hg qrecord [OPTION]... PATCH [FILE]... | |
115 |
|
115 | |||
116 | interactively record a new patch |
|
116 | interactively record a new patch | |
117 |
|
117 | |||
118 | See "hg help qnew" & "hg help record" for more information and usage. |
|
118 | See "hg help qnew" & "hg help record" for more information and usage. | |
119 |
|
119 | |||
120 | (some details hidden, use --verbose to show complete help) |
|
120 | (some details hidden, use --verbose to show complete help) | |
121 |
|
121 | |||
122 | help (mq present) |
|
122 | help (mq present) | |
123 |
|
123 | |||
124 | $ sed 's/mq=nonexistent/mq=/' $HGRCPATH > hgrc.tmp |
|
124 | $ sed 's/mq=nonexistent/mq=/' $HGRCPATH > hgrc.tmp | |
125 | $ mv hgrc.tmp $HGRCPATH |
|
125 | $ mv hgrc.tmp $HGRCPATH | |
126 |
|
126 | |||
127 | $ hg help qrecord |
|
127 | $ hg help qrecord | |
128 | hg qrecord [OPTION]... PATCH [FILE]... |
|
128 | hg qrecord [OPTION]... PATCH [FILE]... | |
129 |
|
129 | |||
130 | interactively record a new patch |
|
130 | interactively record a new patch | |
131 |
|
131 | |||
132 | See "hg help qnew" & "hg help record" for more information and usage. |
|
132 | See "hg help qnew" & "hg help record" for more information and usage. | |
133 |
|
133 | |||
134 | options ([+] can be repeated): |
|
134 | options ([+] can be repeated): | |
135 |
|
135 | |||
136 | -e --edit invoke editor on commit messages |
|
136 | -e --edit invoke editor on commit messages | |
137 | -g --git use git extended diff format |
|
137 | -g --git use git extended diff format | |
138 | -U --currentuser add "From: <current user>" to patch |
|
138 | -U --currentuser add "From: <current user>" to patch | |
139 | -u --user USER add "From: <USER>" to patch |
|
139 | -u --user USER add "From: <USER>" to patch | |
140 | -D --currentdate add "Date: <current date>" to patch |
|
140 | -D --currentdate add "Date: <current date>" to patch | |
141 | -d --date DATE add "Date: <DATE>" to patch |
|
141 | -d --date DATE add "Date: <DATE>" to patch | |
142 | -I --include PATTERN [+] include names matching the given patterns |
|
142 | -I --include PATTERN [+] include names matching the given patterns | |
143 | -X --exclude PATTERN [+] exclude names matching the given patterns |
|
143 | -X --exclude PATTERN [+] exclude names matching the given patterns | |
144 | -m --message TEXT use text as commit message |
|
144 | -m --message TEXT use text as commit message | |
145 | -l --logfile FILE read commit message from file |
|
145 | -l --logfile FILE read commit message from file | |
146 | -w --ignore-all-space ignore white space when comparing lines |
|
146 | -w --ignore-all-space ignore white space when comparing lines | |
147 | -b --ignore-space-change ignore changes in the amount of white space |
|
147 | -b --ignore-space-change ignore changes in the amount of white space | |
148 | -B --ignore-blank-lines ignore changes whose lines are all blank |
|
148 | -B --ignore-blank-lines ignore changes whose lines are all blank | |
149 | --mq operate on patch repository |
|
149 | --mq operate on patch repository | |
150 |
|
150 | |||
151 | (some details hidden, use --verbose to show complete help) |
|
151 | (some details hidden, use --verbose to show complete help) | |
152 |
|
152 | |||
153 | $ cd a |
|
153 | $ cd a | |
154 |
|
154 | |||
155 | Base commit |
|
155 | Base commit | |
156 |
|
156 | |||
157 | $ cat > 1.txt <<EOF |
|
157 | $ cat > 1.txt <<EOF | |
158 | > 1 |
|
158 | > 1 | |
159 | > 2 |
|
159 | > 2 | |
160 | > 3 |
|
160 | > 3 | |
161 | > 4 |
|
161 | > 4 | |
162 | > 5 |
|
162 | > 5 | |
163 | > EOF |
|
163 | > EOF | |
164 | $ cat > 2.txt <<EOF |
|
164 | $ cat > 2.txt <<EOF | |
165 | > a |
|
165 | > a | |
166 | > b |
|
166 | > b | |
167 | > c |
|
167 | > c | |
168 | > d |
|
168 | > d | |
169 | > e |
|
169 | > e | |
170 | > f |
|
170 | > f | |
171 | > EOF |
|
171 | > EOF | |
172 |
|
172 | |||
173 | $ mkdir dir |
|
173 | $ mkdir dir | |
174 | $ cat > dir/a.txt <<EOF |
|
174 | $ cat > dir/a.txt <<EOF | |
175 | > hello world |
|
175 | > hello world | |
176 | > |
|
176 | > | |
177 | > someone |
|
177 | > someone | |
178 | > up |
|
178 | > up | |
179 | > there |
|
179 | > there | |
180 | > loves |
|
180 | > loves | |
181 | > me |
|
181 | > me | |
182 | > EOF |
|
182 | > EOF | |
183 |
|
183 | |||
184 | $ hg add 1.txt 2.txt dir/a.txt |
|
184 | $ hg add 1.txt 2.txt dir/a.txt | |
185 | $ hg commit -m 'initial checkin' |
|
185 | $ hg commit -m 'initial checkin' | |
186 |
|
186 | |||
187 | Changing files |
|
187 | Changing files | |
188 |
|
188 | |||
189 | $ sed -e 's/2/2 2/;s/4/4 4/' 1.txt > 1.txt.new |
|
189 | $ sed -e 's/2/2 2/;s/4/4 4/' 1.txt > 1.txt.new | |
190 | $ sed -e 's/b/b b/' 2.txt > 2.txt.new |
|
190 | $ sed -e 's/b/b b/' 2.txt > 2.txt.new | |
191 | $ sed -e 's/hello world/hello world!/' dir/a.txt > dir/a.txt.new |
|
191 | $ sed -e 's/hello world/hello world!/' dir/a.txt > dir/a.txt.new | |
192 |
|
192 | |||
193 | $ mv -f 1.txt.new 1.txt |
|
193 | $ mv -f 1.txt.new 1.txt | |
194 | $ mv -f 2.txt.new 2.txt |
|
194 | $ mv -f 2.txt.new 2.txt | |
195 | $ mv -f dir/a.txt.new dir/a.txt |
|
195 | $ mv -f dir/a.txt.new dir/a.txt | |
196 |
|
196 | |||
197 | Whole diff |
|
197 | Whole diff | |
198 |
|
198 | |||
199 | $ hg diff --nodates |
|
199 | $ hg diff --nodates | |
200 | diff -r 1057167b20ef 1.txt |
|
200 | diff -r 1057167b20ef 1.txt | |
201 | --- a/1.txt |
|
201 | --- a/1.txt | |
202 | +++ b/1.txt |
|
202 | +++ b/1.txt | |
203 | @@ -1,5 +1,5 @@ |
|
203 | @@ -1,5 +1,5 @@ | |
204 | 1 |
|
204 | 1 | |
205 | -2 |
|
205 | -2 | |
206 | +2 2 |
|
206 | +2 2 | |
207 | 3 |
|
207 | 3 | |
208 | -4 |
|
208 | -4 | |
209 | +4 4 |
|
209 | +4 4 | |
210 | 5 |
|
210 | 5 | |
211 | diff -r 1057167b20ef 2.txt |
|
211 | diff -r 1057167b20ef 2.txt | |
212 | --- a/2.txt |
|
212 | --- a/2.txt | |
213 | +++ b/2.txt |
|
213 | +++ b/2.txt | |
214 | @@ -1,5 +1,5 @@ |
|
214 | @@ -1,5 +1,5 @@ | |
215 | a |
|
215 | a | |
216 | -b |
|
216 | -b | |
217 | +b b |
|
217 | +b b | |
218 | c |
|
218 | c | |
219 | d |
|
219 | d | |
220 | e |
|
220 | e | |
221 | diff -r 1057167b20ef dir/a.txt |
|
221 | diff -r 1057167b20ef dir/a.txt | |
222 | --- a/dir/a.txt |
|
222 | --- a/dir/a.txt | |
223 | +++ b/dir/a.txt |
|
223 | +++ b/dir/a.txt | |
224 | @@ -1,4 +1,4 @@ |
|
224 | @@ -1,4 +1,4 @@ | |
225 | -hello world |
|
225 | -hello world | |
226 | +hello world! |
|
226 | +hello world! | |
227 |
|
227 | |||
228 | someone |
|
228 | someone | |
229 | up |
|
229 | up | |
230 |
|
230 | |||
231 | qrecord with bad patch name, should abort before prompting |
|
231 | qrecord with bad patch name, should abort before prompting | |
232 |
|
232 | |||
233 | $ hg qrecord .hg |
|
233 | $ hg qrecord .hg | |
234 | abort: patch name cannot begin with ".hg" |
|
234 | abort: patch name cannot begin with ".hg" | |
235 | [255] |
|
235 | [255] | |
236 |
|
236 | |||
237 | qrecord a.patch |
|
237 | qrecord a.patch | |
238 |
|
238 | |||
239 | $ hg qrecord -d '0 0' -m aaa a.patch <<EOF |
|
239 | $ hg qrecord -d '0 0' -m aaa a.patch <<EOF | |
240 | > y |
|
240 | > y | |
241 | > y |
|
241 | > y | |
242 | > n |
|
242 | > n | |
243 | > y |
|
243 | > y | |
244 | > y |
|
244 | > y | |
245 | > n |
|
245 | > n | |
246 | > EOF |
|
246 | > EOF | |
247 | diff --git a/1.txt b/1.txt |
|
247 | diff --git a/1.txt b/1.txt | |
248 | 2 hunks, 2 lines changed |
|
248 | 2 hunks, 2 lines changed | |
249 | examine changes to '1.txt'? [Ynesfdaq?] |
|
249 | examine changes to '1.txt'? [Ynesfdaq?] y | |
|
250 | ||||
250 | @@ -1,3 +1,3 @@ |
|
251 | @@ -1,3 +1,3 @@ | |
251 | 1 |
|
252 | 1 | |
252 | -2 |
|
253 | -2 | |
253 | +2 2 |
|
254 | +2 2 | |
254 | 3 |
|
255 | 3 | |
255 | record change 1/4 to '1.txt'? [Ynesfdaq?] |
|
256 | record change 1/4 to '1.txt'? [Ynesfdaq?] y | |
|
257 | ||||
256 | @@ -3,3 +3,3 @@ |
|
258 | @@ -3,3 +3,3 @@ | |
257 | 3 |
|
259 | 3 | |
258 | -4 |
|
260 | -4 | |
259 | +4 4 |
|
261 | +4 4 | |
260 | 5 |
|
262 | 5 | |
261 | record change 2/4 to '1.txt'? [Ynesfdaq?] |
|
263 | record change 2/4 to '1.txt'? [Ynesfdaq?] n | |
|
264 | ||||
262 | diff --git a/2.txt b/2.txt |
|
265 | diff --git a/2.txt b/2.txt | |
263 | 1 hunks, 1 lines changed |
|
266 | 1 hunks, 1 lines changed | |
264 | examine changes to '2.txt'? [Ynesfdaq?] |
|
267 | examine changes to '2.txt'? [Ynesfdaq?] y | |
|
268 | ||||
265 | @@ -1,5 +1,5 @@ |
|
269 | @@ -1,5 +1,5 @@ | |
266 | a |
|
270 | a | |
267 | -b |
|
271 | -b | |
268 | +b b |
|
272 | +b b | |
269 | c |
|
273 | c | |
270 | d |
|
274 | d | |
271 | e |
|
275 | e | |
272 | record change 3/4 to '2.txt'? [Ynesfdaq?] |
|
276 | record change 3/4 to '2.txt'? [Ynesfdaq?] y | |
|
277 | ||||
273 | diff --git a/dir/a.txt b/dir/a.txt |
|
278 | diff --git a/dir/a.txt b/dir/a.txt | |
274 | 1 hunks, 1 lines changed |
|
279 | 1 hunks, 1 lines changed | |
275 | examine changes to 'dir/a.txt'? [Ynesfdaq?] |
|
280 | examine changes to 'dir/a.txt'? [Ynesfdaq?] n | |
|
281 | ||||
276 |
|
282 | |||
277 | After qrecord a.patch 'tip'" |
|
283 | After qrecord a.patch 'tip'" | |
278 |
|
284 | |||
279 | $ hg tip -p |
|
285 | $ hg tip -p | |
280 | changeset: 1:5d1ca63427ee |
|
286 | changeset: 1:5d1ca63427ee | |
281 | tag: a.patch |
|
287 | tag: a.patch | |
282 | tag: qbase |
|
288 | tag: qbase | |
283 | tag: qtip |
|
289 | tag: qtip | |
284 | tag: tip |
|
290 | tag: tip | |
285 | user: test |
|
291 | user: test | |
286 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
292 | date: Thu Jan 01 00:00:00 1970 +0000 | |
287 | summary: aaa |
|
293 | summary: aaa | |
288 |
|
294 | |||
289 | diff -r 1057167b20ef -r 5d1ca63427ee 1.txt |
|
295 | diff -r 1057167b20ef -r 5d1ca63427ee 1.txt | |
290 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
296 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
291 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
297 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
292 | @@ -1,5 +1,5 @@ |
|
298 | @@ -1,5 +1,5 @@ | |
293 | 1 |
|
299 | 1 | |
294 | -2 |
|
300 | -2 | |
295 | +2 2 |
|
301 | +2 2 | |
296 | 3 |
|
302 | 3 | |
297 | 4 |
|
303 | 4 | |
298 | 5 |
|
304 | 5 | |
299 | diff -r 1057167b20ef -r 5d1ca63427ee 2.txt |
|
305 | diff -r 1057167b20ef -r 5d1ca63427ee 2.txt | |
300 | --- a/2.txt Thu Jan 01 00:00:00 1970 +0000 |
|
306 | --- a/2.txt Thu Jan 01 00:00:00 1970 +0000 | |
301 | +++ b/2.txt Thu Jan 01 00:00:00 1970 +0000 |
|
307 | +++ b/2.txt Thu Jan 01 00:00:00 1970 +0000 | |
302 | @@ -1,5 +1,5 @@ |
|
308 | @@ -1,5 +1,5 @@ | |
303 | a |
|
309 | a | |
304 | -b |
|
310 | -b | |
305 | +b b |
|
311 | +b b | |
306 | c |
|
312 | c | |
307 | d |
|
313 | d | |
308 | e |
|
314 | e | |
309 |
|
315 | |||
310 |
|
316 | |||
311 | After qrecord a.patch 'diff'" |
|
317 | After qrecord a.patch 'diff'" | |
312 |
|
318 | |||
313 | $ hg diff --nodates |
|
319 | $ hg diff --nodates | |
314 | diff -r 5d1ca63427ee 1.txt |
|
320 | diff -r 5d1ca63427ee 1.txt | |
315 | --- a/1.txt |
|
321 | --- a/1.txt | |
316 | +++ b/1.txt |
|
322 | +++ b/1.txt | |
317 | @@ -1,5 +1,5 @@ |
|
323 | @@ -1,5 +1,5 @@ | |
318 | 1 |
|
324 | 1 | |
319 | 2 2 |
|
325 | 2 2 | |
320 | 3 |
|
326 | 3 | |
321 | -4 |
|
327 | -4 | |
322 | +4 4 |
|
328 | +4 4 | |
323 | 5 |
|
329 | 5 | |
324 | diff -r 5d1ca63427ee dir/a.txt |
|
330 | diff -r 5d1ca63427ee dir/a.txt | |
325 | --- a/dir/a.txt |
|
331 | --- a/dir/a.txt | |
326 | +++ b/dir/a.txt |
|
332 | +++ b/dir/a.txt | |
327 | @@ -1,4 +1,4 @@ |
|
333 | @@ -1,4 +1,4 @@ | |
328 | -hello world |
|
334 | -hello world | |
329 | +hello world! |
|
335 | +hello world! | |
330 |
|
336 | |||
331 | someone |
|
337 | someone | |
332 | up |
|
338 | up | |
333 |
|
339 | |||
334 | qrecord b.patch |
|
340 | qrecord b.patch | |
335 |
|
341 | |||
336 | $ hg qrecord -d '0 0' -m bbb b.patch <<EOF |
|
342 | $ hg qrecord -d '0 0' -m bbb b.patch <<EOF | |
337 | > y |
|
343 | > y | |
338 | > y |
|
344 | > y | |
339 | > y |
|
345 | > y | |
340 | > y |
|
346 | > y | |
341 | > EOF |
|
347 | > EOF | |
342 | diff --git a/1.txt b/1.txt |
|
348 | diff --git a/1.txt b/1.txt | |
343 | 1 hunks, 1 lines changed |
|
349 | 1 hunks, 1 lines changed | |
344 | examine changes to '1.txt'? [Ynesfdaq?] |
|
350 | examine changes to '1.txt'? [Ynesfdaq?] y | |
|
351 | ||||
345 | @@ -1,5 +1,5 @@ |
|
352 | @@ -1,5 +1,5 @@ | |
346 | 1 |
|
353 | 1 | |
347 | 2 2 |
|
354 | 2 2 | |
348 | 3 |
|
355 | 3 | |
349 | -4 |
|
356 | -4 | |
350 | +4 4 |
|
357 | +4 4 | |
351 | 5 |
|
358 | 5 | |
352 | record change 1/2 to '1.txt'? [Ynesfdaq?] |
|
359 | record change 1/2 to '1.txt'? [Ynesfdaq?] y | |
|
360 | ||||
353 | diff --git a/dir/a.txt b/dir/a.txt |
|
361 | diff --git a/dir/a.txt b/dir/a.txt | |
354 | 1 hunks, 1 lines changed |
|
362 | 1 hunks, 1 lines changed | |
355 | examine changes to 'dir/a.txt'? [Ynesfdaq?] |
|
363 | examine changes to 'dir/a.txt'? [Ynesfdaq?] y | |
|
364 | ||||
356 | @@ -1,4 +1,4 @@ |
|
365 | @@ -1,4 +1,4 @@ | |
357 | -hello world |
|
366 | -hello world | |
358 | +hello world! |
|
367 | +hello world! | |
359 |
|
368 | |||
360 | someone |
|
369 | someone | |
361 | up |
|
370 | up | |
362 | record change 2/2 to 'dir/a.txt'? [Ynesfdaq?] |
|
371 | record change 2/2 to 'dir/a.txt'? [Ynesfdaq?] y | |
|
372 | ||||
363 |
|
373 | |||
364 | After qrecord b.patch 'tip' |
|
374 | After qrecord b.patch 'tip' | |
365 |
|
375 | |||
366 | $ hg tip -p |
|
376 | $ hg tip -p | |
367 | changeset: 2:b056198bf878 |
|
377 | changeset: 2:b056198bf878 | |
368 | tag: b.patch |
|
378 | tag: b.patch | |
369 | tag: qtip |
|
379 | tag: qtip | |
370 | tag: tip |
|
380 | tag: tip | |
371 | user: test |
|
381 | user: test | |
372 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
382 | date: Thu Jan 01 00:00:00 1970 +0000 | |
373 | summary: bbb |
|
383 | summary: bbb | |
374 |
|
384 | |||
375 | diff -r 5d1ca63427ee -r b056198bf878 1.txt |
|
385 | diff -r 5d1ca63427ee -r b056198bf878 1.txt | |
376 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
386 | --- a/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
377 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 |
|
387 | +++ b/1.txt Thu Jan 01 00:00:00 1970 +0000 | |
378 | @@ -1,5 +1,5 @@ |
|
388 | @@ -1,5 +1,5 @@ | |
379 | 1 |
|
389 | 1 | |
380 | 2 2 |
|
390 | 2 2 | |
381 | 3 |
|
391 | 3 | |
382 | -4 |
|
392 | -4 | |
383 | +4 4 |
|
393 | +4 4 | |
384 | 5 |
|
394 | 5 | |
385 | diff -r 5d1ca63427ee -r b056198bf878 dir/a.txt |
|
395 | diff -r 5d1ca63427ee -r b056198bf878 dir/a.txt | |
386 | --- a/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 |
|
396 | --- a/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 | |
387 | +++ b/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 |
|
397 | +++ b/dir/a.txt Thu Jan 01 00:00:00 1970 +0000 | |
388 | @@ -1,4 +1,4 @@ |
|
398 | @@ -1,4 +1,4 @@ | |
389 | -hello world |
|
399 | -hello world | |
390 | +hello world! |
|
400 | +hello world! | |
391 |
|
401 | |||
392 | someone |
|
402 | someone | |
393 | up |
|
403 | up | |
394 |
|
404 | |||
395 |
|
405 | |||
396 | After qrecord b.patch 'diff' |
|
406 | After qrecord b.patch 'diff' | |
397 |
|
407 | |||
398 | $ hg diff --nodates |
|
408 | $ hg diff --nodates | |
399 |
|
409 | |||
400 | $ cd .. |
|
410 | $ cd .. |
@@ -1,1302 +1,1371 | |||||
1 | Set up a repo |
|
1 | Set up a repo | |
2 |
|
2 | |||
3 | $ echo "[ui]" >> $HGRCPATH |
|
3 | $ echo "[ui]" >> $HGRCPATH | |
4 | $ echo "interactive=true" >> $HGRCPATH |
|
4 | $ echo "interactive=true" >> $HGRCPATH | |
5 | $ echo "[extensions]" >> $HGRCPATH |
|
5 | $ echo "[extensions]" >> $HGRCPATH | |
6 | $ echo "record=" >> $HGRCPATH |
|
6 | $ echo "record=" >> $HGRCPATH | |
7 |
|
7 | |||
8 | $ hg init a |
|
8 | $ hg init a | |
9 | $ cd a |
|
9 | $ cd a | |
10 |
|
10 | |||
11 | Select no files |
|
11 | Select no files | |
12 |
|
12 | |||
13 | $ touch empty-rw |
|
13 | $ touch empty-rw | |
14 | $ hg add empty-rw |
|
14 | $ hg add empty-rw | |
15 |
|
15 | |||
16 | $ hg record empty-rw<<EOF |
|
16 | $ hg record empty-rw<<EOF | |
17 | > n |
|
17 | > n | |
18 | > EOF |
|
18 | > EOF | |
19 | diff --git a/empty-rw b/empty-rw |
|
19 | diff --git a/empty-rw b/empty-rw | |
20 | new file mode 100644 |
|
20 | new file mode 100644 | |
21 | examine changes to 'empty-rw'? [Ynesfdaq?] |
|
21 | examine changes to 'empty-rw'? [Ynesfdaq?] n | |
|
22 | ||||
22 | no changes to record |
|
23 | no changes to record | |
23 |
|
24 | |||
24 | $ hg tip -p |
|
25 | $ hg tip -p | |
25 | changeset: -1:000000000000 |
|
26 | changeset: -1:000000000000 | |
26 | tag: tip |
|
27 | tag: tip | |
27 | user: |
|
28 | user: | |
28 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
29 | date: Thu Jan 01 00:00:00 1970 +0000 | |
29 |
|
30 | |||
30 |
|
31 | |||
31 |
|
32 | |||
32 | Select files but no hunks |
|
33 | Select files but no hunks | |
33 |
|
34 | |||
34 | $ hg record empty-rw<<EOF |
|
35 | $ hg record empty-rw<<EOF | |
35 | > y |
|
36 | > y | |
36 | > n |
|
37 | > n | |
37 | > EOF |
|
38 | > EOF | |
38 | diff --git a/empty-rw b/empty-rw |
|
39 | diff --git a/empty-rw b/empty-rw | |
39 | new file mode 100644 |
|
40 | new file mode 100644 | |
40 | examine changes to 'empty-rw'? [Ynesfdaq?] |
|
41 | examine changes to 'empty-rw'? [Ynesfdaq?] y | |
|
42 | ||||
41 | abort: empty commit message |
|
43 | abort: empty commit message | |
42 | [255] |
|
44 | [255] | |
43 |
|
45 | |||
44 | $ hg tip -p |
|
46 | $ hg tip -p | |
45 | changeset: -1:000000000000 |
|
47 | changeset: -1:000000000000 | |
46 | tag: tip |
|
48 | tag: tip | |
47 | user: |
|
49 | user: | |
48 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
50 | date: Thu Jan 01 00:00:00 1970 +0000 | |
49 |
|
51 | |||
50 |
|
52 | |||
51 |
|
53 | |||
52 | Record empty file |
|
54 | Record empty file | |
53 |
|
55 | |||
54 | $ hg record -d '0 0' -m empty empty-rw<<EOF |
|
56 | $ hg record -d '0 0' -m empty empty-rw<<EOF | |
55 | > y |
|
57 | > y | |
56 | > y |
|
58 | > y | |
57 | > EOF |
|
59 | > EOF | |
58 | diff --git a/empty-rw b/empty-rw |
|
60 | diff --git a/empty-rw b/empty-rw | |
59 | new file mode 100644 |
|
61 | new file mode 100644 | |
60 | examine changes to 'empty-rw'? [Ynesfdaq?] |
|
62 | examine changes to 'empty-rw'? [Ynesfdaq?] y | |
|
63 | ||||
61 |
|
64 | |||
62 | $ hg tip -p |
|
65 | $ hg tip -p | |
63 | changeset: 0:c0708cf4e46e |
|
66 | changeset: 0:c0708cf4e46e | |
64 | tag: tip |
|
67 | tag: tip | |
65 | user: test |
|
68 | user: test | |
66 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
69 | date: Thu Jan 01 00:00:00 1970 +0000 | |
67 | summary: empty |
|
70 | summary: empty | |
68 |
|
71 | |||
69 |
|
72 | |||
70 |
|
73 | |||
71 | Summary shows we updated to the new cset |
|
74 | Summary shows we updated to the new cset | |
72 |
|
75 | |||
73 | $ hg summary |
|
76 | $ hg summary | |
74 | parent: 0:c0708cf4e46e tip |
|
77 | parent: 0:c0708cf4e46e tip | |
75 | empty |
|
78 | empty | |
76 | branch: default |
|
79 | branch: default | |
77 | commit: (clean) |
|
80 | commit: (clean) | |
78 | update: (current) |
|
81 | update: (current) | |
79 |
|
82 | |||
80 | Rename empty file |
|
83 | Rename empty file | |
81 |
|
84 | |||
82 | $ hg mv empty-rw empty-rename |
|
85 | $ hg mv empty-rw empty-rename | |
83 | $ hg record -d '1 0' -m rename<<EOF |
|
86 | $ hg record -d '1 0' -m rename<<EOF | |
84 | > y |
|
87 | > y | |
85 | > EOF |
|
88 | > EOF | |
86 | diff --git a/empty-rw b/empty-rename |
|
89 | diff --git a/empty-rw b/empty-rename | |
87 | rename from empty-rw |
|
90 | rename from empty-rw | |
88 | rename to empty-rename |
|
91 | rename to empty-rename | |
89 | examine changes to 'empty-rw' and 'empty-rename'? [Ynesfdaq?] |
|
92 | examine changes to 'empty-rw' and 'empty-rename'? [Ynesfdaq?] y | |
|
93 | ||||
90 |
|
94 | |||
91 | $ hg tip -p |
|
95 | $ hg tip -p | |
92 | changeset: 1:d695e8dcb197 |
|
96 | changeset: 1:d695e8dcb197 | |
93 | tag: tip |
|
97 | tag: tip | |
94 | user: test |
|
98 | user: test | |
95 | date: Thu Jan 01 00:00:01 1970 +0000 |
|
99 | date: Thu Jan 01 00:00:01 1970 +0000 | |
96 | summary: rename |
|
100 | summary: rename | |
97 |
|
101 | |||
98 |
|
102 | |||
99 |
|
103 | |||
100 | Copy empty file |
|
104 | Copy empty file | |
101 |
|
105 | |||
102 | $ hg cp empty-rename empty-copy |
|
106 | $ hg cp empty-rename empty-copy | |
103 | $ hg record -d '2 0' -m copy<<EOF |
|
107 | $ hg record -d '2 0' -m copy<<EOF | |
104 | > y |
|
108 | > y | |
105 | > EOF |
|
109 | > EOF | |
106 | diff --git a/empty-rename b/empty-copy |
|
110 | diff --git a/empty-rename b/empty-copy | |
107 | copy from empty-rename |
|
111 | copy from empty-rename | |
108 | copy to empty-copy |
|
112 | copy to empty-copy | |
109 | examine changes to 'empty-rename' and 'empty-copy'? [Ynesfdaq?] |
|
113 | examine changes to 'empty-rename' and 'empty-copy'? [Ynesfdaq?] y | |
|
114 | ||||
110 |
|
115 | |||
111 | $ hg tip -p |
|
116 | $ hg tip -p | |
112 | changeset: 2:1d4b90bea524 |
|
117 | changeset: 2:1d4b90bea524 | |
113 | tag: tip |
|
118 | tag: tip | |
114 | user: test |
|
119 | user: test | |
115 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
120 | date: Thu Jan 01 00:00:02 1970 +0000 | |
116 | summary: copy |
|
121 | summary: copy | |
117 |
|
122 | |||
118 |
|
123 | |||
119 |
|
124 | |||
120 | Delete empty file |
|
125 | Delete empty file | |
121 |
|
126 | |||
122 | $ hg rm empty-copy |
|
127 | $ hg rm empty-copy | |
123 | $ hg record -d '3 0' -m delete<<EOF |
|
128 | $ hg record -d '3 0' -m delete<<EOF | |
124 | > y |
|
129 | > y | |
125 | > EOF |
|
130 | > EOF | |
126 | diff --git a/empty-copy b/empty-copy |
|
131 | diff --git a/empty-copy b/empty-copy | |
127 | deleted file mode 100644 |
|
132 | deleted file mode 100644 | |
128 | examine changes to 'empty-copy'? [Ynesfdaq?] |
|
133 | examine changes to 'empty-copy'? [Ynesfdaq?] y | |
|
134 | ||||
129 |
|
135 | |||
130 | $ hg tip -p |
|
136 | $ hg tip -p | |
131 | changeset: 3:b39a238f01a1 |
|
137 | changeset: 3:b39a238f01a1 | |
132 | tag: tip |
|
138 | tag: tip | |
133 | user: test |
|
139 | user: test | |
134 | date: Thu Jan 01 00:00:03 1970 +0000 |
|
140 | date: Thu Jan 01 00:00:03 1970 +0000 | |
135 | summary: delete |
|
141 | summary: delete | |
136 |
|
142 | |||
137 |
|
143 | |||
138 |
|
144 | |||
139 | Add binary file |
|
145 | Add binary file | |
140 |
|
146 | |||
141 | $ hg bundle --base -2 tip.bundle |
|
147 | $ hg bundle --base -2 tip.bundle | |
142 | 1 changesets found |
|
148 | 1 changesets found | |
143 | $ hg add tip.bundle |
|
149 | $ hg add tip.bundle | |
144 | $ hg record -d '4 0' -m binary<<EOF |
|
150 | $ hg record -d '4 0' -m binary<<EOF | |
145 | > y |
|
151 | > y | |
146 | > EOF |
|
152 | > EOF | |
147 | diff --git a/tip.bundle b/tip.bundle |
|
153 | diff --git a/tip.bundle b/tip.bundle | |
148 | new file mode 100644 |
|
154 | new file mode 100644 | |
149 | this is a binary file |
|
155 | this is a binary file | |
150 | examine changes to 'tip.bundle'? [Ynesfdaq?] |
|
156 | examine changes to 'tip.bundle'? [Ynesfdaq?] y | |
|
157 | ||||
151 |
|
158 | |||
152 | $ hg tip -p |
|
159 | $ hg tip -p | |
153 | changeset: 4:ad816da3711e |
|
160 | changeset: 4:ad816da3711e | |
154 | tag: tip |
|
161 | tag: tip | |
155 | user: test |
|
162 | user: test | |
156 | date: Thu Jan 01 00:00:04 1970 +0000 |
|
163 | date: Thu Jan 01 00:00:04 1970 +0000 | |
157 | summary: binary |
|
164 | summary: binary | |
158 |
|
165 | |||
159 | diff -r b39a238f01a1 -r ad816da3711e tip.bundle |
|
166 | diff -r b39a238f01a1 -r ad816da3711e tip.bundle | |
160 | Binary file tip.bundle has changed |
|
167 | Binary file tip.bundle has changed | |
161 |
|
168 | |||
162 |
|
169 | |||
163 | Change binary file |
|
170 | Change binary file | |
164 |
|
171 | |||
165 | $ hg bundle --base -2 tip.bundle |
|
172 | $ hg bundle --base -2 tip.bundle | |
166 | 1 changesets found |
|
173 | 1 changesets found | |
167 | $ hg record -d '5 0' -m binary-change<<EOF |
|
174 | $ hg record -d '5 0' -m binary-change<<EOF | |
168 | > y |
|
175 | > y | |
169 | > EOF |
|
176 | > EOF | |
170 | diff --git a/tip.bundle b/tip.bundle |
|
177 | diff --git a/tip.bundle b/tip.bundle | |
171 | this modifies a binary file (all or nothing) |
|
178 | this modifies a binary file (all or nothing) | |
172 | examine changes to 'tip.bundle'? [Ynesfdaq?] |
|
179 | examine changes to 'tip.bundle'? [Ynesfdaq?] y | |
|
180 | ||||
173 |
|
181 | |||
174 | $ hg tip -p |
|
182 | $ hg tip -p | |
175 | changeset: 5:dccd6f3eb485 |
|
183 | changeset: 5:dccd6f3eb485 | |
176 | tag: tip |
|
184 | tag: tip | |
177 | user: test |
|
185 | user: test | |
178 | date: Thu Jan 01 00:00:05 1970 +0000 |
|
186 | date: Thu Jan 01 00:00:05 1970 +0000 | |
179 | summary: binary-change |
|
187 | summary: binary-change | |
180 |
|
188 | |||
181 | diff -r ad816da3711e -r dccd6f3eb485 tip.bundle |
|
189 | diff -r ad816da3711e -r dccd6f3eb485 tip.bundle | |
182 | Binary file tip.bundle has changed |
|
190 | Binary file tip.bundle has changed | |
183 |
|
191 | |||
184 |
|
192 | |||
185 | Rename and change binary file |
|
193 | Rename and change binary file | |
186 |
|
194 | |||
187 | $ hg mv tip.bundle top.bundle |
|
195 | $ hg mv tip.bundle top.bundle | |
188 | $ hg bundle --base -2 top.bundle |
|
196 | $ hg bundle --base -2 top.bundle | |
189 | 1 changesets found |
|
197 | 1 changesets found | |
190 | $ hg record -d '6 0' -m binary-change-rename<<EOF |
|
198 | $ hg record -d '6 0' -m binary-change-rename<<EOF | |
191 | > y |
|
199 | > y | |
192 | > EOF |
|
200 | > EOF | |
193 | diff --git a/tip.bundle b/top.bundle |
|
201 | diff --git a/tip.bundle b/top.bundle | |
194 | rename from tip.bundle |
|
202 | rename from tip.bundle | |
195 | rename to top.bundle |
|
203 | rename to top.bundle | |
196 | this modifies a binary file (all or nothing) |
|
204 | this modifies a binary file (all or nothing) | |
197 | examine changes to 'tip.bundle' and 'top.bundle'? [Ynesfdaq?] |
|
205 | examine changes to 'tip.bundle' and 'top.bundle'? [Ynesfdaq?] y | |
|
206 | ||||
198 |
|
207 | |||
199 | $ hg tip -p |
|
208 | $ hg tip -p | |
200 | changeset: 6:7fa44105f5b3 |
|
209 | changeset: 6:7fa44105f5b3 | |
201 | tag: tip |
|
210 | tag: tip | |
202 | user: test |
|
211 | user: test | |
203 | date: Thu Jan 01 00:00:06 1970 +0000 |
|
212 | date: Thu Jan 01 00:00:06 1970 +0000 | |
204 | summary: binary-change-rename |
|
213 | summary: binary-change-rename | |
205 |
|
214 | |||
206 | diff -r dccd6f3eb485 -r 7fa44105f5b3 tip.bundle |
|
215 | diff -r dccd6f3eb485 -r 7fa44105f5b3 tip.bundle | |
207 | Binary file tip.bundle has changed |
|
216 | Binary file tip.bundle has changed | |
208 | diff -r dccd6f3eb485 -r 7fa44105f5b3 top.bundle |
|
217 | diff -r dccd6f3eb485 -r 7fa44105f5b3 top.bundle | |
209 | Binary file top.bundle has changed |
|
218 | Binary file top.bundle has changed | |
210 |
|
219 | |||
211 |
|
220 | |||
212 | Add plain file |
|
221 | Add plain file | |
213 |
|
222 | |||
214 | $ for i in 1 2 3 4 5 6 7 8 9 10; do |
|
223 | $ for i in 1 2 3 4 5 6 7 8 9 10; do | |
215 | > echo $i >> plain |
|
224 | > echo $i >> plain | |
216 | > done |
|
225 | > done | |
217 |
|
226 | |||
218 | $ hg add plain |
|
227 | $ hg add plain | |
219 | $ hg record -d '7 0' -m plain plain<<EOF |
|
228 | $ hg record -d '7 0' -m plain plain<<EOF | |
220 | > y |
|
229 | > y | |
221 | > y |
|
230 | > y | |
222 | > EOF |
|
231 | > EOF | |
223 | diff --git a/plain b/plain |
|
232 | diff --git a/plain b/plain | |
224 | new file mode 100644 |
|
233 | new file mode 100644 | |
225 | examine changes to 'plain'? [Ynesfdaq?] |
|
234 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
235 | ||||
226 |
|
236 | |||
227 | $ hg tip -p |
|
237 | $ hg tip -p | |
228 | changeset: 7:11fb457c1be4 |
|
238 | changeset: 7:11fb457c1be4 | |
229 | tag: tip |
|
239 | tag: tip | |
230 | user: test |
|
240 | user: test | |
231 | date: Thu Jan 01 00:00:07 1970 +0000 |
|
241 | date: Thu Jan 01 00:00:07 1970 +0000 | |
232 | summary: plain |
|
242 | summary: plain | |
233 |
|
243 | |||
234 | diff -r 7fa44105f5b3 -r 11fb457c1be4 plain |
|
244 | diff -r 7fa44105f5b3 -r 11fb457c1be4 plain | |
235 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
245 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
236 | +++ b/plain Thu Jan 01 00:00:07 1970 +0000 |
|
246 | +++ b/plain Thu Jan 01 00:00:07 1970 +0000 | |
237 | @@ -0,0 +1,10 @@ |
|
247 | @@ -0,0 +1,10 @@ | |
238 | +1 |
|
248 | +1 | |
239 | +2 |
|
249 | +2 | |
240 | +3 |
|
250 | +3 | |
241 | +4 |
|
251 | +4 | |
242 | +5 |
|
252 | +5 | |
243 | +6 |
|
253 | +6 | |
244 | +7 |
|
254 | +7 | |
245 | +8 |
|
255 | +8 | |
246 | +9 |
|
256 | +9 | |
247 | +10 |
|
257 | +10 | |
248 |
|
258 | |||
249 | Modify end of plain file with username unset |
|
259 | Modify end of plain file with username unset | |
250 |
|
260 | |||
251 | $ echo 11 >> plain |
|
261 | $ echo 11 >> plain | |
252 | $ unset HGUSER |
|
262 | $ unset HGUSER | |
253 | $ hg record --config ui.username= -d '8 0' -m end plain |
|
263 | $ hg record --config ui.username= -d '8 0' -m end plain | |
254 | abort: no username supplied |
|
264 | abort: no username supplied | |
255 | (use "hg config --edit" to set your username) |
|
265 | (use "hg config --edit" to set your username) | |
256 | [255] |
|
266 | [255] | |
257 |
|
267 | |||
258 |
|
268 | |||
259 | Modify end of plain file, also test that diffopts are accounted for |
|
269 | Modify end of plain file, also test that diffopts are accounted for | |
260 |
|
270 | |||
261 | $ HGUSER="test" |
|
271 | $ HGUSER="test" | |
262 | $ export HGUSER |
|
272 | $ export HGUSER | |
263 | $ hg record --config diff.showfunc=true -d '8 0' -m end plain <<EOF |
|
273 | $ hg record --config diff.showfunc=true -d '8 0' -m end plain <<EOF | |
264 | > y |
|
274 | > y | |
265 | > y |
|
275 | > y | |
266 | > EOF |
|
276 | > EOF | |
267 | diff --git a/plain b/plain |
|
277 | diff --git a/plain b/plain | |
268 | 1 hunks, 1 lines changed |
|
278 | 1 hunks, 1 lines changed | |
269 | examine changes to 'plain'? [Ynesfdaq?] |
|
279 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
280 | ||||
270 | @@ -8,3 +8,4 @@ 7 |
|
281 | @@ -8,3 +8,4 @@ 7 | |
271 | 8 |
|
282 | 8 | |
272 | 9 |
|
283 | 9 | |
273 | 10 |
|
284 | 10 | |
274 | +11 |
|
285 | +11 | |
275 | record this change to 'plain'? [Ynesfdaq?] |
|
286 | record this change to 'plain'? [Ynesfdaq?] y | |
|
287 | ||||
276 |
|
288 | |||
277 |
Modify |
|
289 | Modify end of plain file, no EOL | |
278 |
|
290 | |||
279 | $ hg tip --template '{node}' >> plain |
|
291 | $ hg tip --template '{node}' >> plain | |
280 | $ hg record -d '9 0' -m noeol plain <<EOF |
|
292 | $ hg record -d '9 0' -m noeol plain <<EOF | |
281 | > y |
|
293 | > y | |
282 | > y |
|
294 | > y | |
283 | > EOF |
|
295 | > EOF | |
284 | diff --git a/plain b/plain |
|
296 | diff --git a/plain b/plain | |
285 | 1 hunks, 1 lines changed |
|
297 | 1 hunks, 1 lines changed | |
286 | examine changes to 'plain'? [Ynesfdaq?] |
|
298 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
299 | ||||
287 | @@ -9,3 +9,4 @@ |
|
300 | @@ -9,3 +9,4 @@ | |
288 | 9 |
|
301 | 9 | |
289 | 10 |
|
302 | 10 | |
290 | 11 |
|
303 | 11 | |
291 | +7264f99c5f5ff3261504828afa4fb4d406c3af54 |
|
304 | +7264f99c5f5ff3261504828afa4fb4d406c3af54 | |
292 | \ No newline at end of file |
|
305 | \ No newline at end of file | |
293 | record this change to 'plain'? [Ynesfdaq?] |
|
306 | record this change to 'plain'? [Ynesfdaq?] y | |
|
307 | ||||
294 |
|
308 | |||
295 | Modify end of plain file, add EOL |
|
309 | Modify end of plain file, add EOL | |
296 |
|
310 | |||
297 | $ echo >> plain |
|
311 | $ echo >> plain | |
298 | $ echo 1 > plain2 |
|
312 | $ echo 1 > plain2 | |
299 | $ hg add plain2 |
|
313 | $ hg add plain2 | |
300 | $ hg record -d '10 0' -m eol plain plain2 <<EOF |
|
314 | $ hg record -d '10 0' -m eol plain plain2 <<EOF | |
301 | > y |
|
315 | > y | |
302 | > y |
|
316 | > y | |
303 | > y |
|
317 | > y | |
304 | > EOF |
|
318 | > EOF | |
305 | diff --git a/plain b/plain |
|
319 | diff --git a/plain b/plain | |
306 | 1 hunks, 1 lines changed |
|
320 | 1 hunks, 1 lines changed | |
307 | examine changes to 'plain'? [Ynesfdaq?] |
|
321 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
322 | ||||
308 | @@ -9,4 +9,4 @@ |
|
323 | @@ -9,4 +9,4 @@ | |
309 | 9 |
|
324 | 9 | |
310 | 10 |
|
325 | 10 | |
311 | 11 |
|
326 | 11 | |
312 | -7264f99c5f5ff3261504828afa4fb4d406c3af54 |
|
327 | -7264f99c5f5ff3261504828afa4fb4d406c3af54 | |
313 | \ No newline at end of file |
|
328 | \ No newline at end of file | |
314 | +7264f99c5f5ff3261504828afa4fb4d406c3af54 |
|
329 | +7264f99c5f5ff3261504828afa4fb4d406c3af54 | |
315 | record change 1/2 to 'plain'? [Ynesfdaq?] |
|
330 | record change 1/2 to 'plain'? [Ynesfdaq?] y | |
|
331 | ||||
316 | diff --git a/plain2 b/plain2 |
|
332 | diff --git a/plain2 b/plain2 | |
317 | new file mode 100644 |
|
333 | new file mode 100644 | |
318 | examine changes to 'plain2'? [Ynesfdaq?] |
|
334 | examine changes to 'plain2'? [Ynesfdaq?] y | |
|
335 | ||||
319 |
|
336 | |||
320 | Modify beginning, trim end, record both, add another file to test |
|
337 | Modify beginning, trim end, record both, add another file to test | |
321 | changes numbering |
|
338 | changes numbering | |
322 |
|
339 | |||
323 | $ rm plain |
|
340 | $ rm plain | |
324 | $ for i in 2 2 3 4 5 6 7 8 9 10; do |
|
341 | $ for i in 2 2 3 4 5 6 7 8 9 10; do | |
325 | > echo $i >> plain |
|
342 | > echo $i >> plain | |
326 | > done |
|
343 | > done | |
327 | $ echo 2 >> plain2 |
|
344 | $ echo 2 >> plain2 | |
328 |
|
345 | |||
329 | $ hg record -d '10 0' -m begin-and-end plain plain2 <<EOF |
|
346 | $ hg record -d '10 0' -m begin-and-end plain plain2 <<EOF | |
330 | > y |
|
347 | > y | |
331 | > y |
|
348 | > y | |
332 | > y |
|
349 | > y | |
333 | > y |
|
350 | > y | |
334 | > y |
|
351 | > y | |
335 | > EOF |
|
352 | > EOF | |
336 | diff --git a/plain b/plain |
|
353 | diff --git a/plain b/plain | |
337 | 2 hunks, 3 lines changed |
|
354 | 2 hunks, 3 lines changed | |
338 | examine changes to 'plain'? [Ynesfdaq?] |
|
355 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
356 | ||||
339 | @@ -1,4 +1,4 @@ |
|
357 | @@ -1,4 +1,4 @@ | |
340 | -1 |
|
358 | -1 | |
341 | +2 |
|
359 | +2 | |
342 | 2 |
|
360 | 2 | |
343 | 3 |
|
361 | 3 | |
344 | 4 |
|
362 | 4 | |
345 | record change 1/3 to 'plain'? [Ynesfdaq?] |
|
363 | record change 1/3 to 'plain'? [Ynesfdaq?] y | |
|
364 | ||||
346 | @@ -8,5 +8,3 @@ |
|
365 | @@ -8,5 +8,3 @@ | |
347 | 8 |
|
366 | 8 | |
348 | 9 |
|
367 | 9 | |
349 | 10 |
|
368 | 10 | |
350 | -11 |
|
369 | -11 | |
351 | -7264f99c5f5ff3261504828afa4fb4d406c3af54 |
|
370 | -7264f99c5f5ff3261504828afa4fb4d406c3af54 | |
352 | record change 2/3 to 'plain'? [Ynesfdaq?] |
|
371 | record change 2/3 to 'plain'? [Ynesfdaq?] y | |
|
372 | ||||
353 | diff --git a/plain2 b/plain2 |
|
373 | diff --git a/plain2 b/plain2 | |
354 | 1 hunks, 1 lines changed |
|
374 | 1 hunks, 1 lines changed | |
355 | examine changes to 'plain2'? [Ynesfdaq?] |
|
375 | examine changes to 'plain2'? [Ynesfdaq?] y | |
|
376 | ||||
356 | @@ -1,1 +1,2 @@ |
|
377 | @@ -1,1 +1,2 @@ | |
357 | 1 |
|
378 | 1 | |
358 | +2 |
|
379 | +2 | |
359 | record change 3/3 to 'plain2'? [Ynesfdaq?] |
|
380 | record change 3/3 to 'plain2'? [Ynesfdaq?] y | |
|
381 | ||||
360 |
|
382 | |||
361 | $ hg tip -p |
|
383 | $ hg tip -p | |
362 | changeset: 11:21df83db12b8 |
|
384 | changeset: 11:21df83db12b8 | |
363 | tag: tip |
|
385 | tag: tip | |
364 | user: test |
|
386 | user: test | |
365 | date: Thu Jan 01 00:00:10 1970 +0000 |
|
387 | date: Thu Jan 01 00:00:10 1970 +0000 | |
366 | summary: begin-and-end |
|
388 | summary: begin-and-end | |
367 |
|
389 | |||
368 | diff -r ddb8b281c3ff -r 21df83db12b8 plain |
|
390 | diff -r ddb8b281c3ff -r 21df83db12b8 plain | |
369 | --- a/plain Thu Jan 01 00:00:10 1970 +0000 |
|
391 | --- a/plain Thu Jan 01 00:00:10 1970 +0000 | |
370 | +++ b/plain Thu Jan 01 00:00:10 1970 +0000 |
|
392 | +++ b/plain Thu Jan 01 00:00:10 1970 +0000 | |
371 | @@ -1,4 +1,4 @@ |
|
393 | @@ -1,4 +1,4 @@ | |
372 | -1 |
|
394 | -1 | |
373 | +2 |
|
395 | +2 | |
374 | 2 |
|
396 | 2 | |
375 | 3 |
|
397 | 3 | |
376 | 4 |
|
398 | 4 | |
377 | @@ -8,5 +8,3 @@ |
|
399 | @@ -8,5 +8,3 @@ | |
378 | 8 |
|
400 | 8 | |
379 | 9 |
|
401 | 9 | |
380 | 10 |
|
402 | 10 | |
381 | -11 |
|
403 | -11 | |
382 | -7264f99c5f5ff3261504828afa4fb4d406c3af54 |
|
404 | -7264f99c5f5ff3261504828afa4fb4d406c3af54 | |
383 | diff -r ddb8b281c3ff -r 21df83db12b8 plain2 |
|
405 | diff -r ddb8b281c3ff -r 21df83db12b8 plain2 | |
384 | --- a/plain2 Thu Jan 01 00:00:10 1970 +0000 |
|
406 | --- a/plain2 Thu Jan 01 00:00:10 1970 +0000 | |
385 | +++ b/plain2 Thu Jan 01 00:00:10 1970 +0000 |
|
407 | +++ b/plain2 Thu Jan 01 00:00:10 1970 +0000 | |
386 | @@ -1,1 +1,2 @@ |
|
408 | @@ -1,1 +1,2 @@ | |
387 | 1 |
|
409 | 1 | |
388 | +2 |
|
410 | +2 | |
389 |
|
411 | |||
390 |
|
412 | |||
391 | Trim beginning, modify end |
|
413 | Trim beginning, modify end | |
392 |
|
414 | |||
393 | $ rm plain |
|
415 | $ rm plain | |
394 | > for i in 4 5 6 7 8 9 10.new; do |
|
416 | > for i in 4 5 6 7 8 9 10.new; do | |
395 | > echo $i >> plain |
|
417 | > echo $i >> plain | |
396 | > done |
|
418 | > done | |
397 |
|
419 | |||
398 | Record end |
|
420 | Record end | |
399 |
|
421 | |||
400 | $ hg record -d '11 0' -m end-only plain <<EOF |
|
422 | $ hg record -d '11 0' -m end-only plain <<EOF | |
401 | > y |
|
423 | > y | |
402 | > n |
|
424 | > n | |
403 | > y |
|
425 | > y | |
404 | > EOF |
|
426 | > EOF | |
405 | diff --git a/plain b/plain |
|
427 | diff --git a/plain b/plain | |
406 | 2 hunks, 4 lines changed |
|
428 | 2 hunks, 4 lines changed | |
407 | examine changes to 'plain'? [Ynesfdaq?] |
|
429 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
430 | ||||
408 | @@ -1,9 +1,6 @@ |
|
431 | @@ -1,9 +1,6 @@ | |
409 | -2 |
|
432 | -2 | |
410 | -2 |
|
433 | -2 | |
411 | -3 |
|
434 | -3 | |
412 | 4 |
|
435 | 4 | |
413 | 5 |
|
436 | 5 | |
414 | 6 |
|
437 | 6 | |
415 | 7 |
|
438 | 7 | |
416 | 8 |
|
439 | 8 | |
417 | 9 |
|
440 | 9 | |
418 | record change 1/2 to 'plain'? [Ynesfdaq?] |
|
441 | record change 1/2 to 'plain'? [Ynesfdaq?] n | |
|
442 | ||||
419 | @@ -4,7 +1,7 @@ |
|
443 | @@ -4,7 +1,7 @@ | |
420 | 4 |
|
444 | 4 | |
421 | 5 |
|
445 | 5 | |
422 | 6 |
|
446 | 6 | |
423 | 7 |
|
447 | 7 | |
424 | 8 |
|
448 | 8 | |
425 | 9 |
|
449 | 9 | |
426 | -10 |
|
450 | -10 | |
427 | +10.new |
|
451 | +10.new | |
428 | record change 2/2 to 'plain'? [Ynesfdaq?] |
|
452 | record change 2/2 to 'plain'? [Ynesfdaq?] y | |
|
453 | ||||
429 |
|
454 | |||
430 | $ hg tip -p |
|
455 | $ hg tip -p | |
431 | changeset: 12:99337501826f |
|
456 | changeset: 12:99337501826f | |
432 | tag: tip |
|
457 | tag: tip | |
433 | user: test |
|
458 | user: test | |
434 | date: Thu Jan 01 00:00:11 1970 +0000 |
|
459 | date: Thu Jan 01 00:00:11 1970 +0000 | |
435 | summary: end-only |
|
460 | summary: end-only | |
436 |
|
461 | |||
437 | diff -r 21df83db12b8 -r 99337501826f plain |
|
462 | diff -r 21df83db12b8 -r 99337501826f plain | |
438 | --- a/plain Thu Jan 01 00:00:10 1970 +0000 |
|
463 | --- a/plain Thu Jan 01 00:00:10 1970 +0000 | |
439 | +++ b/plain Thu Jan 01 00:00:11 1970 +0000 |
|
464 | +++ b/plain Thu Jan 01 00:00:11 1970 +0000 | |
440 | @@ -7,4 +7,4 @@ |
|
465 | @@ -7,4 +7,4 @@ | |
441 | 7 |
|
466 | 7 | |
442 | 8 |
|
467 | 8 | |
443 | 9 |
|
468 | 9 | |
444 | -10 |
|
469 | -10 | |
445 | +10.new |
|
470 | +10.new | |
446 |
|
471 | |||
447 |
|
472 | |||
448 | Record beginning |
|
473 | Record beginning | |
449 |
|
474 | |||
450 | $ hg record -d '12 0' -m begin-only plain <<EOF |
|
475 | $ hg record -d '12 0' -m begin-only plain <<EOF | |
451 | > y |
|
476 | > y | |
452 | > y |
|
477 | > y | |
453 | > EOF |
|
478 | > EOF | |
454 | diff --git a/plain b/plain |
|
479 | diff --git a/plain b/plain | |
455 | 1 hunks, 3 lines changed |
|
480 | 1 hunks, 3 lines changed | |
456 | examine changes to 'plain'? [Ynesfdaq?] |
|
481 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
482 | ||||
457 | @@ -1,6 +1,3 @@ |
|
483 | @@ -1,6 +1,3 @@ | |
458 | -2 |
|
484 | -2 | |
459 | -2 |
|
485 | -2 | |
460 | -3 |
|
486 | -3 | |
461 | 4 |
|
487 | 4 | |
462 | 5 |
|
488 | 5 | |
463 | 6 |
|
489 | 6 | |
464 | record this change to 'plain'? [Ynesfdaq?] |
|
490 | record this change to 'plain'? [Ynesfdaq?] y | |
|
491 | ||||
465 |
|
492 | |||
466 | $ hg tip -p |
|
493 | $ hg tip -p | |
467 | changeset: 13:bbd45465d540 |
|
494 | changeset: 13:bbd45465d540 | |
468 | tag: tip |
|
495 | tag: tip | |
469 | user: test |
|
496 | user: test | |
470 | date: Thu Jan 01 00:00:12 1970 +0000 |
|
497 | date: Thu Jan 01 00:00:12 1970 +0000 | |
471 | summary: begin-only |
|
498 | summary: begin-only | |
472 |
|
499 | |||
473 | diff -r 99337501826f -r bbd45465d540 plain |
|
500 | diff -r 99337501826f -r bbd45465d540 plain | |
474 | --- a/plain Thu Jan 01 00:00:11 1970 +0000 |
|
501 | --- a/plain Thu Jan 01 00:00:11 1970 +0000 | |
475 | +++ b/plain Thu Jan 01 00:00:12 1970 +0000 |
|
502 | +++ b/plain Thu Jan 01 00:00:12 1970 +0000 | |
476 | @@ -1,6 +1,3 @@ |
|
503 | @@ -1,6 +1,3 @@ | |
477 | -2 |
|
504 | -2 | |
478 | -2 |
|
505 | -2 | |
479 | -3 |
|
506 | -3 | |
480 | 4 |
|
507 | 4 | |
481 | 5 |
|
508 | 5 | |
482 | 6 |
|
509 | 6 | |
483 |
|
510 | |||
484 |
|
511 | |||
485 | Add to beginning, trim from end |
|
512 | Add to beginning, trim from end | |
486 |
|
513 | |||
487 | $ rm plain |
|
514 | $ rm plain | |
488 | $ for i in 1 2 3 4 5 6 7 8 9; do |
|
515 | $ for i in 1 2 3 4 5 6 7 8 9; do | |
489 | > echo $i >> plain |
|
516 | > echo $i >> plain | |
490 | > done |
|
517 | > done | |
491 |
|
518 | |||
492 | Record end |
|
519 | Record end | |
493 |
|
520 | |||
494 | $ hg record --traceback -d '13 0' -m end-again plain<<EOF |
|
521 | $ hg record --traceback -d '13 0' -m end-again plain<<EOF | |
495 | > y |
|
522 | > y | |
496 | > n |
|
523 | > n | |
497 | > y |
|
524 | > y | |
498 | > EOF |
|
525 | > EOF | |
499 | diff --git a/plain b/plain |
|
526 | diff --git a/plain b/plain | |
500 | 2 hunks, 4 lines changed |
|
527 | 2 hunks, 4 lines changed | |
501 | examine changes to 'plain'? [Ynesfdaq?] |
|
528 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
529 | ||||
502 | @@ -1,6 +1,9 @@ |
|
530 | @@ -1,6 +1,9 @@ | |
503 | +1 |
|
531 | +1 | |
504 | +2 |
|
532 | +2 | |
505 | +3 |
|
533 | +3 | |
506 | 4 |
|
534 | 4 | |
507 | 5 |
|
535 | 5 | |
508 | 6 |
|
536 | 6 | |
509 | 7 |
|
537 | 7 | |
510 | 8 |
|
538 | 8 | |
511 | 9 |
|
539 | 9 | |
512 | record change 1/2 to 'plain'? [Ynesfdaq?] |
|
540 | record change 1/2 to 'plain'? [Ynesfdaq?] n | |
|
541 | ||||
513 | @@ -1,7 +4,6 @@ |
|
542 | @@ -1,7 +4,6 @@ | |
514 | 4 |
|
543 | 4 | |
515 | 5 |
|
544 | 5 | |
516 | 6 |
|
545 | 6 | |
517 | 7 |
|
546 | 7 | |
518 | 8 |
|
547 | 8 | |
519 | 9 |
|
548 | 9 | |
520 | -10.new |
|
549 | -10.new | |
521 | record change 2/2 to 'plain'? [Ynesfdaq?] |
|
550 | record change 2/2 to 'plain'? [Ynesfdaq?] y | |
|
551 | ||||
522 |
|
552 | |||
523 | Add to beginning, middle, end |
|
553 | Add to beginning, middle, end | |
524 |
|
554 | |||
525 | $ rm plain |
|
555 | $ rm plain | |
526 | $ for i in 1 2 3 4 5 5.new 5.reallynew 6 7 8 9 10 11; do |
|
556 | $ for i in 1 2 3 4 5 5.new 5.reallynew 6 7 8 9 10 11; do | |
527 | > echo $i >> plain |
|
557 | > echo $i >> plain | |
528 | > done |
|
558 | > done | |
529 |
|
559 | |||
530 | Record beginning, middle |
|
560 | Record beginning, middle | |
531 |
|
561 | |||
532 | $ hg record -d '14 0' -m middle-only plain <<EOF |
|
562 | $ hg record -d '14 0' -m middle-only plain <<EOF | |
533 | > y |
|
563 | > y | |
534 | > y |
|
564 | > y | |
535 | > y |
|
565 | > y | |
536 | > n |
|
566 | > n | |
537 | > EOF |
|
567 | > EOF | |
538 | diff --git a/plain b/plain |
|
568 | diff --git a/plain b/plain | |
539 | 3 hunks, 7 lines changed |
|
569 | 3 hunks, 7 lines changed | |
540 | examine changes to 'plain'? [Ynesfdaq?] |
|
570 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
571 | ||||
541 | @@ -1,2 +1,5 @@ |
|
572 | @@ -1,2 +1,5 @@ | |
542 | +1 |
|
573 | +1 | |
543 | +2 |
|
574 | +2 | |
544 | +3 |
|
575 | +3 | |
545 | 4 |
|
576 | 4 | |
546 | 5 |
|
577 | 5 | |
547 | record change 1/3 to 'plain'? [Ynesfdaq?] |
|
578 | record change 1/3 to 'plain'? [Ynesfdaq?] y | |
|
579 | ||||
548 | @@ -1,6 +4,8 @@ |
|
580 | @@ -1,6 +4,8 @@ | |
549 | 4 |
|
581 | 4 | |
550 | 5 |
|
582 | 5 | |
551 | +5.new |
|
583 | +5.new | |
552 | +5.reallynew |
|
584 | +5.reallynew | |
553 | 6 |
|
585 | 6 | |
554 | 7 |
|
586 | 7 | |
555 | 8 |
|
587 | 8 | |
556 | 9 |
|
588 | 9 | |
557 | record change 2/3 to 'plain'? [Ynesfdaq?] |
|
589 | record change 2/3 to 'plain'? [Ynesfdaq?] y | |
|
590 | ||||
558 | @@ -3,4 +8,6 @@ |
|
591 | @@ -3,4 +8,6 @@ | |
559 | 6 |
|
592 | 6 | |
560 | 7 |
|
593 | 7 | |
561 | 8 |
|
594 | 8 | |
562 | 9 |
|
595 | 9 | |
563 | +10 |
|
596 | +10 | |
564 | +11 |
|
597 | +11 | |
565 | record change 3/3 to 'plain'? [Ynesfdaq?] |
|
598 | record change 3/3 to 'plain'? [Ynesfdaq?] n | |
|
599 | ||||
566 |
|
600 | |||
567 | $ hg tip -p |
|
601 | $ hg tip -p | |
568 | changeset: 15:f34a7937ec33 |
|
602 | changeset: 15:f34a7937ec33 | |
569 | tag: tip |
|
603 | tag: tip | |
570 | user: test |
|
604 | user: test | |
571 | date: Thu Jan 01 00:00:14 1970 +0000 |
|
605 | date: Thu Jan 01 00:00:14 1970 +0000 | |
572 | summary: middle-only |
|
606 | summary: middle-only | |
573 |
|
607 | |||
574 | diff -r 82c065d0b850 -r f34a7937ec33 plain |
|
608 | diff -r 82c065d0b850 -r f34a7937ec33 plain | |
575 | --- a/plain Thu Jan 01 00:00:13 1970 +0000 |
|
609 | --- a/plain Thu Jan 01 00:00:13 1970 +0000 | |
576 | +++ b/plain Thu Jan 01 00:00:14 1970 +0000 |
|
610 | +++ b/plain Thu Jan 01 00:00:14 1970 +0000 | |
577 | @@ -1,5 +1,10 @@ |
|
611 | @@ -1,5 +1,10 @@ | |
578 | +1 |
|
612 | +1 | |
579 | +2 |
|
613 | +2 | |
580 | +3 |
|
614 | +3 | |
581 | 4 |
|
615 | 4 | |
582 | 5 |
|
616 | 5 | |
583 | +5.new |
|
617 | +5.new | |
584 | +5.reallynew |
|
618 | +5.reallynew | |
585 | 6 |
|
619 | 6 | |
586 | 7 |
|
620 | 7 | |
587 | 8 |
|
621 | 8 | |
588 |
|
622 | |||
589 |
|
623 | |||
590 | Record end |
|
624 | Record end | |
591 |
|
625 | |||
592 | $ hg record -d '15 0' -m end-only plain <<EOF |
|
626 | $ hg record -d '15 0' -m end-only plain <<EOF | |
593 | > y |
|
627 | > y | |
594 | > y |
|
628 | > y | |
595 | > EOF |
|
629 | > EOF | |
596 | diff --git a/plain b/plain |
|
630 | diff --git a/plain b/plain | |
597 | 1 hunks, 2 lines changed |
|
631 | 1 hunks, 2 lines changed | |
598 | examine changes to 'plain'? [Ynesfdaq?] |
|
632 | examine changes to 'plain'? [Ynesfdaq?] y | |
|
633 | ||||
599 | @@ -9,3 +9,5 @@ |
|
634 | @@ -9,3 +9,5 @@ | |
600 | 7 |
|
635 | 7 | |
601 | 8 |
|
636 | 8 | |
602 | 9 |
|
637 | 9 | |
603 | +10 |
|
638 | +10 | |
604 | +11 |
|
639 | +11 | |
605 | record this change to 'plain'? [Ynesfdaq?] |
|
640 | record this change to 'plain'? [Ynesfdaq?] y | |
|
641 | ||||
606 |
|
642 | |||
607 | $ hg tip -p |
|
643 | $ hg tip -p | |
608 | changeset: 16:f9900b71a04c |
|
644 | changeset: 16:f9900b71a04c | |
609 | tag: tip |
|
645 | tag: tip | |
610 | user: test |
|
646 | user: test | |
611 | date: Thu Jan 01 00:00:15 1970 +0000 |
|
647 | date: Thu Jan 01 00:00:15 1970 +0000 | |
612 | summary: end-only |
|
648 | summary: end-only | |
613 |
|
649 | |||
614 | diff -r f34a7937ec33 -r f9900b71a04c plain |
|
650 | diff -r f34a7937ec33 -r f9900b71a04c plain | |
615 | --- a/plain Thu Jan 01 00:00:14 1970 +0000 |
|
651 | --- a/plain Thu Jan 01 00:00:14 1970 +0000 | |
616 | +++ b/plain Thu Jan 01 00:00:15 1970 +0000 |
|
652 | +++ b/plain Thu Jan 01 00:00:15 1970 +0000 | |
617 | @@ -9,3 +9,5 @@ |
|
653 | @@ -9,3 +9,5 @@ | |
618 | 7 |
|
654 | 7 | |
619 | 8 |
|
655 | 8 | |
620 | 9 |
|
656 | 9 | |
621 | +10 |
|
657 | +10 | |
622 | +11 |
|
658 | +11 | |
623 |
|
659 | |||
624 |
|
660 | |||
625 | $ mkdir subdir |
|
661 | $ mkdir subdir | |
626 | $ cd subdir |
|
662 | $ cd subdir | |
627 | $ echo a > a |
|
663 | $ echo a > a | |
628 | $ hg ci -d '16 0' -Amsubdir |
|
664 | $ hg ci -d '16 0' -Amsubdir | |
629 | adding subdir/a |
|
665 | adding subdir/a | |
630 |
|
666 | |||
631 | $ echo a >> a |
|
667 | $ echo a >> a | |
632 | $ hg record -d '16 0' -m subdir-change a <<EOF |
|
668 | $ hg record -d '16 0' -m subdir-change a <<EOF | |
633 | > y |
|
669 | > y | |
634 | > y |
|
670 | > y | |
635 | > EOF |
|
671 | > EOF | |
636 | diff --git a/subdir/a b/subdir/a |
|
672 | diff --git a/subdir/a b/subdir/a | |
637 | 1 hunks, 1 lines changed |
|
673 | 1 hunks, 1 lines changed | |
638 | examine changes to 'subdir/a'? [Ynesfdaq?] |
|
674 | examine changes to 'subdir/a'? [Ynesfdaq?] y | |
|
675 | ||||
639 | @@ -1,1 +1,2 @@ |
|
676 | @@ -1,1 +1,2 @@ | |
640 | a |
|
677 | a | |
641 | +a |
|
678 | +a | |
642 | record this change to 'subdir/a'? [Ynesfdaq?] |
|
679 | record this change to 'subdir/a'? [Ynesfdaq?] y | |
|
680 | ||||
643 |
|
681 | |||
644 | $ hg tip -p |
|
682 | $ hg tip -p | |
645 | changeset: 18:61be427a9deb |
|
683 | changeset: 18:61be427a9deb | |
646 | tag: tip |
|
684 | tag: tip | |
647 | user: test |
|
685 | user: test | |
648 | date: Thu Jan 01 00:00:16 1970 +0000 |
|
686 | date: Thu Jan 01 00:00:16 1970 +0000 | |
649 | summary: subdir-change |
|
687 | summary: subdir-change | |
650 |
|
688 | |||
651 | diff -r a7ffae4d61cb -r 61be427a9deb subdir/a |
|
689 | diff -r a7ffae4d61cb -r 61be427a9deb subdir/a | |
652 | --- a/subdir/a Thu Jan 01 00:00:16 1970 +0000 |
|
690 | --- a/subdir/a Thu Jan 01 00:00:16 1970 +0000 | |
653 | +++ b/subdir/a Thu Jan 01 00:00:16 1970 +0000 |
|
691 | +++ b/subdir/a Thu Jan 01 00:00:16 1970 +0000 | |
654 | @@ -1,1 +1,2 @@ |
|
692 | @@ -1,1 +1,2 @@ | |
655 | a |
|
693 | a | |
656 | +a |
|
694 | +a | |
657 |
|
695 | |||
658 |
|
696 | |||
659 | $ echo a > f1 |
|
697 | $ echo a > f1 | |
660 | $ echo b > f2 |
|
698 | $ echo b > f2 | |
661 | $ hg add f1 f2 |
|
699 | $ hg add f1 f2 | |
662 |
|
700 | |||
663 | $ hg ci -mz -d '17 0' |
|
701 | $ hg ci -mz -d '17 0' | |
664 |
|
702 | |||
665 | $ echo a >> f1 |
|
703 | $ echo a >> f1 | |
666 | $ echo b >> f2 |
|
704 | $ echo b >> f2 | |
667 |
|
705 | |||
668 | Help, quit |
|
706 | Help, quit | |
669 |
|
707 | |||
670 | $ hg record <<EOF |
|
708 | $ hg record <<EOF | |
671 | > ? |
|
709 | > ? | |
672 | > q |
|
710 | > q | |
673 | > EOF |
|
711 | > EOF | |
674 | diff --git a/subdir/f1 b/subdir/f1 |
|
712 | diff --git a/subdir/f1 b/subdir/f1 | |
675 | 1 hunks, 1 lines changed |
|
713 | 1 hunks, 1 lines changed | |
676 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
714 | examine changes to 'subdir/f1'? [Ynesfdaq?] ? | |
|
715 | ||||
677 |
y - yes, record this |
|
716 | y - yes, record this change | |
678 | n - no, skip this change |
|
717 | n - no, skip this change | |
679 | e - edit this change manually |
|
718 | e - edit this change manually | |
680 | s - skip remaining changes to this file |
|
719 | s - skip remaining changes to this file | |
681 | f - record remaining changes to this file |
|
720 | f - record remaining changes to this file | |
682 | d - done, skip remaining changes and files |
|
721 | d - done, skip remaining changes and files | |
683 | a - record all changes to all remaining files |
|
722 | a - record all changes to all remaining files | |
684 | q - quit, recording no changes |
|
723 | q - quit, recording no changes | |
685 | ? - ? (display help) |
|
724 | ? - ? (display help) | |
686 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
725 | examine changes to 'subdir/f1'? [Ynesfdaq?] q | |
|
726 | ||||
687 | abort: user quit |
|
727 | abort: user quit | |
688 | [255] |
|
728 | [255] | |
689 |
|
729 | |||
690 | Skip |
|
730 | Skip | |
691 |
|
731 | |||
692 | $ hg record <<EOF |
|
732 | $ hg record <<EOF | |
693 | > s |
|
733 | > s | |
694 | > EOF |
|
734 | > EOF | |
695 | diff --git a/subdir/f1 b/subdir/f1 |
|
735 | diff --git a/subdir/f1 b/subdir/f1 | |
696 | 1 hunks, 1 lines changed |
|
736 | 1 hunks, 1 lines changed | |
697 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
737 | examine changes to 'subdir/f1'? [Ynesfdaq?] s | |
|
738 | ||||
698 | diff --git a/subdir/f2 b/subdir/f2 |
|
739 | diff --git a/subdir/f2 b/subdir/f2 | |
699 | 1 hunks, 1 lines changed |
|
740 | 1 hunks, 1 lines changed | |
700 | examine changes to 'subdir/f2'? [Ynesfdaq?] abort: response expected |
|
741 | examine changes to 'subdir/f2'? [Ynesfdaq?] abort: response expected | |
701 | [255] |
|
742 | [255] | |
702 |
|
743 | |||
703 | No |
|
744 | No | |
704 |
|
745 | |||
705 | $ hg record <<EOF |
|
746 | $ hg record <<EOF | |
706 | > n |
|
747 | > n | |
707 | > EOF |
|
748 | > EOF | |
708 | diff --git a/subdir/f1 b/subdir/f1 |
|
749 | diff --git a/subdir/f1 b/subdir/f1 | |
709 | 1 hunks, 1 lines changed |
|
750 | 1 hunks, 1 lines changed | |
710 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
751 | examine changes to 'subdir/f1'? [Ynesfdaq?] n | |
|
752 | ||||
711 | diff --git a/subdir/f2 b/subdir/f2 |
|
753 | diff --git a/subdir/f2 b/subdir/f2 | |
712 | 1 hunks, 1 lines changed |
|
754 | 1 hunks, 1 lines changed | |
713 | examine changes to 'subdir/f2'? [Ynesfdaq?] abort: response expected |
|
755 | examine changes to 'subdir/f2'? [Ynesfdaq?] abort: response expected | |
714 | [255] |
|
756 | [255] | |
715 |
|
757 | |||
716 | f, quit |
|
758 | f, quit | |
717 |
|
759 | |||
718 | $ hg record <<EOF |
|
760 | $ hg record <<EOF | |
719 | > f |
|
761 | > f | |
720 | > q |
|
762 | > q | |
721 | > EOF |
|
763 | > EOF | |
722 | diff --git a/subdir/f1 b/subdir/f1 |
|
764 | diff --git a/subdir/f1 b/subdir/f1 | |
723 | 1 hunks, 1 lines changed |
|
765 | 1 hunks, 1 lines changed | |
724 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
766 | examine changes to 'subdir/f1'? [Ynesfdaq?] f | |
|
767 | ||||
725 | diff --git a/subdir/f2 b/subdir/f2 |
|
768 | diff --git a/subdir/f2 b/subdir/f2 | |
726 | 1 hunks, 1 lines changed |
|
769 | 1 hunks, 1 lines changed | |
727 | examine changes to 'subdir/f2'? [Ynesfdaq?] |
|
770 | examine changes to 'subdir/f2'? [Ynesfdaq?] q | |
|
771 | ||||
728 | abort: user quit |
|
772 | abort: user quit | |
729 | [255] |
|
773 | [255] | |
730 |
|
774 | |||
731 | s, all |
|
775 | s, all | |
732 |
|
776 | |||
733 | $ hg record -d '18 0' -mx <<EOF |
|
777 | $ hg record -d '18 0' -mx <<EOF | |
734 | > s |
|
778 | > s | |
735 | > a |
|
779 | > a | |
736 | > EOF |
|
780 | > EOF | |
737 | diff --git a/subdir/f1 b/subdir/f1 |
|
781 | diff --git a/subdir/f1 b/subdir/f1 | |
738 | 1 hunks, 1 lines changed |
|
782 | 1 hunks, 1 lines changed | |
739 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
783 | examine changes to 'subdir/f1'? [Ynesfdaq?] s | |
|
784 | ||||
740 | diff --git a/subdir/f2 b/subdir/f2 |
|
785 | diff --git a/subdir/f2 b/subdir/f2 | |
741 | 1 hunks, 1 lines changed |
|
786 | 1 hunks, 1 lines changed | |
742 | examine changes to 'subdir/f2'? [Ynesfdaq?] |
|
787 | examine changes to 'subdir/f2'? [Ynesfdaq?] a | |
|
788 | ||||
743 |
|
789 | |||
744 | $ hg tip -p |
|
790 | $ hg tip -p | |
745 | changeset: 20:b3df3dda369a |
|
791 | changeset: 20:b3df3dda369a | |
746 | tag: tip |
|
792 | tag: tip | |
747 | user: test |
|
793 | user: test | |
748 | date: Thu Jan 01 00:00:18 1970 +0000 |
|
794 | date: Thu Jan 01 00:00:18 1970 +0000 | |
749 | summary: x |
|
795 | summary: x | |
750 |
|
796 | |||
751 | diff -r 6e02d6c9906d -r b3df3dda369a subdir/f2 |
|
797 | diff -r 6e02d6c9906d -r b3df3dda369a subdir/f2 | |
752 | --- a/subdir/f2 Thu Jan 01 00:00:17 1970 +0000 |
|
798 | --- a/subdir/f2 Thu Jan 01 00:00:17 1970 +0000 | |
753 | +++ b/subdir/f2 Thu Jan 01 00:00:18 1970 +0000 |
|
799 | +++ b/subdir/f2 Thu Jan 01 00:00:18 1970 +0000 | |
754 | @@ -1,1 +1,2 @@ |
|
800 | @@ -1,1 +1,2 @@ | |
755 | b |
|
801 | b | |
756 | +b |
|
802 | +b | |
757 |
|
803 | |||
758 |
|
804 | |||
759 | f |
|
805 | f | |
760 |
|
806 | |||
761 | $ hg record -d '19 0' -my <<EOF |
|
807 | $ hg record -d '19 0' -my <<EOF | |
762 | > f |
|
808 | > f | |
763 | > EOF |
|
809 | > EOF | |
764 | diff --git a/subdir/f1 b/subdir/f1 |
|
810 | diff --git a/subdir/f1 b/subdir/f1 | |
765 | 1 hunks, 1 lines changed |
|
811 | 1 hunks, 1 lines changed | |
766 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
812 | examine changes to 'subdir/f1'? [Ynesfdaq?] f | |
|
813 | ||||
767 |
|
814 | |||
768 | $ hg tip -p |
|
815 | $ hg tip -p | |
769 | changeset: 21:38ec577f126b |
|
816 | changeset: 21:38ec577f126b | |
770 | tag: tip |
|
817 | tag: tip | |
771 | user: test |
|
818 | user: test | |
772 | date: Thu Jan 01 00:00:19 1970 +0000 |
|
819 | date: Thu Jan 01 00:00:19 1970 +0000 | |
773 | summary: y |
|
820 | summary: y | |
774 |
|
821 | |||
775 | diff -r b3df3dda369a -r 38ec577f126b subdir/f1 |
|
822 | diff -r b3df3dda369a -r 38ec577f126b subdir/f1 | |
776 | --- a/subdir/f1 Thu Jan 01 00:00:18 1970 +0000 |
|
823 | --- a/subdir/f1 Thu Jan 01 00:00:18 1970 +0000 | |
777 | +++ b/subdir/f1 Thu Jan 01 00:00:19 1970 +0000 |
|
824 | +++ b/subdir/f1 Thu Jan 01 00:00:19 1970 +0000 | |
778 | @@ -1,1 +1,2 @@ |
|
825 | @@ -1,1 +1,2 @@ | |
779 | a |
|
826 | a | |
780 | +a |
|
827 | +a | |
781 |
|
828 | |||
782 |
|
829 | |||
783 | #if execbit |
|
830 | #if execbit | |
784 |
|
831 | |||
785 | Preserve chmod +x |
|
832 | Preserve chmod +x | |
786 |
|
833 | |||
787 | $ chmod +x f1 |
|
834 | $ chmod +x f1 | |
788 | $ echo a >> f1 |
|
835 | $ echo a >> f1 | |
789 | $ hg record -d '20 0' -mz <<EOF |
|
836 | $ hg record -d '20 0' -mz <<EOF | |
790 | > y |
|
837 | > y | |
791 | > y |
|
838 | > y | |
792 | > y |
|
839 | > y | |
793 | > EOF |
|
840 | > EOF | |
794 | diff --git a/subdir/f1 b/subdir/f1 |
|
841 | diff --git a/subdir/f1 b/subdir/f1 | |
795 | old mode 100644 |
|
842 | old mode 100644 | |
796 | new mode 100755 |
|
843 | new mode 100755 | |
797 | 1 hunks, 1 lines changed |
|
844 | 1 hunks, 1 lines changed | |
798 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
845 | examine changes to 'subdir/f1'? [Ynesfdaq?] y | |
|
846 | ||||
799 | @@ -1,2 +1,3 @@ |
|
847 | @@ -1,2 +1,3 @@ | |
800 | a |
|
848 | a | |
801 | a |
|
849 | a | |
802 | +a |
|
850 | +a | |
803 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
851 | record this change to 'subdir/f1'? [Ynesfdaq?] y | |
|
852 | ||||
804 |
|
853 | |||
805 | $ hg tip --config diff.git=True -p |
|
854 | $ hg tip --config diff.git=True -p | |
806 | changeset: 22:3261adceb075 |
|
855 | changeset: 22:3261adceb075 | |
807 | tag: tip |
|
856 | tag: tip | |
808 | user: test |
|
857 | user: test | |
809 | date: Thu Jan 01 00:00:20 1970 +0000 |
|
858 | date: Thu Jan 01 00:00:20 1970 +0000 | |
810 | summary: z |
|
859 | summary: z | |
811 |
|
860 | |||
812 | diff --git a/subdir/f1 b/subdir/f1 |
|
861 | diff --git a/subdir/f1 b/subdir/f1 | |
813 | old mode 100644 |
|
862 | old mode 100644 | |
814 | new mode 100755 |
|
863 | new mode 100755 | |
815 | --- a/subdir/f1 |
|
864 | --- a/subdir/f1 | |
816 | +++ b/subdir/f1 |
|
865 | +++ b/subdir/f1 | |
817 | @@ -1,2 +1,3 @@ |
|
866 | @@ -1,2 +1,3 @@ | |
818 | a |
|
867 | a | |
819 | a |
|
868 | a | |
820 | +a |
|
869 | +a | |
821 |
|
870 | |||
822 |
|
871 | |||
823 | Preserve execute permission on original |
|
872 | Preserve execute permission on original | |
824 |
|
873 | |||
825 | $ echo b >> f1 |
|
874 | $ echo b >> f1 | |
826 | $ hg record -d '21 0' -maa <<EOF |
|
875 | $ hg record -d '21 0' -maa <<EOF | |
827 | > y |
|
876 | > y | |
828 | > y |
|
877 | > y | |
829 | > y |
|
878 | > y | |
830 | > EOF |
|
879 | > EOF | |
831 | diff --git a/subdir/f1 b/subdir/f1 |
|
880 | diff --git a/subdir/f1 b/subdir/f1 | |
832 | 1 hunks, 1 lines changed |
|
881 | 1 hunks, 1 lines changed | |
833 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
882 | examine changes to 'subdir/f1'? [Ynesfdaq?] y | |
|
883 | ||||
834 | @@ -1,3 +1,4 @@ |
|
884 | @@ -1,3 +1,4 @@ | |
835 | a |
|
885 | a | |
836 | a |
|
886 | a | |
837 | a |
|
887 | a | |
838 | +b |
|
888 | +b | |
839 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
889 | record this change to 'subdir/f1'? [Ynesfdaq?] y | |
|
890 | ||||
840 |
|
891 | |||
841 | $ hg tip --config diff.git=True -p |
|
892 | $ hg tip --config diff.git=True -p | |
842 | changeset: 23:b429867550db |
|
893 | changeset: 23:b429867550db | |
843 | tag: tip |
|
894 | tag: tip | |
844 | user: test |
|
895 | user: test | |
845 | date: Thu Jan 01 00:00:21 1970 +0000 |
|
896 | date: Thu Jan 01 00:00:21 1970 +0000 | |
846 | summary: aa |
|
897 | summary: aa | |
847 |
|
898 | |||
848 | diff --git a/subdir/f1 b/subdir/f1 |
|
899 | diff --git a/subdir/f1 b/subdir/f1 | |
849 | --- a/subdir/f1 |
|
900 | --- a/subdir/f1 | |
850 | +++ b/subdir/f1 |
|
901 | +++ b/subdir/f1 | |
851 | @@ -1,3 +1,4 @@ |
|
902 | @@ -1,3 +1,4 @@ | |
852 | a |
|
903 | a | |
853 | a |
|
904 | a | |
854 | a |
|
905 | a | |
855 | +b |
|
906 | +b | |
856 |
|
907 | |||
857 |
|
908 | |||
858 | Preserve chmod -x |
|
909 | Preserve chmod -x | |
859 |
|
910 | |||
860 | $ chmod -x f1 |
|
911 | $ chmod -x f1 | |
861 | $ echo c >> f1 |
|
912 | $ echo c >> f1 | |
862 | $ hg record -d '22 0' -mab <<EOF |
|
913 | $ hg record -d '22 0' -mab <<EOF | |
863 | > y |
|
914 | > y | |
864 | > y |
|
915 | > y | |
865 | > y |
|
916 | > y | |
866 | > EOF |
|
917 | > EOF | |
867 | diff --git a/subdir/f1 b/subdir/f1 |
|
918 | diff --git a/subdir/f1 b/subdir/f1 | |
868 | old mode 100755 |
|
919 | old mode 100755 | |
869 | new mode 100644 |
|
920 | new mode 100644 | |
870 | 1 hunks, 1 lines changed |
|
921 | 1 hunks, 1 lines changed | |
871 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
922 | examine changes to 'subdir/f1'? [Ynesfdaq?] y | |
|
923 | ||||
872 | @@ -2,3 +2,4 @@ |
|
924 | @@ -2,3 +2,4 @@ | |
873 | a |
|
925 | a | |
874 | a |
|
926 | a | |
875 | b |
|
927 | b | |
876 | +c |
|
928 | +c | |
877 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
929 | record this change to 'subdir/f1'? [Ynesfdaq?] y | |
|
930 | ||||
878 |
|
931 | |||
879 | $ hg tip --config diff.git=True -p |
|
932 | $ hg tip --config diff.git=True -p | |
880 | changeset: 24:0b082130c20a |
|
933 | changeset: 24:0b082130c20a | |
881 | tag: tip |
|
934 | tag: tip | |
882 | user: test |
|
935 | user: test | |
883 | date: Thu Jan 01 00:00:22 1970 +0000 |
|
936 | date: Thu Jan 01 00:00:22 1970 +0000 | |
884 | summary: ab |
|
937 | summary: ab | |
885 |
|
938 | |||
886 | diff --git a/subdir/f1 b/subdir/f1 |
|
939 | diff --git a/subdir/f1 b/subdir/f1 | |
887 | old mode 100755 |
|
940 | old mode 100755 | |
888 | new mode 100644 |
|
941 | new mode 100644 | |
889 | --- a/subdir/f1 |
|
942 | --- a/subdir/f1 | |
890 | +++ b/subdir/f1 |
|
943 | +++ b/subdir/f1 | |
891 | @@ -2,3 +2,4 @@ |
|
944 | @@ -2,3 +2,4 @@ | |
892 | a |
|
945 | a | |
893 | a |
|
946 | a | |
894 | b |
|
947 | b | |
895 | +c |
|
948 | +c | |
896 |
|
949 | |||
897 |
|
950 | |||
898 | #else |
|
951 | #else | |
899 |
|
952 | |||
900 | Slightly bogus tests to get almost same repo structure as when x bit is used |
|
953 | Slightly bogus tests to get almost same repo structure as when x bit is used | |
901 | - but with different hashes. |
|
954 | - but with different hashes. | |
902 |
|
955 | |||
903 | Mock "Preserve chmod +x" |
|
956 | Mock "Preserve chmod +x" | |
904 |
|
957 | |||
905 | $ echo a >> f1 |
|
958 | $ echo a >> f1 | |
906 | $ hg record -d '20 0' -mz <<EOF |
|
959 | $ hg record -d '20 0' -mz <<EOF | |
907 | > y |
|
960 | > y | |
908 | > y |
|
961 | > y | |
909 | > y |
|
962 | > y | |
910 | > EOF |
|
963 | > EOF | |
911 | diff --git a/subdir/f1 b/subdir/f1 |
|
964 | diff --git a/subdir/f1 b/subdir/f1 | |
912 | 1 hunks, 1 lines changed |
|
965 | 1 hunks, 1 lines changed | |
913 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
966 | examine changes to 'subdir/f1'? [Ynesfdaq?] | |
914 | @@ -1,2 +1,3 @@ |
|
967 | @@ -1,2 +1,3 @@ | |
915 | a |
|
968 | a | |
916 | a |
|
969 | a | |
917 | +a |
|
970 | +a | |
918 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
971 | record this change to 'subdir/f1'? [Ynesfdaq?] | |
919 |
|
972 | |||
920 | $ hg tip --config diff.git=True -p |
|
973 | $ hg tip --config diff.git=True -p | |
921 | changeset: 22:0d463bd428f5 |
|
974 | changeset: 22:0d463bd428f5 | |
922 | tag: tip |
|
975 | tag: tip | |
923 | user: test |
|
976 | user: test | |
924 | date: Thu Jan 01 00:00:20 1970 +0000 |
|
977 | date: Thu Jan 01 00:00:20 1970 +0000 | |
925 | summary: z |
|
978 | summary: z | |
926 |
|
979 | |||
927 | diff --git a/subdir/f1 b/subdir/f1 |
|
980 | diff --git a/subdir/f1 b/subdir/f1 | |
928 | --- a/subdir/f1 |
|
981 | --- a/subdir/f1 | |
929 | +++ b/subdir/f1 |
|
982 | +++ b/subdir/f1 | |
930 | @@ -1,2 +1,3 @@ |
|
983 | @@ -1,2 +1,3 @@ | |
931 | a |
|
984 | a | |
932 | a |
|
985 | a | |
933 | +a |
|
986 | +a | |
934 |
|
987 | |||
935 |
|
988 | |||
936 | Mock "Preserve execute permission on original" |
|
989 | Mock "Preserve execute permission on original" | |
937 |
|
990 | |||
938 | $ echo b >> f1 |
|
991 | $ echo b >> f1 | |
939 | $ hg record -d '21 0' -maa <<EOF |
|
992 | $ hg record -d '21 0' -maa <<EOF | |
940 | > y |
|
993 | > y | |
941 | > y |
|
994 | > y | |
942 | > y |
|
995 | > y | |
943 | > EOF |
|
996 | > EOF | |
944 | diff --git a/subdir/f1 b/subdir/f1 |
|
997 | diff --git a/subdir/f1 b/subdir/f1 | |
945 | 1 hunks, 1 lines changed |
|
998 | 1 hunks, 1 lines changed | |
946 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
999 | examine changes to 'subdir/f1'? [Ynesfdaq?] | |
947 | @@ -1,3 +1,4 @@ |
|
1000 | @@ -1,3 +1,4 @@ | |
948 | a |
|
1001 | a | |
949 | a |
|
1002 | a | |
950 | a |
|
1003 | a | |
951 | +b |
|
1004 | +b | |
952 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
1005 | record this change to 'subdir/f1'? [Ynesfdaq?] | |
953 |
|
1006 | |||
954 | $ hg tip --config diff.git=True -p |
|
1007 | $ hg tip --config diff.git=True -p | |
955 | changeset: 23:0eab41a3e524 |
|
1008 | changeset: 23:0eab41a3e524 | |
956 | tag: tip |
|
1009 | tag: tip | |
957 | user: test |
|
1010 | user: test | |
958 | date: Thu Jan 01 00:00:21 1970 +0000 |
|
1011 | date: Thu Jan 01 00:00:21 1970 +0000 | |
959 | summary: aa |
|
1012 | summary: aa | |
960 |
|
1013 | |||
961 | diff --git a/subdir/f1 b/subdir/f1 |
|
1014 | diff --git a/subdir/f1 b/subdir/f1 | |
962 | --- a/subdir/f1 |
|
1015 | --- a/subdir/f1 | |
963 | +++ b/subdir/f1 |
|
1016 | +++ b/subdir/f1 | |
964 | @@ -1,3 +1,4 @@ |
|
1017 | @@ -1,3 +1,4 @@ | |
965 | a |
|
1018 | a | |
966 | a |
|
1019 | a | |
967 | a |
|
1020 | a | |
968 | +b |
|
1021 | +b | |
969 |
|
1022 | |||
970 |
|
1023 | |||
971 | Mock "Preserve chmod -x" |
|
1024 | Mock "Preserve chmod -x" | |
972 |
|
1025 | |||
973 | $ chmod -x f1 |
|
1026 | $ chmod -x f1 | |
974 | $ echo c >> f1 |
|
1027 | $ echo c >> f1 | |
975 | $ hg record -d '22 0' -mab <<EOF |
|
1028 | $ hg record -d '22 0' -mab <<EOF | |
976 | > y |
|
1029 | > y | |
977 | > y |
|
1030 | > y | |
978 | > y |
|
1031 | > y | |
979 | > EOF |
|
1032 | > EOF | |
980 | diff --git a/subdir/f1 b/subdir/f1 |
|
1033 | diff --git a/subdir/f1 b/subdir/f1 | |
981 | 1 hunks, 1 lines changed |
|
1034 | 1 hunks, 1 lines changed | |
982 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
1035 | examine changes to 'subdir/f1'? [Ynesfdaq?] | |
983 | @@ -2,3 +2,4 @@ |
|
1036 | @@ -2,3 +2,4 @@ | |
984 | a |
|
1037 | a | |
985 | a |
|
1038 | a | |
986 | b |
|
1039 | b | |
987 | +c |
|
1040 | +c | |
988 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
1041 | record this change to 'subdir/f1'? [Ynesfdaq?] | |
989 |
|
1042 | |||
990 | $ hg tip --config diff.git=True -p |
|
1043 | $ hg tip --config diff.git=True -p | |
991 | changeset: 24:f4f718f27b7c |
|
1044 | changeset: 24:f4f718f27b7c | |
992 | tag: tip |
|
1045 | tag: tip | |
993 | user: test |
|
1046 | user: test | |
994 | date: Thu Jan 01 00:00:22 1970 +0000 |
|
1047 | date: Thu Jan 01 00:00:22 1970 +0000 | |
995 | summary: ab |
|
1048 | summary: ab | |
996 |
|
1049 | |||
997 | diff --git a/subdir/f1 b/subdir/f1 |
|
1050 | diff --git a/subdir/f1 b/subdir/f1 | |
998 | --- a/subdir/f1 |
|
1051 | --- a/subdir/f1 | |
999 | +++ b/subdir/f1 |
|
1052 | +++ b/subdir/f1 | |
1000 | @@ -2,3 +2,4 @@ |
|
1053 | @@ -2,3 +2,4 @@ | |
1001 | a |
|
1054 | a | |
1002 | a |
|
1055 | a | |
1003 | b |
|
1056 | b | |
1004 | +c |
|
1057 | +c | |
1005 |
|
1058 | |||
1006 |
|
1059 | |||
1007 | #endif |
|
1060 | #endif | |
1008 |
|
1061 | |||
1009 | $ cd .. |
|
1062 | $ cd .. | |
1010 |
|
1063 | |||
1011 |
|
1064 | |||
1012 | Abort early when a merge is in progress |
|
1065 | Abort early when a merge is in progress | |
1013 |
|
1066 | |||
1014 | $ hg up 4 |
|
1067 | $ hg up 4 | |
1015 | 1 files updated, 0 files merged, 6 files removed, 0 files unresolved |
|
1068 | 1 files updated, 0 files merged, 6 files removed, 0 files unresolved | |
1016 |
|
1069 | |||
1017 | $ touch iwillmergethat |
|
1070 | $ touch iwillmergethat | |
1018 | $ hg add iwillmergethat |
|
1071 | $ hg add iwillmergethat | |
1019 |
|
1072 | |||
1020 | $ hg branch thatbranch |
|
1073 | $ hg branch thatbranch | |
1021 | marked working directory as branch thatbranch |
|
1074 | marked working directory as branch thatbranch | |
1022 | (branches are permanent and global, did you want a bookmark?) |
|
1075 | (branches are permanent and global, did you want a bookmark?) | |
1023 |
|
1076 | |||
1024 | $ hg ci -m'new head' |
|
1077 | $ hg ci -m'new head' | |
1025 |
|
1078 | |||
1026 | $ hg up default |
|
1079 | $ hg up default | |
1027 | 6 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
1080 | 6 files updated, 0 files merged, 2 files removed, 0 files unresolved | |
1028 |
|
1081 | |||
1029 | $ hg merge thatbranch |
|
1082 | $ hg merge thatbranch | |
1030 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1083 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1031 | (branch merge, don't forget to commit) |
|
1084 | (branch merge, don't forget to commit) | |
1032 |
|
1085 | |||
1033 | $ hg record -m'will abort' |
|
1086 | $ hg record -m'will abort' | |
1034 | abort: cannot partially commit a merge (use "hg commit" instead) |
|
1087 | abort: cannot partially commit a merge (use "hg commit" instead) | |
1035 | [255] |
|
1088 | [255] | |
1036 |
|
1089 | |||
1037 | $ hg up -C |
|
1090 | $ hg up -C | |
1038 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
1091 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
1039 |
|
1092 | |||
1040 | Editing patch (and ignoring trailing text) |
|
1093 | Editing patch (and ignoring trailing text) | |
1041 |
|
1094 | |||
1042 | $ cat > editor.sh << '__EOF__' |
|
1095 | $ cat > editor.sh << '__EOF__' | |
1043 | > sed -e 7d -e '5s/^-/ /' -e '/^# ---/i\ |
|
1096 | > sed -e 7d -e '5s/^-/ /' -e '/^# ---/i\ | |
1044 | > trailing\nditto' "$1" > tmp |
|
1097 | > trailing\nditto' "$1" > tmp | |
1045 | > mv tmp "$1" |
|
1098 | > mv tmp "$1" | |
1046 | > __EOF__ |
|
1099 | > __EOF__ | |
1047 | $ cat > editedfile << '__EOF__' |
|
1100 | $ cat > editedfile << '__EOF__' | |
1048 | > This is the first line |
|
1101 | > This is the first line | |
1049 | > This is the second line |
|
1102 | > This is the second line | |
1050 | > This is the third line |
|
1103 | > This is the third line | |
1051 | > __EOF__ |
|
1104 | > __EOF__ | |
1052 | $ hg add editedfile |
|
1105 | $ hg add editedfile | |
1053 | $ hg commit -medit-patch-1 |
|
1106 | $ hg commit -medit-patch-1 | |
1054 | $ cat > editedfile << '__EOF__' |
|
1107 | $ cat > editedfile << '__EOF__' | |
1055 | > This line has changed |
|
1108 | > This line has changed | |
1056 | > This change will be committed |
|
1109 | > This change will be committed | |
1057 | > This is the third line |
|
1110 | > This is the third line | |
1058 | > __EOF__ |
|
1111 | > __EOF__ | |
1059 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record -d '23 0' -medit-patch-2 <<EOF |
|
1112 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record -d '23 0' -medit-patch-2 <<EOF | |
1060 | > y |
|
1113 | > y | |
1061 | > e |
|
1114 | > e | |
1062 | > EOF |
|
1115 | > EOF | |
1063 | diff --git a/editedfile b/editedfile |
|
1116 | diff --git a/editedfile b/editedfile | |
1064 | 1 hunks, 2 lines changed |
|
1117 | 1 hunks, 2 lines changed | |
1065 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1118 | examine changes to 'editedfile'? [Ynesfdaq?] y | |
|
1119 | ||||
1066 | @@ -1,3 +1,3 @@ |
|
1120 | @@ -1,3 +1,3 @@ | |
1067 | -This is the first line |
|
1121 | -This is the first line | |
1068 | -This is the second line |
|
1122 | -This is the second line | |
1069 | +This line has changed |
|
1123 | +This line has changed | |
1070 | +This change will be committed |
|
1124 | +This change will be committed | |
1071 | This is the third line |
|
1125 | This is the third line | |
1072 | record this change to 'editedfile'? [Ynesfdaq?] |
|
1126 | record this change to 'editedfile'? [Ynesfdaq?] e | |
|
1127 | ||||
1073 | $ cat editedfile |
|
1128 | $ cat editedfile | |
1074 | This line has changed |
|
1129 | This line has changed | |
1075 | This change will be committed |
|
1130 | This change will be committed | |
1076 | This is the third line |
|
1131 | This is the third line | |
1077 | $ hg cat -r tip editedfile |
|
1132 | $ hg cat -r tip editedfile | |
1078 | This is the first line |
|
1133 | This is the first line | |
1079 | This change will be committed |
|
1134 | This change will be committed | |
1080 | This is the third line |
|
1135 | This is the third line | |
1081 | $ hg revert editedfile |
|
1136 | $ hg revert editedfile | |
1082 |
|
1137 | |||
1083 | Trying to edit patch for whole file |
|
1138 | Trying to edit patch for whole file | |
1084 |
|
1139 | |||
1085 | $ echo "This is the fourth line" >> editedfile |
|
1140 | $ echo "This is the fourth line" >> editedfile | |
1086 | $ hg record <<EOF |
|
1141 | $ hg record <<EOF | |
1087 | > e |
|
1142 | > e | |
1088 | > q |
|
1143 | > q | |
1089 | > EOF |
|
1144 | > EOF | |
1090 | diff --git a/editedfile b/editedfile |
|
1145 | diff --git a/editedfile b/editedfile | |
1091 | 1 hunks, 1 lines changed |
|
1146 | 1 hunks, 1 lines changed | |
1092 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1147 | examine changes to 'editedfile'? [Ynesfdaq?] e | |
|
1148 | ||||
1093 | cannot edit patch for whole file |
|
1149 | cannot edit patch for whole file | |
1094 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1150 | examine changes to 'editedfile'? [Ynesfdaq?] q | |
|
1151 | ||||
1095 | abort: user quit |
|
1152 | abort: user quit | |
1096 | [255] |
|
1153 | [255] | |
1097 | $ hg revert editedfile |
|
1154 | $ hg revert editedfile | |
1098 |
|
1155 | |||
1099 | Removing changes from patch |
|
1156 | Removing changes from patch | |
1100 |
|
1157 | |||
1101 | $ sed -e '3s/third/second/' -e '2s/will/will not/' -e 1d editedfile > tmp |
|
1158 | $ sed -e '3s/third/second/' -e '2s/will/will not/' -e 1d editedfile > tmp | |
1102 | $ mv tmp editedfile |
|
1159 | $ mv tmp editedfile | |
1103 | $ echo "This line has been added" >> editedfile |
|
1160 | $ echo "This line has been added" >> editedfile | |
1104 | $ cat > editor.sh << '__EOF__' |
|
1161 | $ cat > editor.sh << '__EOF__' | |
1105 | > sed -e 's/^[-+]/ /' "$1" > tmp |
|
1162 | > sed -e 's/^[-+]/ /' "$1" > tmp | |
1106 | > mv tmp "$1" |
|
1163 | > mv tmp "$1" | |
1107 | > __EOF__ |
|
1164 | > __EOF__ | |
1108 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF |
|
1165 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF | |
1109 | > y |
|
1166 | > y | |
1110 | > e |
|
1167 | > e | |
1111 | > EOF |
|
1168 | > EOF | |
1112 | diff --git a/editedfile b/editedfile |
|
1169 | diff --git a/editedfile b/editedfile | |
1113 | 1 hunks, 3 lines changed |
|
1170 | 1 hunks, 3 lines changed | |
1114 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1171 | examine changes to 'editedfile'? [Ynesfdaq?] y | |
|
1172 | ||||
1115 | @@ -1,3 +1,3 @@ |
|
1173 | @@ -1,3 +1,3 @@ | |
1116 | -This is the first line |
|
1174 | -This is the first line | |
1117 | -This change will be committed |
|
1175 | -This change will be committed | |
1118 | -This is the third line |
|
1176 | -This is the third line | |
1119 | +This change will not be committed |
|
1177 | +This change will not be committed | |
1120 | +This is the second line |
|
1178 | +This is the second line | |
1121 | +This line has been added |
|
1179 | +This line has been added | |
1122 | record this change to 'editedfile'? [Ynesfdaq?] |
|
1180 | record this change to 'editedfile'? [Ynesfdaq?] e | |
|
1181 | ||||
1123 | no changes to record |
|
1182 | no changes to record | |
1124 | $ cat editedfile |
|
1183 | $ cat editedfile | |
1125 | This change will not be committed |
|
1184 | This change will not be committed | |
1126 | This is the second line |
|
1185 | This is the second line | |
1127 | This line has been added |
|
1186 | This line has been added | |
1128 | $ hg cat -r tip editedfile |
|
1187 | $ hg cat -r tip editedfile | |
1129 | This is the first line |
|
1188 | This is the first line | |
1130 | This change will be committed |
|
1189 | This change will be committed | |
1131 | This is the third line |
|
1190 | This is the third line | |
1132 | $ hg revert editedfile |
|
1191 | $ hg revert editedfile | |
1133 |
|
1192 | |||
1134 | Invalid patch |
|
1193 | Invalid patch | |
1135 |
|
1194 | |||
1136 | $ sed -e '3s/third/second/' -e '2s/will/will not/' -e 1d editedfile > tmp |
|
1195 | $ sed -e '3s/third/second/' -e '2s/will/will not/' -e 1d editedfile > tmp | |
1137 | $ mv tmp editedfile |
|
1196 | $ mv tmp editedfile | |
1138 | $ echo "This line has been added" >> editedfile |
|
1197 | $ echo "This line has been added" >> editedfile | |
1139 | $ cat > editor.sh << '__EOF__' |
|
1198 | $ cat > editor.sh << '__EOF__' | |
1140 | > sed s/This/That/ "$1" > tmp |
|
1199 | > sed s/This/That/ "$1" > tmp | |
1141 | > mv tmp "$1" |
|
1200 | > mv tmp "$1" | |
1142 | > __EOF__ |
|
1201 | > __EOF__ | |
1143 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF |
|
1202 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF | |
1144 | > y |
|
1203 | > y | |
1145 | > e |
|
1204 | > e | |
1146 | > EOF |
|
1205 | > EOF | |
1147 | diff --git a/editedfile b/editedfile |
|
1206 | diff --git a/editedfile b/editedfile | |
1148 | 1 hunks, 3 lines changed |
|
1207 | 1 hunks, 3 lines changed | |
1149 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1208 | examine changes to 'editedfile'? [Ynesfdaq?] y | |
|
1209 | ||||
1150 | @@ -1,3 +1,3 @@ |
|
1210 | @@ -1,3 +1,3 @@ | |
1151 | -This is the first line |
|
1211 | -This is the first line | |
1152 | -This change will be committed |
|
1212 | -This change will be committed | |
1153 | -This is the third line |
|
1213 | -This is the third line | |
1154 | +This change will not be committed |
|
1214 | +This change will not be committed | |
1155 | +This is the second line |
|
1215 | +This is the second line | |
1156 | +This line has been added |
|
1216 | +This line has been added | |
1157 | record this change to 'editedfile'? [Ynesfdaq?] |
|
1217 | record this change to 'editedfile'? [Ynesfdaq?] e | |
|
1218 | ||||
1158 | patching file editedfile |
|
1219 | patching file editedfile | |
1159 | Hunk #1 FAILED at 0 |
|
1220 | Hunk #1 FAILED at 0 | |
1160 | 1 out of 1 hunks FAILED -- saving rejects to file editedfile.rej |
|
1221 | 1 out of 1 hunks FAILED -- saving rejects to file editedfile.rej | |
1161 | abort: patch failed to apply |
|
1222 | abort: patch failed to apply | |
1162 | [255] |
|
1223 | [255] | |
1163 | $ cat editedfile |
|
1224 | $ cat editedfile | |
1164 | This change will not be committed |
|
1225 | This change will not be committed | |
1165 | This is the second line |
|
1226 | This is the second line | |
1166 | This line has been added |
|
1227 | This line has been added | |
1167 | $ hg cat -r tip editedfile |
|
1228 | $ hg cat -r tip editedfile | |
1168 | This is the first line |
|
1229 | This is the first line | |
1169 | This change will be committed |
|
1230 | This change will be committed | |
1170 | This is the third line |
|
1231 | This is the third line | |
1171 | $ cat editedfile.rej |
|
1232 | $ cat editedfile.rej | |
1172 | --- editedfile |
|
1233 | --- editedfile | |
1173 | +++ editedfile |
|
1234 | +++ editedfile | |
1174 | @@ -1,3 +1,3 @@ |
|
1235 | @@ -1,3 +1,3 @@ | |
1175 | -That is the first line |
|
1236 | -That is the first line | |
1176 | -That change will be committed |
|
1237 | -That change will be committed | |
1177 | -That is the third line |
|
1238 | -That is the third line | |
1178 | +That change will not be committed |
|
1239 | +That change will not be committed | |
1179 | +That is the second line |
|
1240 | +That is the second line | |
1180 | +That line has been added |
|
1241 | +That line has been added | |
1181 |
|
1242 | |||
1182 | Malformed patch - error handling |
|
1243 | Malformed patch - error handling | |
1183 |
|
1244 | |||
1184 | $ cat > editor.sh << '__EOF__' |
|
1245 | $ cat > editor.sh << '__EOF__' | |
1185 | > sed -e '/^@/p' "$1" > tmp |
|
1246 | > sed -e '/^@/p' "$1" > tmp | |
1186 | > mv tmp "$1" |
|
1247 | > mv tmp "$1" | |
1187 | > __EOF__ |
|
1248 | > __EOF__ | |
1188 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF |
|
1249 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF | |
1189 | > y |
|
1250 | > y | |
1190 | > e |
|
1251 | > e | |
1191 | > EOF |
|
1252 | > EOF | |
1192 | diff --git a/editedfile b/editedfile |
|
1253 | diff --git a/editedfile b/editedfile | |
1193 | 1 hunks, 3 lines changed |
|
1254 | 1 hunks, 3 lines changed | |
1194 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1255 | examine changes to 'editedfile'? [Ynesfdaq?] y | |
|
1256 | ||||
1195 | @@ -1,3 +1,3 @@ |
|
1257 | @@ -1,3 +1,3 @@ | |
1196 | -This is the first line |
|
1258 | -This is the first line | |
1197 | -This change will be committed |
|
1259 | -This change will be committed | |
1198 | -This is the third line |
|
1260 | -This is the third line | |
1199 | +This change will not be committed |
|
1261 | +This change will not be committed | |
1200 | +This is the second line |
|
1262 | +This is the second line | |
1201 | +This line has been added |
|
1263 | +This line has been added | |
1202 | record this change to 'editedfile'? [Ynesfdaq?] |
|
1264 | record this change to 'editedfile'? [Ynesfdaq?] e | |
|
1265 | ||||
1203 | abort: error parsing patch: unhandled transition: range -> range |
|
1266 | abort: error parsing patch: unhandled transition: range -> range | |
1204 | [255] |
|
1267 | [255] | |
1205 |
|
1268 | |||
1206 | random text in random positions is still an error |
|
1269 | random text in random positions is still an error | |
1207 |
|
1270 | |||
1208 | $ cat > editor.sh << '__EOF__' |
|
1271 | $ cat > editor.sh << '__EOF__' | |
1209 | > sed -e '/^@/i\ |
|
1272 | > sed -e '/^@/i\ | |
1210 | > other' "$1" > tmp |
|
1273 | > other' "$1" > tmp | |
1211 | > mv tmp "$1" |
|
1274 | > mv tmp "$1" | |
1212 | > __EOF__ |
|
1275 | > __EOF__ | |
1213 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF |
|
1276 | $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record <<EOF | |
1214 | > y |
|
1277 | > y | |
1215 | > e |
|
1278 | > e | |
1216 | > EOF |
|
1279 | > EOF | |
1217 | diff --git a/editedfile b/editedfile |
|
1280 | diff --git a/editedfile b/editedfile | |
1218 | 1 hunks, 3 lines changed |
|
1281 | 1 hunks, 3 lines changed | |
1219 | examine changes to 'editedfile'? [Ynesfdaq?] |
|
1282 | examine changes to 'editedfile'? [Ynesfdaq?] y | |
|
1283 | ||||
1220 | @@ -1,3 +1,3 @@ |
|
1284 | @@ -1,3 +1,3 @@ | |
1221 | -This is the first line |
|
1285 | -This is the first line | |
1222 | -This change will be committed |
|
1286 | -This change will be committed | |
1223 | -This is the third line |
|
1287 | -This is the third line | |
1224 | +This change will not be committed |
|
1288 | +This change will not be committed | |
1225 | +This is the second line |
|
1289 | +This is the second line | |
1226 | +This line has been added |
|
1290 | +This line has been added | |
1227 | record this change to 'editedfile'? [Ynesfdaq?] |
|
1291 | record this change to 'editedfile'? [Ynesfdaq?] e | |
|
1292 | ||||
1228 | abort: error parsing patch: unhandled transition: file -> other |
|
1293 | abort: error parsing patch: unhandled transition: file -> other | |
1229 | [255] |
|
1294 | [255] | |
1230 |
|
1295 | |||
1231 | $ hg up -C |
|
1296 | $ hg up -C | |
1232 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
1297 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1233 |
|
1298 | |||
1234 | With win32text |
|
1299 | With win32text | |
1235 |
|
1300 | |||
1236 | $ echo '[extensions]' >> .hg/hgrc |
|
1301 | $ echo '[extensions]' >> .hg/hgrc | |
1237 | $ echo 'win32text = ' >> .hg/hgrc |
|
1302 | $ echo 'win32text = ' >> .hg/hgrc | |
1238 | $ echo '[decode]' >> .hg/hgrc |
|
1303 | $ echo '[decode]' >> .hg/hgrc | |
1239 | $ echo '** = cleverdecode:' >> .hg/hgrc |
|
1304 | $ echo '** = cleverdecode:' >> .hg/hgrc | |
1240 | $ echo '[encode]' >> .hg/hgrc |
|
1305 | $ echo '[encode]' >> .hg/hgrc | |
1241 | $ echo '** = cleverencode:' >> .hg/hgrc |
|
1306 | $ echo '** = cleverencode:' >> .hg/hgrc | |
1242 | $ echo '[patch]' >> .hg/hgrc |
|
1307 | $ echo '[patch]' >> .hg/hgrc | |
1243 | $ echo 'eol = crlf' >> .hg/hgrc |
|
1308 | $ echo 'eol = crlf' >> .hg/hgrc | |
1244 |
|
1309 | |||
1245 | Ignore win32text deprecation warning for now: |
|
1310 | Ignore win32text deprecation warning for now: | |
1246 |
|
1311 | |||
1247 | $ echo '[win32text]' >> .hg/hgrc |
|
1312 | $ echo '[win32text]' >> .hg/hgrc | |
1248 | $ echo 'warn = no' >> .hg/hgrc |
|
1313 | $ echo 'warn = no' >> .hg/hgrc | |
1249 |
|
1314 | |||
1250 | $ echo d >> subdir/f1 |
|
1315 | $ echo d >> subdir/f1 | |
1251 | $ hg record -d '24 0' -mw1 <<EOF |
|
1316 | $ hg record -d '24 0' -mw1 <<EOF | |
1252 | > y |
|
1317 | > y | |
1253 | > y |
|
1318 | > y | |
1254 | > EOF |
|
1319 | > EOF | |
1255 | diff --git a/subdir/f1 b/subdir/f1 |
|
1320 | diff --git a/subdir/f1 b/subdir/f1 | |
1256 | 1 hunks, 1 lines changed |
|
1321 | 1 hunks, 1 lines changed | |
1257 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
1322 | examine changes to 'subdir/f1'? [Ynesfdaq?] y | |
|
1323 | ||||
1258 | @@ -3,3 +3,4 @@ |
|
1324 | @@ -3,3 +3,4 @@ | |
1259 | a |
|
1325 | a | |
1260 | b |
|
1326 | b | |
1261 | c |
|
1327 | c | |
1262 | +d |
|
1328 | +d | |
1263 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
1329 | record this change to 'subdir/f1'? [Ynesfdaq?] y | |
|
1330 | ||||
1264 |
|
1331 | |||
1265 | $ hg tip -p |
|
1332 | $ hg tip -p | |
1266 | changeset: 28:* (glob) |
|
1333 | changeset: 28:* (glob) | |
1267 | tag: tip |
|
1334 | tag: tip | |
1268 | user: test |
|
1335 | user: test | |
1269 | date: Thu Jan 01 00:00:24 1970 +0000 |
|
1336 | date: Thu Jan 01 00:00:24 1970 +0000 | |
1270 | summary: w1 |
|
1337 | summary: w1 | |
1271 |
|
1338 | |||
1272 | diff -r ???????????? -r ???????????? subdir/f1 (glob) |
|
1339 | diff -r ???????????? -r ???????????? subdir/f1 (glob) | |
1273 | --- a/subdir/f1 Thu Jan 01 00:00:23 1970 +0000 |
|
1340 | --- a/subdir/f1 Thu Jan 01 00:00:23 1970 +0000 | |
1274 | +++ b/subdir/f1 Thu Jan 01 00:00:24 1970 +0000 |
|
1341 | +++ b/subdir/f1 Thu Jan 01 00:00:24 1970 +0000 | |
1275 | @@ -3,3 +3,4 @@ |
|
1342 | @@ -3,3 +3,4 @@ | |
1276 | a |
|
1343 | a | |
1277 | b |
|
1344 | b | |
1278 | c |
|
1345 | c | |
1279 | +d |
|
1346 | +d | |
1280 |
|
1347 | |||
1281 | Test --user when ui.username not set |
|
1348 | Test --user when ui.username not set | |
1282 | $ unset HGUSER |
|
1349 | $ unset HGUSER | |
1283 | $ echo e >> subdir/f1 |
|
1350 | $ echo e >> subdir/f1 | |
1284 | $ hg record --config ui.username= -d '8 0' --user xyz -m "user flag" <<EOF |
|
1351 | $ hg record --config ui.username= -d '8 0' --user xyz -m "user flag" <<EOF | |
1285 | > y |
|
1352 | > y | |
1286 | > y |
|
1353 | > y | |
1287 | > EOF |
|
1354 | > EOF | |
1288 | diff --git a/subdir/f1 b/subdir/f1 |
|
1355 | diff --git a/subdir/f1 b/subdir/f1 | |
1289 | 1 hunks, 1 lines changed |
|
1356 | 1 hunks, 1 lines changed | |
1290 | examine changes to 'subdir/f1'? [Ynesfdaq?] |
|
1357 | examine changes to 'subdir/f1'? [Ynesfdaq?] y | |
|
1358 | ||||
1291 | @@ -4,3 +4,4 @@ |
|
1359 | @@ -4,3 +4,4 @@ | |
1292 | b |
|
1360 | b | |
1293 | c |
|
1361 | c | |
1294 | d |
|
1362 | d | |
1295 | +e |
|
1363 | +e | |
1296 | record this change to 'subdir/f1'? [Ynesfdaq?] |
|
1364 | record this change to 'subdir/f1'? [Ynesfdaq?] y | |
|
1365 | ||||
1297 | $ hg log --template '{author}\n' -l 1 |
|
1366 | $ hg log --template '{author}\n' -l 1 | |
1298 | xyz |
|
1367 | xyz | |
1299 | $ HGUSER="test" |
|
1368 | $ HGUSER="test" | |
1300 | $ export HGUSER |
|
1369 | $ export HGUSER | |
1301 |
|
1370 | |||
1302 | $ cd .. |
|
1371 | $ cd .. |
@@ -1,763 +1,771 | |||||
1 | #require killdaemons |
|
1 | #require killdaemons | |
2 |
|
2 | |||
3 | $ cat <<EOF >> $HGRCPATH |
|
3 | $ cat <<EOF >> $HGRCPATH | |
4 | > [extensions] |
|
4 | > [extensions] | |
5 | > transplant= |
|
5 | > transplant= | |
6 | > EOF |
|
6 | > EOF | |
7 |
|
7 | |||
8 | $ hg init t |
|
8 | $ hg init t | |
9 | $ cd t |
|
9 | $ cd t | |
10 | $ echo r1 > r1 |
|
10 | $ echo r1 > r1 | |
11 | $ hg ci -Amr1 -d'0 0' |
|
11 | $ hg ci -Amr1 -d'0 0' | |
12 | adding r1 |
|
12 | adding r1 | |
13 | $ echo r2 > r2 |
|
13 | $ echo r2 > r2 | |
14 | $ hg ci -Amr2 -d'1 0' |
|
14 | $ hg ci -Amr2 -d'1 0' | |
15 | adding r2 |
|
15 | adding r2 | |
16 | $ hg up 0 |
|
16 | $ hg up 0 | |
17 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
17 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
18 |
|
18 | |||
19 | $ echo b1 > b1 |
|
19 | $ echo b1 > b1 | |
20 | $ hg ci -Amb1 -d '0 0' |
|
20 | $ hg ci -Amb1 -d '0 0' | |
21 | adding b1 |
|
21 | adding b1 | |
22 | created new head |
|
22 | created new head | |
23 | $ echo b2 > b2 |
|
23 | $ echo b2 > b2 | |
24 | $ hg ci -Amb2 -d '1 0' |
|
24 | $ hg ci -Amb2 -d '1 0' | |
25 | adding b2 |
|
25 | adding b2 | |
26 | $ echo b3 > b3 |
|
26 | $ echo b3 > b3 | |
27 | $ hg ci -Amb3 -d '2 0' |
|
27 | $ hg ci -Amb3 -d '2 0' | |
28 | adding b3 |
|
28 | adding b3 | |
29 |
|
29 | |||
30 | $ hg log --template '{rev} {parents} {desc}\n' |
|
30 | $ hg log --template '{rev} {parents} {desc}\n' | |
31 | 4 b3 |
|
31 | 4 b3 | |
32 | 3 b2 |
|
32 | 3 b2 | |
33 | 2 0:17ab29e464c6 b1 |
|
33 | 2 0:17ab29e464c6 b1 | |
34 | 1 r2 |
|
34 | 1 r2 | |
35 | 0 r1 |
|
35 | 0 r1 | |
36 |
|
36 | |||
37 | $ hg clone . ../rebase |
|
37 | $ hg clone . ../rebase | |
38 | updating to branch default |
|
38 | updating to branch default | |
39 | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
39 | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
40 | $ cd ../rebase |
|
40 | $ cd ../rebase | |
41 |
|
41 | |||
42 | $ hg up -C 1 |
|
42 | $ hg up -C 1 | |
43 | 1 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
43 | 1 files updated, 0 files merged, 3 files removed, 0 files unresolved | |
44 |
|
44 | |||
45 | rebase b onto r1 |
|
45 | rebase b onto r1 | |
46 | (this also tests that editor is not invoked if '--edit' is not specified) |
|
46 | (this also tests that editor is not invoked if '--edit' is not specified) | |
47 |
|
47 | |||
48 | $ HGEDITOR=cat hg transplant -a -b tip |
|
48 | $ HGEDITOR=cat hg transplant -a -b tip | |
49 | applying 37a1297eb21b |
|
49 | applying 37a1297eb21b | |
50 | 37a1297eb21b transplanted to e234d668f844 |
|
50 | 37a1297eb21b transplanted to e234d668f844 | |
51 | applying 722f4667af76 |
|
51 | applying 722f4667af76 | |
52 | 722f4667af76 transplanted to 539f377d78df |
|
52 | 722f4667af76 transplanted to 539f377d78df | |
53 | applying a53251cdf717 |
|
53 | applying a53251cdf717 | |
54 | a53251cdf717 transplanted to ffd6818a3975 |
|
54 | a53251cdf717 transplanted to ffd6818a3975 | |
55 | $ hg log --template '{rev} {parents} {desc}\n' |
|
55 | $ hg log --template '{rev} {parents} {desc}\n' | |
56 | 7 b3 |
|
56 | 7 b3 | |
57 | 6 b2 |
|
57 | 6 b2 | |
58 | 5 1:d11e3596cc1a b1 |
|
58 | 5 1:d11e3596cc1a b1 | |
59 | 4 b3 |
|
59 | 4 b3 | |
60 | 3 b2 |
|
60 | 3 b2 | |
61 | 2 0:17ab29e464c6 b1 |
|
61 | 2 0:17ab29e464c6 b1 | |
62 | 1 r2 |
|
62 | 1 r2 | |
63 | 0 r1 |
|
63 | 0 r1 | |
64 |
|
64 | |||
65 | test transplanted revset |
|
65 | test transplanted revset | |
66 |
|
66 | |||
67 | $ hg log -r 'transplanted()' --template '{rev} {parents} {desc}\n' |
|
67 | $ hg log -r 'transplanted()' --template '{rev} {parents} {desc}\n' | |
68 | 5 1:d11e3596cc1a b1 |
|
68 | 5 1:d11e3596cc1a b1 | |
69 | 6 b2 |
|
69 | 6 b2 | |
70 | 7 b3 |
|
70 | 7 b3 | |
71 | $ hg help revsets | grep transplanted |
|
71 | $ hg help revsets | grep transplanted | |
72 | "transplanted([set])" |
|
72 | "transplanted([set])" | |
73 | Transplanted changesets in set, or all transplanted changesets. |
|
73 | Transplanted changesets in set, or all transplanted changesets. | |
74 |
|
74 | |||
75 | test transplanted keyword |
|
75 | test transplanted keyword | |
76 |
|
76 | |||
77 | $ hg log --template '{rev} {transplanted}\n' |
|
77 | $ hg log --template '{rev} {transplanted}\n' | |
78 | 7 a53251cdf717679d1907b289f991534be05c997a |
|
78 | 7 a53251cdf717679d1907b289f991534be05c997a | |
79 | 6 722f4667af767100cb15b6a79324bf8abbfe1ef4 |
|
79 | 6 722f4667af767100cb15b6a79324bf8abbfe1ef4 | |
80 | 5 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21 |
|
80 | 5 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21 | |
81 | 4 |
|
81 | 4 | |
82 | 3 |
|
82 | 3 | |
83 | 2 |
|
83 | 2 | |
84 | 1 |
|
84 | 1 | |
85 | 0 |
|
85 | 0 | |
86 |
|
86 | |||
87 | test destination() revset predicate with a transplant of a transplant; new |
|
87 | test destination() revset predicate with a transplant of a transplant; new | |
88 | clone so subsequent rollback isn't affected |
|
88 | clone so subsequent rollback isn't affected | |
89 | (this also tests that editor is invoked if '--edit' is specified) |
|
89 | (this also tests that editor is invoked if '--edit' is specified) | |
90 |
|
90 | |||
91 | $ hg clone -q . ../destination |
|
91 | $ hg clone -q . ../destination | |
92 | $ cd ../destination |
|
92 | $ cd ../destination | |
93 | $ hg up -Cq 0 |
|
93 | $ hg up -Cq 0 | |
94 | $ hg branch -q b4 |
|
94 | $ hg branch -q b4 | |
95 | $ hg ci -qm "b4" |
|
95 | $ hg ci -qm "b4" | |
96 | $ hg status --rev "7^1" --rev 7 |
|
96 | $ hg status --rev "7^1" --rev 7 | |
97 | A b3 |
|
97 | A b3 | |
98 | $ cat > $TESTTMP/checkeditform.sh <<EOF |
|
98 | $ cat > $TESTTMP/checkeditform.sh <<EOF | |
99 | > env | grep HGEDITFORM |
|
99 | > env | grep HGEDITFORM | |
100 | > true |
|
100 | > true | |
101 | > EOF |
|
101 | > EOF | |
102 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh; cat" hg transplant --edit 7 |
|
102 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh; cat" hg transplant --edit 7 | |
103 | applying ffd6818a3975 |
|
103 | applying ffd6818a3975 | |
104 | HGEDITFORM=transplant.normal |
|
104 | HGEDITFORM=transplant.normal | |
105 | b3 |
|
105 | b3 | |
106 |
|
106 | |||
107 |
|
107 | |||
108 | HG: Enter commit message. Lines beginning with 'HG:' are removed. |
|
108 | HG: Enter commit message. Lines beginning with 'HG:' are removed. | |
109 | HG: Leave message empty to abort commit. |
|
109 | HG: Leave message empty to abort commit. | |
110 | HG: -- |
|
110 | HG: -- | |
111 | HG: user: test |
|
111 | HG: user: test | |
112 | HG: branch 'b4' |
|
112 | HG: branch 'b4' | |
113 | HG: added b3 |
|
113 | HG: added b3 | |
114 | ffd6818a3975 transplanted to 502236fa76bb |
|
114 | ffd6818a3975 transplanted to 502236fa76bb | |
115 |
|
115 | |||
116 |
|
116 | |||
117 | $ hg log -r 'destination()' |
|
117 | $ hg log -r 'destination()' | |
118 | changeset: 5:e234d668f844 |
|
118 | changeset: 5:e234d668f844 | |
119 | parent: 1:d11e3596cc1a |
|
119 | parent: 1:d11e3596cc1a | |
120 | user: test |
|
120 | user: test | |
121 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
121 | date: Thu Jan 01 00:00:00 1970 +0000 | |
122 | summary: b1 |
|
122 | summary: b1 | |
123 |
|
123 | |||
124 | changeset: 6:539f377d78df |
|
124 | changeset: 6:539f377d78df | |
125 | user: test |
|
125 | user: test | |
126 | date: Thu Jan 01 00:00:01 1970 +0000 |
|
126 | date: Thu Jan 01 00:00:01 1970 +0000 | |
127 | summary: b2 |
|
127 | summary: b2 | |
128 |
|
128 | |||
129 | changeset: 7:ffd6818a3975 |
|
129 | changeset: 7:ffd6818a3975 | |
130 | user: test |
|
130 | user: test | |
131 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
131 | date: Thu Jan 01 00:00:02 1970 +0000 | |
132 | summary: b3 |
|
132 | summary: b3 | |
133 |
|
133 | |||
134 | changeset: 9:502236fa76bb |
|
134 | changeset: 9:502236fa76bb | |
135 | branch: b4 |
|
135 | branch: b4 | |
136 | tag: tip |
|
136 | tag: tip | |
137 | user: test |
|
137 | user: test | |
138 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
138 | date: Thu Jan 01 00:00:02 1970 +0000 | |
139 | summary: b3 |
|
139 | summary: b3 | |
140 |
|
140 | |||
141 | $ hg log -r 'destination(a53251cdf717)' |
|
141 | $ hg log -r 'destination(a53251cdf717)' | |
142 | changeset: 7:ffd6818a3975 |
|
142 | changeset: 7:ffd6818a3975 | |
143 | user: test |
|
143 | user: test | |
144 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
144 | date: Thu Jan 01 00:00:02 1970 +0000 | |
145 | summary: b3 |
|
145 | summary: b3 | |
146 |
|
146 | |||
147 | changeset: 9:502236fa76bb |
|
147 | changeset: 9:502236fa76bb | |
148 | branch: b4 |
|
148 | branch: b4 | |
149 | tag: tip |
|
149 | tag: tip | |
150 | user: test |
|
150 | user: test | |
151 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
151 | date: Thu Jan 01 00:00:02 1970 +0000 | |
152 | summary: b3 |
|
152 | summary: b3 | |
153 |
|
153 | |||
154 |
|
154 | |||
155 | test subset parameter in reverse order |
|
155 | test subset parameter in reverse order | |
156 | $ hg log -r 'reverse(all()) and destination(a53251cdf717)' |
|
156 | $ hg log -r 'reverse(all()) and destination(a53251cdf717)' | |
157 | changeset: 9:502236fa76bb |
|
157 | changeset: 9:502236fa76bb | |
158 | branch: b4 |
|
158 | branch: b4 | |
159 | tag: tip |
|
159 | tag: tip | |
160 | user: test |
|
160 | user: test | |
161 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
161 | date: Thu Jan 01 00:00:02 1970 +0000 | |
162 | summary: b3 |
|
162 | summary: b3 | |
163 |
|
163 | |||
164 | changeset: 7:ffd6818a3975 |
|
164 | changeset: 7:ffd6818a3975 | |
165 | user: test |
|
165 | user: test | |
166 | date: Thu Jan 01 00:00:02 1970 +0000 |
|
166 | date: Thu Jan 01 00:00:02 1970 +0000 | |
167 | summary: b3 |
|
167 | summary: b3 | |
168 |
|
168 | |||
169 |
|
169 | |||
170 | back to the original dir |
|
170 | back to the original dir | |
171 | $ cd ../rebase |
|
171 | $ cd ../rebase | |
172 |
|
172 | |||
173 | rollback the transplant |
|
173 | rollback the transplant | |
174 | $ hg rollback |
|
174 | $ hg rollback | |
175 | repository tip rolled back to revision 4 (undo transplant) |
|
175 | repository tip rolled back to revision 4 (undo transplant) | |
176 | working directory now based on revision 1 |
|
176 | working directory now based on revision 1 | |
177 | $ hg tip -q |
|
177 | $ hg tip -q | |
178 | 4:a53251cdf717 |
|
178 | 4:a53251cdf717 | |
179 | $ hg parents -q |
|
179 | $ hg parents -q | |
180 | 1:d11e3596cc1a |
|
180 | 1:d11e3596cc1a | |
181 | $ hg status |
|
181 | $ hg status | |
182 | ? b1 |
|
182 | ? b1 | |
183 | ? b2 |
|
183 | ? b2 | |
184 | ? b3 |
|
184 | ? b3 | |
185 |
|
185 | |||
186 | $ hg clone ../t ../prune |
|
186 | $ hg clone ../t ../prune | |
187 | updating to branch default |
|
187 | updating to branch default | |
188 | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
188 | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
189 | $ cd ../prune |
|
189 | $ cd ../prune | |
190 |
|
190 | |||
191 | $ hg up -C 1 |
|
191 | $ hg up -C 1 | |
192 | 1 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
192 | 1 files updated, 0 files merged, 3 files removed, 0 files unresolved | |
193 |
|
193 | |||
194 | rebase b onto r1, skipping b2 |
|
194 | rebase b onto r1, skipping b2 | |
195 |
|
195 | |||
196 | $ hg transplant -a -b tip -p 3 |
|
196 | $ hg transplant -a -b tip -p 3 | |
197 | applying 37a1297eb21b |
|
197 | applying 37a1297eb21b | |
198 | 37a1297eb21b transplanted to e234d668f844 |
|
198 | 37a1297eb21b transplanted to e234d668f844 | |
199 | applying a53251cdf717 |
|
199 | applying a53251cdf717 | |
200 | a53251cdf717 transplanted to 7275fda4d04f |
|
200 | a53251cdf717 transplanted to 7275fda4d04f | |
201 | $ hg log --template '{rev} {parents} {desc}\n' |
|
201 | $ hg log --template '{rev} {parents} {desc}\n' | |
202 | 6 b3 |
|
202 | 6 b3 | |
203 | 5 1:d11e3596cc1a b1 |
|
203 | 5 1:d11e3596cc1a b1 | |
204 | 4 b3 |
|
204 | 4 b3 | |
205 | 3 b2 |
|
205 | 3 b2 | |
206 | 2 0:17ab29e464c6 b1 |
|
206 | 2 0:17ab29e464c6 b1 | |
207 | 1 r2 |
|
207 | 1 r2 | |
208 | 0 r1 |
|
208 | 0 r1 | |
209 |
|
209 | |||
210 | test same-parent transplant with --log |
|
210 | test same-parent transplant with --log | |
211 |
|
211 | |||
212 | $ hg clone -r 1 ../t ../sameparent |
|
212 | $ hg clone -r 1 ../t ../sameparent | |
213 | adding changesets |
|
213 | adding changesets | |
214 | adding manifests |
|
214 | adding manifests | |
215 | adding file changes |
|
215 | adding file changes | |
216 | added 2 changesets with 2 changes to 2 files |
|
216 | added 2 changesets with 2 changes to 2 files | |
217 | updating to branch default |
|
217 | updating to branch default | |
218 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
218 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
219 | $ cd ../sameparent |
|
219 | $ cd ../sameparent | |
220 | $ hg transplant --log -s ../prune 5 |
|
220 | $ hg transplant --log -s ../prune 5 | |
221 | searching for changes |
|
221 | searching for changes | |
222 | applying e234d668f844 |
|
222 | applying e234d668f844 | |
223 | e234d668f844 transplanted to e07aea8ecf9c |
|
223 | e234d668f844 transplanted to e07aea8ecf9c | |
224 | $ hg log --template '{rev} {parents} {desc}\n' |
|
224 | $ hg log --template '{rev} {parents} {desc}\n' | |
225 | 2 b1 |
|
225 | 2 b1 | |
226 | (transplanted from e234d668f844e1b1a765f01db83a32c0c7bfa170) |
|
226 | (transplanted from e234d668f844e1b1a765f01db83a32c0c7bfa170) | |
227 | 1 r2 |
|
227 | 1 r2 | |
228 | 0 r1 |
|
228 | 0 r1 | |
229 | remote transplant |
|
229 | remote transplant | |
230 |
|
230 | |||
231 | $ hg clone -r 1 ../t ../remote |
|
231 | $ hg clone -r 1 ../t ../remote | |
232 | adding changesets |
|
232 | adding changesets | |
233 | adding manifests |
|
233 | adding manifests | |
234 | adding file changes |
|
234 | adding file changes | |
235 | added 2 changesets with 2 changes to 2 files |
|
235 | added 2 changesets with 2 changes to 2 files | |
236 | updating to branch default |
|
236 | updating to branch default | |
237 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
237 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
238 | $ cd ../remote |
|
238 | $ cd ../remote | |
239 | $ hg transplant --log -s ../t 2 4 |
|
239 | $ hg transplant --log -s ../t 2 4 | |
240 | searching for changes |
|
240 | searching for changes | |
241 | applying 37a1297eb21b |
|
241 | applying 37a1297eb21b | |
242 | 37a1297eb21b transplanted to c19cf0ccb069 |
|
242 | 37a1297eb21b transplanted to c19cf0ccb069 | |
243 | applying a53251cdf717 |
|
243 | applying a53251cdf717 | |
244 | a53251cdf717 transplanted to f7fe5bf98525 |
|
244 | a53251cdf717 transplanted to f7fe5bf98525 | |
245 | $ hg log --template '{rev} {parents} {desc}\n' |
|
245 | $ hg log --template '{rev} {parents} {desc}\n' | |
246 | 3 b3 |
|
246 | 3 b3 | |
247 | (transplanted from a53251cdf717679d1907b289f991534be05c997a) |
|
247 | (transplanted from a53251cdf717679d1907b289f991534be05c997a) | |
248 | 2 b1 |
|
248 | 2 b1 | |
249 | (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21) |
|
249 | (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21) | |
250 | 1 r2 |
|
250 | 1 r2 | |
251 | 0 r1 |
|
251 | 0 r1 | |
252 |
|
252 | |||
253 | skip previous transplants |
|
253 | skip previous transplants | |
254 |
|
254 | |||
255 | $ hg transplant -s ../t -a -b 4 |
|
255 | $ hg transplant -s ../t -a -b 4 | |
256 | searching for changes |
|
256 | searching for changes | |
257 | applying 722f4667af76 |
|
257 | applying 722f4667af76 | |
258 | 722f4667af76 transplanted to 47156cd86c0b |
|
258 | 722f4667af76 transplanted to 47156cd86c0b | |
259 | $ hg log --template '{rev} {parents} {desc}\n' |
|
259 | $ hg log --template '{rev} {parents} {desc}\n' | |
260 | 4 b2 |
|
260 | 4 b2 | |
261 | 3 b3 |
|
261 | 3 b3 | |
262 | (transplanted from a53251cdf717679d1907b289f991534be05c997a) |
|
262 | (transplanted from a53251cdf717679d1907b289f991534be05c997a) | |
263 | 2 b1 |
|
263 | 2 b1 | |
264 | (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21) |
|
264 | (transplanted from 37a1297eb21b3ef5c5d2ffac22121a0988ed9f21) | |
265 | 1 r2 |
|
265 | 1 r2 | |
266 | 0 r1 |
|
266 | 0 r1 | |
267 |
|
267 | |||
268 | skip local changes transplanted to the source |
|
268 | skip local changes transplanted to the source | |
269 |
|
269 | |||
270 | $ echo b4 > b4 |
|
270 | $ echo b4 > b4 | |
271 | $ hg ci -Amb4 -d '3 0' |
|
271 | $ hg ci -Amb4 -d '3 0' | |
272 | adding b4 |
|
272 | adding b4 | |
273 | $ hg clone ../t ../pullback |
|
273 | $ hg clone ../t ../pullback | |
274 | updating to branch default |
|
274 | updating to branch default | |
275 | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
275 | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
276 | $ cd ../pullback |
|
276 | $ cd ../pullback | |
277 | $ hg transplant -s ../remote -a -b tip |
|
277 | $ hg transplant -s ../remote -a -b tip | |
278 | searching for changes |
|
278 | searching for changes | |
279 | applying 4333daefcb15 |
|
279 | applying 4333daefcb15 | |
280 | 4333daefcb15 transplanted to 5f42c04e07cc |
|
280 | 4333daefcb15 transplanted to 5f42c04e07cc | |
281 |
|
281 | |||
282 |
|
282 | |||
283 | remote transplant with pull |
|
283 | remote transplant with pull | |
284 |
|
284 | |||
285 | $ hg -R ../t serve -p $HGPORT -d --pid-file=../t.pid |
|
285 | $ hg -R ../t serve -p $HGPORT -d --pid-file=../t.pid | |
286 | $ cat ../t.pid >> $DAEMON_PIDS |
|
286 | $ cat ../t.pid >> $DAEMON_PIDS | |
287 |
|
287 | |||
288 | $ hg clone -r 0 ../t ../rp |
|
288 | $ hg clone -r 0 ../t ../rp | |
289 | adding changesets |
|
289 | adding changesets | |
290 | adding manifests |
|
290 | adding manifests | |
291 | adding file changes |
|
291 | adding file changes | |
292 | added 1 changesets with 1 changes to 1 files |
|
292 | added 1 changesets with 1 changes to 1 files | |
293 | updating to branch default |
|
293 | updating to branch default | |
294 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
294 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
295 | $ cd ../rp |
|
295 | $ cd ../rp | |
296 | $ hg transplant -s http://localhost:$HGPORT/ 2 4 |
|
296 | $ hg transplant -s http://localhost:$HGPORT/ 2 4 | |
297 | searching for changes |
|
297 | searching for changes | |
298 | searching for changes |
|
298 | searching for changes | |
299 | adding changesets |
|
299 | adding changesets | |
300 | adding manifests |
|
300 | adding manifests | |
301 | adding file changes |
|
301 | adding file changes | |
302 | added 1 changesets with 1 changes to 1 files |
|
302 | added 1 changesets with 1 changes to 1 files | |
303 | applying a53251cdf717 |
|
303 | applying a53251cdf717 | |
304 | a53251cdf717 transplanted to 8d9279348abb |
|
304 | a53251cdf717 transplanted to 8d9279348abb | |
305 | $ hg log --template '{rev} {parents} {desc}\n' |
|
305 | $ hg log --template '{rev} {parents} {desc}\n' | |
306 | 2 b3 |
|
306 | 2 b3 | |
307 | 1 b1 |
|
307 | 1 b1 | |
308 | 0 r1 |
|
308 | 0 r1 | |
309 |
|
309 | |||
310 | remote transplant without pull |
|
310 | remote transplant without pull | |
311 |
|
311 | |||
312 | $ hg pull -q http://localhost:$HGPORT/ |
|
312 | $ hg pull -q http://localhost:$HGPORT/ | |
313 | $ hg transplant -s http://localhost:$HGPORT/ 2 4 |
|
313 | $ hg transplant -s http://localhost:$HGPORT/ 2 4 | |
314 | searching for changes |
|
314 | searching for changes | |
315 | skipping already applied revision 2:8d9279348abb |
|
315 | skipping already applied revision 2:8d9279348abb | |
316 | applying 722f4667af76 |
|
316 | applying 722f4667af76 | |
317 | 722f4667af76 transplanted to 76e321915884 |
|
317 | 722f4667af76 transplanted to 76e321915884 | |
318 |
|
318 | |||
319 | transplant --continue |
|
319 | transplant --continue | |
320 |
|
320 | |||
321 | $ hg init ../tc |
|
321 | $ hg init ../tc | |
322 | $ cd ../tc |
|
322 | $ cd ../tc | |
323 | $ cat <<EOF > foo |
|
323 | $ cat <<EOF > foo | |
324 | > foo |
|
324 | > foo | |
325 | > bar |
|
325 | > bar | |
326 | > baz |
|
326 | > baz | |
327 | > EOF |
|
327 | > EOF | |
328 | $ echo toremove > toremove |
|
328 | $ echo toremove > toremove | |
329 | $ echo baz > baz |
|
329 | $ echo baz > baz | |
330 | $ hg ci -Amfoo |
|
330 | $ hg ci -Amfoo | |
331 | adding baz |
|
331 | adding baz | |
332 | adding foo |
|
332 | adding foo | |
333 | adding toremove |
|
333 | adding toremove | |
334 | $ cat <<EOF > foo |
|
334 | $ cat <<EOF > foo | |
335 | > foo2 |
|
335 | > foo2 | |
336 | > bar2 |
|
336 | > bar2 | |
337 | > baz2 |
|
337 | > baz2 | |
338 | > EOF |
|
338 | > EOF | |
339 | $ rm toremove |
|
339 | $ rm toremove | |
340 | $ echo added > added |
|
340 | $ echo added > added | |
341 | $ hg ci -Amfoo2 |
|
341 | $ hg ci -Amfoo2 | |
342 | adding added |
|
342 | adding added | |
343 | removing toremove |
|
343 | removing toremove | |
344 | $ echo bar > bar |
|
344 | $ echo bar > bar | |
345 | $ cat > baz <<EOF |
|
345 | $ cat > baz <<EOF | |
346 | > before baz |
|
346 | > before baz | |
347 | > baz |
|
347 | > baz | |
348 | > after baz |
|
348 | > after baz | |
349 | > EOF |
|
349 | > EOF | |
350 | $ hg ci -Ambar |
|
350 | $ hg ci -Ambar | |
351 | adding bar |
|
351 | adding bar | |
352 | $ echo bar2 >> bar |
|
352 | $ echo bar2 >> bar | |
353 | $ hg ci -mbar2 |
|
353 | $ hg ci -mbar2 | |
354 | $ hg up 0 |
|
354 | $ hg up 0 | |
355 | 3 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
355 | 3 files updated, 0 files merged, 2 files removed, 0 files unresolved | |
356 | $ echo foobar > foo |
|
356 | $ echo foobar > foo | |
357 | $ hg ci -mfoobar |
|
357 | $ hg ci -mfoobar | |
358 | created new head |
|
358 | created new head | |
359 | $ hg transplant 1:3 |
|
359 | $ hg transplant 1:3 | |
360 | applying 46ae92138f3c |
|
360 | applying 46ae92138f3c | |
361 | patching file foo |
|
361 | patching file foo | |
362 | Hunk #1 FAILED at 0 |
|
362 | Hunk #1 FAILED at 0 | |
363 | 1 out of 1 hunks FAILED -- saving rejects to file foo.rej |
|
363 | 1 out of 1 hunks FAILED -- saving rejects to file foo.rej | |
364 | patch failed to apply |
|
364 | patch failed to apply | |
365 | abort: fix up the merge and run hg transplant --continue |
|
365 | abort: fix up the merge and run hg transplant --continue | |
366 | [255] |
|
366 | [255] | |
367 |
|
367 | |||
368 | transplant -c shouldn't use an old changeset |
|
368 | transplant -c shouldn't use an old changeset | |
369 |
|
369 | |||
370 | $ hg up -C |
|
370 | $ hg up -C | |
371 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
371 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
372 | $ rm added |
|
372 | $ rm added | |
373 | $ hg transplant 1 |
|
373 | $ hg transplant 1 | |
374 | applying 46ae92138f3c |
|
374 | applying 46ae92138f3c | |
375 | patching file foo |
|
375 | patching file foo | |
376 | Hunk #1 FAILED at 0 |
|
376 | Hunk #1 FAILED at 0 | |
377 | 1 out of 1 hunks FAILED -- saving rejects to file foo.rej |
|
377 | 1 out of 1 hunks FAILED -- saving rejects to file foo.rej | |
378 | patch failed to apply |
|
378 | patch failed to apply | |
379 | abort: fix up the merge and run hg transplant --continue |
|
379 | abort: fix up the merge and run hg transplant --continue | |
380 | [255] |
|
380 | [255] | |
381 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg transplant --continue -e |
|
381 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg transplant --continue -e | |
382 | HGEDITFORM=transplant.normal |
|
382 | HGEDITFORM=transplant.normal | |
383 | 46ae92138f3c transplanted as 9159dada197d |
|
383 | 46ae92138f3c transplanted as 9159dada197d | |
384 | $ hg transplant 1:3 |
|
384 | $ hg transplant 1:3 | |
385 | skipping already applied revision 1:46ae92138f3c |
|
385 | skipping already applied revision 1:46ae92138f3c | |
386 | applying 9d6d6b5a8275 |
|
386 | applying 9d6d6b5a8275 | |
387 | 9d6d6b5a8275 transplanted to 2d17a10c922f |
|
387 | 9d6d6b5a8275 transplanted to 2d17a10c922f | |
388 | applying 1dab759070cf |
|
388 | applying 1dab759070cf | |
389 | 1dab759070cf transplanted to e06a69927eb0 |
|
389 | 1dab759070cf transplanted to e06a69927eb0 | |
390 | $ hg locate |
|
390 | $ hg locate | |
391 | added |
|
391 | added | |
392 | bar |
|
392 | bar | |
393 | baz |
|
393 | baz | |
394 | foo |
|
394 | foo | |
395 |
|
395 | |||
396 | test multiple revisions and --continue |
|
396 | test multiple revisions and --continue | |
397 |
|
397 | |||
398 | $ hg up -qC 0 |
|
398 | $ hg up -qC 0 | |
399 | $ echo bazbaz > baz |
|
399 | $ echo bazbaz > baz | |
400 | $ hg ci -Am anotherbaz baz |
|
400 | $ hg ci -Am anotherbaz baz | |
401 | created new head |
|
401 | created new head | |
402 | $ hg transplant 1:3 |
|
402 | $ hg transplant 1:3 | |
403 | applying 46ae92138f3c |
|
403 | applying 46ae92138f3c | |
404 | 46ae92138f3c transplanted to 1024233ea0ba |
|
404 | 46ae92138f3c transplanted to 1024233ea0ba | |
405 | applying 9d6d6b5a8275 |
|
405 | applying 9d6d6b5a8275 | |
406 | patching file baz |
|
406 | patching file baz | |
407 | Hunk #1 FAILED at 0 |
|
407 | Hunk #1 FAILED at 0 | |
408 | 1 out of 1 hunks FAILED -- saving rejects to file baz.rej |
|
408 | 1 out of 1 hunks FAILED -- saving rejects to file baz.rej | |
409 | patch failed to apply |
|
409 | patch failed to apply | |
410 | abort: fix up the merge and run hg transplant --continue |
|
410 | abort: fix up the merge and run hg transplant --continue | |
411 | [255] |
|
411 | [255] | |
412 | $ echo fixed > baz |
|
412 | $ echo fixed > baz | |
413 | $ hg transplant --continue |
|
413 | $ hg transplant --continue | |
414 | 9d6d6b5a8275 transplanted as d80c49962290 |
|
414 | 9d6d6b5a8275 transplanted as d80c49962290 | |
415 | applying 1dab759070cf |
|
415 | applying 1dab759070cf | |
416 | 1dab759070cf transplanted to aa0ffe6bd5ae |
|
416 | 1dab759070cf transplanted to aa0ffe6bd5ae | |
417 |
|
417 | |||
418 | $ cd .. |
|
418 | $ cd .. | |
419 |
|
419 | |||
420 | Issue1111: Test transplant --merge |
|
420 | Issue1111: Test transplant --merge | |
421 |
|
421 | |||
422 | $ hg init t1111 |
|
422 | $ hg init t1111 | |
423 | $ cd t1111 |
|
423 | $ cd t1111 | |
424 | $ echo a > a |
|
424 | $ echo a > a | |
425 | $ hg ci -Am adda |
|
425 | $ hg ci -Am adda | |
426 | adding a |
|
426 | adding a | |
427 | $ echo b >> a |
|
427 | $ echo b >> a | |
428 | $ hg ci -m appendb |
|
428 | $ hg ci -m appendb | |
429 | $ echo c >> a |
|
429 | $ echo c >> a | |
430 | $ hg ci -m appendc |
|
430 | $ hg ci -m appendc | |
431 | $ hg up -C 0 |
|
431 | $ hg up -C 0 | |
432 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
432 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
433 | $ echo d >> a |
|
433 | $ echo d >> a | |
434 | $ hg ci -m appendd |
|
434 | $ hg ci -m appendd | |
435 | created new head |
|
435 | created new head | |
436 |
|
436 | |||
437 | transplant |
|
437 | transplant | |
438 |
|
438 | |||
439 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg transplant -m 1 -e |
|
439 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg transplant -m 1 -e | |
440 | applying 42dc4432fd35 |
|
440 | applying 42dc4432fd35 | |
441 | HGEDITFORM=transplant.merge |
|
441 | HGEDITFORM=transplant.merge | |
442 | 1:42dc4432fd35 merged at a9f4acbac129 |
|
442 | 1:42dc4432fd35 merged at a9f4acbac129 | |
443 | $ hg update -q -C 2 |
|
443 | $ hg update -q -C 2 | |
444 | $ cat > a <<EOF |
|
444 | $ cat > a <<EOF | |
445 | > x |
|
445 | > x | |
446 | > y |
|
446 | > y | |
447 | > z |
|
447 | > z | |
448 | > EOF |
|
448 | > EOF | |
449 | $ hg commit -m replace |
|
449 | $ hg commit -m replace | |
450 | $ hg update -q -C 4 |
|
450 | $ hg update -q -C 4 | |
451 | $ hg transplant -m 5 |
|
451 | $ hg transplant -m 5 | |
452 | applying 600a3cdcb41d |
|
452 | applying 600a3cdcb41d | |
453 | patching file a |
|
453 | patching file a | |
454 | Hunk #1 FAILED at 0 |
|
454 | Hunk #1 FAILED at 0 | |
455 | 1 out of 1 hunks FAILED -- saving rejects to file a.rej |
|
455 | 1 out of 1 hunks FAILED -- saving rejects to file a.rej | |
456 | patch failed to apply |
|
456 | patch failed to apply | |
457 | abort: fix up the merge and run hg transplant --continue |
|
457 | abort: fix up the merge and run hg transplant --continue | |
458 | [255] |
|
458 | [255] | |
459 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg transplant --continue -e |
|
459 | $ HGEDITOR="sh $TESTTMP/checkeditform.sh" hg transplant --continue -e | |
460 | HGEDITFORM=transplant.merge |
|
460 | HGEDITFORM=transplant.merge | |
461 | 600a3cdcb41d transplanted as a3f88be652e0 |
|
461 | 600a3cdcb41d transplanted as a3f88be652e0 | |
462 |
|
462 | |||
463 | $ cd .. |
|
463 | $ cd .. | |
464 |
|
464 | |||
465 | test transplant into empty repository |
|
465 | test transplant into empty repository | |
466 |
|
466 | |||
467 | $ hg init empty |
|
467 | $ hg init empty | |
468 | $ cd empty |
|
468 | $ cd empty | |
469 | $ hg transplant -s ../t -b tip -a |
|
469 | $ hg transplant -s ../t -b tip -a | |
470 | adding changesets |
|
470 | adding changesets | |
471 | adding manifests |
|
471 | adding manifests | |
472 | adding file changes |
|
472 | adding file changes | |
473 | added 4 changesets with 4 changes to 4 files |
|
473 | added 4 changesets with 4 changes to 4 files | |
474 |
|
474 | |||
475 | test "--merge" causing pull from source repository on local host |
|
475 | test "--merge" causing pull from source repository on local host | |
476 |
|
476 | |||
477 | $ hg --config extensions.mq= -q strip 2 |
|
477 | $ hg --config extensions.mq= -q strip 2 | |
478 | $ hg transplant -s ../t --merge tip |
|
478 | $ hg transplant -s ../t --merge tip | |
479 | searching for changes |
|
479 | searching for changes | |
480 | searching for changes |
|
480 | searching for changes | |
481 | adding changesets |
|
481 | adding changesets | |
482 | adding manifests |
|
482 | adding manifests | |
483 | adding file changes |
|
483 | adding file changes | |
484 | added 2 changesets with 2 changes to 2 files |
|
484 | added 2 changesets with 2 changes to 2 files | |
485 | applying a53251cdf717 |
|
485 | applying a53251cdf717 | |
486 | 4:a53251cdf717 merged at 4831f4dc831a |
|
486 | 4:a53251cdf717 merged at 4831f4dc831a | |
487 |
|
487 | |||
488 | test interactive transplant |
|
488 | test interactive transplant | |
489 |
|
489 | |||
490 | $ hg --config extensions.strip= -q strip 0 |
|
490 | $ hg --config extensions.strip= -q strip 0 | |
491 | $ hg -R ../t log -G --template "{rev}:{node|short}" |
|
491 | $ hg -R ../t log -G --template "{rev}:{node|short}" | |
492 | @ 4:a53251cdf717 |
|
492 | @ 4:a53251cdf717 | |
493 | | |
|
493 | | | |
494 | o 3:722f4667af76 |
|
494 | o 3:722f4667af76 | |
495 | | |
|
495 | | | |
496 | o 2:37a1297eb21b |
|
496 | o 2:37a1297eb21b | |
497 | | |
|
497 | | | |
498 | | o 1:d11e3596cc1a |
|
498 | | o 1:d11e3596cc1a | |
499 | |/ |
|
499 | |/ | |
500 | o 0:17ab29e464c6 |
|
500 | o 0:17ab29e464c6 | |
501 |
|
501 | |||
502 | $ hg transplant -q --config ui.interactive=true -s ../t <<EOF |
|
502 | $ hg transplant -q --config ui.interactive=true -s ../t <<EOF | |
503 | > p |
|
503 | > p | |
504 | > y |
|
504 | > y | |
505 | > n |
|
505 | > n | |
506 | > n |
|
506 | > n | |
507 | > m |
|
507 | > m | |
508 | > c |
|
508 | > c | |
509 | > EOF |
|
509 | > EOF | |
510 | 0:17ab29e464c6 |
|
510 | 0:17ab29e464c6 | |
511 | apply changeset? [ynmpcq?]: --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
511 | apply changeset? [ynmpcq?]: p | |
|
512 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |||
512 | +++ b/r1 Thu Jan 01 00:00:00 1970 +0000 |
|
513 | +++ b/r1 Thu Jan 01 00:00:00 1970 +0000 | |
513 | @@ -0,0 +1,1 @@ |
|
514 | @@ -0,0 +1,1 @@ | |
514 | +r1 |
|
515 | +r1 | |
515 |
apply changeset? [ynmpcq?]: |
|
516 | apply changeset? [ynmpcq?]: y | |
516 | apply changeset? [ynmpcq?]: 2:37a1297eb21b |
|
517 | 1:d11e3596cc1a | |
517 |
apply changeset? [ynmpcq?]: |
|
518 | apply changeset? [ynmpcq?]: n | |
518 | apply changeset? [ynmpcq?]: 4:a53251cdf717 |
|
519 | 2:37a1297eb21b | |
519 |
apply changeset? [ynmpcq?]: |
|
520 | apply changeset? [ynmpcq?]: n | |
|
521 | 3:722f4667af76 | |||
|
522 | apply changeset? [ynmpcq?]: m | |||
|
523 | 4:a53251cdf717 | |||
|
524 | apply changeset? [ynmpcq?]: c | |||
520 | $ hg log -G --template "{node|short}" |
|
525 | $ hg log -G --template "{node|short}" | |
521 | @ 88be5dde5260 |
|
526 | @ 88be5dde5260 | |
522 | |\ |
|
527 | |\ | |
523 | | o 722f4667af76 |
|
528 | | o 722f4667af76 | |
524 | | | |
|
529 | | | | |
525 | | o 37a1297eb21b |
|
530 | | o 37a1297eb21b | |
526 | |/ |
|
531 | |/ | |
527 | o 17ab29e464c6 |
|
532 | o 17ab29e464c6 | |
528 |
|
533 | |||
529 | $ hg transplant -q --config ui.interactive=true -s ../t <<EOF |
|
534 | $ hg transplant -q --config ui.interactive=true -s ../t <<EOF | |
530 | > x |
|
535 | > x | |
531 | > ? |
|
536 | > ? | |
532 | > y |
|
537 | > y | |
533 | > q |
|
538 | > q | |
534 | > EOF |
|
539 | > EOF | |
535 | 1:d11e3596cc1a |
|
540 | 1:d11e3596cc1a | |
536 |
apply changeset? [ynmpcq?]: |
|
541 | apply changeset? [ynmpcq?]: x | |
537 | apply changeset? [ynmpcq?]: y: yes, transplant this changeset |
|
542 | unrecognized response | |
|
543 | apply changeset? [ynmpcq?]: ? | |||
|
544 | y: yes, transplant this changeset | |||
538 | n: no, skip this changeset |
|
545 | n: no, skip this changeset | |
539 | m: merge at this changeset |
|
546 | m: merge at this changeset | |
540 | p: show patch |
|
547 | p: show patch | |
541 | c: commit selected changesets |
|
548 | c: commit selected changesets | |
542 | q: quit and cancel transplant |
|
549 | q: quit and cancel transplant | |
543 | ?: ? (show this help) |
|
550 | ?: ? (show this help) | |
544 |
apply changeset? [ynmpcq?]: |
|
551 | apply changeset? [ynmpcq?]: y | |
545 | apply changeset? [ynmpcq?]: (no-eol) |
|
552 | 4:a53251cdf717 | |
|
553 | apply changeset? [ynmpcq?]: q | |||
546 | $ hg heads --template "{node|short}\n" |
|
554 | $ hg heads --template "{node|short}\n" | |
547 | 88be5dde5260 |
|
555 | 88be5dde5260 | |
548 |
|
556 | |||
549 | $ cd .. |
|
557 | $ cd .. | |
550 |
|
558 | |||
551 |
|
559 | |||
552 | #if unix-permissions system-sh |
|
560 | #if unix-permissions system-sh | |
553 |
|
561 | |||
554 | test filter |
|
562 | test filter | |
555 |
|
563 | |||
556 | $ hg init filter |
|
564 | $ hg init filter | |
557 | $ cd filter |
|
565 | $ cd filter | |
558 | $ cat <<'EOF' >test-filter |
|
566 | $ cat <<'EOF' >test-filter | |
559 | > #!/bin/sh |
|
567 | > #!/bin/sh | |
560 | > sed 's/r1/r2/' $1 > $1.new |
|
568 | > sed 's/r1/r2/' $1 > $1.new | |
561 | > mv $1.new $1 |
|
569 | > mv $1.new $1 | |
562 | > EOF |
|
570 | > EOF | |
563 | $ chmod +x test-filter |
|
571 | $ chmod +x test-filter | |
564 | $ hg transplant -s ../t -b tip -a --filter ./test-filter |
|
572 | $ hg transplant -s ../t -b tip -a --filter ./test-filter | |
565 | filtering * (glob) |
|
573 | filtering * (glob) | |
566 | applying 17ab29e464c6 |
|
574 | applying 17ab29e464c6 | |
567 | 17ab29e464c6 transplanted to e9ffc54ea104 |
|
575 | 17ab29e464c6 transplanted to e9ffc54ea104 | |
568 | filtering * (glob) |
|
576 | filtering * (glob) | |
569 | applying 37a1297eb21b |
|
577 | applying 37a1297eb21b | |
570 | 37a1297eb21b transplanted to 348b36d0b6a5 |
|
578 | 37a1297eb21b transplanted to 348b36d0b6a5 | |
571 | filtering * (glob) |
|
579 | filtering * (glob) | |
572 | applying 722f4667af76 |
|
580 | applying 722f4667af76 | |
573 | 722f4667af76 transplanted to 0aa6979afb95 |
|
581 | 722f4667af76 transplanted to 0aa6979afb95 | |
574 | filtering * (glob) |
|
582 | filtering * (glob) | |
575 | applying a53251cdf717 |
|
583 | applying a53251cdf717 | |
576 | a53251cdf717 transplanted to 14f8512272b5 |
|
584 | a53251cdf717 transplanted to 14f8512272b5 | |
577 | $ hg log --template '{rev} {parents} {desc}\n' |
|
585 | $ hg log --template '{rev} {parents} {desc}\n' | |
578 | 3 b3 |
|
586 | 3 b3 | |
579 | 2 b2 |
|
587 | 2 b2 | |
580 | 1 b1 |
|
588 | 1 b1 | |
581 | 0 r2 |
|
589 | 0 r2 | |
582 | $ cd .. |
|
590 | $ cd .. | |
583 |
|
591 | |||
584 |
|
592 | |||
585 | test filter with failed patch |
|
593 | test filter with failed patch | |
586 |
|
594 | |||
587 | $ cd filter |
|
595 | $ cd filter | |
588 | $ hg up 0 |
|
596 | $ hg up 0 | |
589 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
597 | 0 files updated, 0 files merged, 3 files removed, 0 files unresolved | |
590 | $ echo foo > b1 |
|
598 | $ echo foo > b1 | |
591 | $ hg ci -Am foo |
|
599 | $ hg ci -Am foo | |
592 | adding b1 |
|
600 | adding b1 | |
593 | adding test-filter |
|
601 | adding test-filter | |
594 | created new head |
|
602 | created new head | |
595 | $ hg transplant 1 --filter ./test-filter |
|
603 | $ hg transplant 1 --filter ./test-filter | |
596 | filtering * (glob) |
|
604 | filtering * (glob) | |
597 | applying 348b36d0b6a5 |
|
605 | applying 348b36d0b6a5 | |
598 | file b1 already exists |
|
606 | file b1 already exists | |
599 | 1 out of 1 hunks FAILED -- saving rejects to file b1.rej |
|
607 | 1 out of 1 hunks FAILED -- saving rejects to file b1.rej | |
600 | patch failed to apply |
|
608 | patch failed to apply | |
601 | abort: fix up the merge and run hg transplant --continue |
|
609 | abort: fix up the merge and run hg transplant --continue | |
602 | [255] |
|
610 | [255] | |
603 | $ cd .. |
|
611 | $ cd .. | |
604 |
|
612 | |||
605 | test environment passed to filter |
|
613 | test environment passed to filter | |
606 |
|
614 | |||
607 | $ hg init filter-environment |
|
615 | $ hg init filter-environment | |
608 | $ cd filter-environment |
|
616 | $ cd filter-environment | |
609 | $ cat <<'EOF' >test-filter-environment |
|
617 | $ cat <<'EOF' >test-filter-environment | |
610 | > #!/bin/sh |
|
618 | > #!/bin/sh | |
611 | > echo "Transplant by $HGUSER" >> $1 |
|
619 | > echo "Transplant by $HGUSER" >> $1 | |
612 | > echo "Transplant from rev $HGREVISION" >> $1 |
|
620 | > echo "Transplant from rev $HGREVISION" >> $1 | |
613 | > EOF |
|
621 | > EOF | |
614 | $ chmod +x test-filter-environment |
|
622 | $ chmod +x test-filter-environment | |
615 | $ hg transplant -s ../t --filter ./test-filter-environment 0 |
|
623 | $ hg transplant -s ../t --filter ./test-filter-environment 0 | |
616 | filtering * (glob) |
|
624 | filtering * (glob) | |
617 | applying 17ab29e464c6 |
|
625 | applying 17ab29e464c6 | |
618 | 17ab29e464c6 transplanted to 5190e68026a0 |
|
626 | 17ab29e464c6 transplanted to 5190e68026a0 | |
619 |
|
627 | |||
620 | $ hg log --template '{rev} {parents} {desc}\n' |
|
628 | $ hg log --template '{rev} {parents} {desc}\n' | |
621 | 0 r1 |
|
629 | 0 r1 | |
622 | Transplant by test |
|
630 | Transplant by test | |
623 | Transplant from rev 17ab29e464c6ca53e329470efe2a9918ac617a6f |
|
631 | Transplant from rev 17ab29e464c6ca53e329470efe2a9918ac617a6f | |
624 | $ cd .. |
|
632 | $ cd .. | |
625 |
|
633 | |||
626 | test transplant with filter handles invalid changelog |
|
634 | test transplant with filter handles invalid changelog | |
627 |
|
635 | |||
628 | $ hg init filter-invalid-log |
|
636 | $ hg init filter-invalid-log | |
629 | $ cd filter-invalid-log |
|
637 | $ cd filter-invalid-log | |
630 | $ cat <<'EOF' >test-filter-invalid-log |
|
638 | $ cat <<'EOF' >test-filter-invalid-log | |
631 | > #!/bin/sh |
|
639 | > #!/bin/sh | |
632 | > echo "" > $1 |
|
640 | > echo "" > $1 | |
633 | > EOF |
|
641 | > EOF | |
634 | $ chmod +x test-filter-invalid-log |
|
642 | $ chmod +x test-filter-invalid-log | |
635 | $ hg transplant -s ../t --filter ./test-filter-invalid-log 0 |
|
643 | $ hg transplant -s ../t --filter ./test-filter-invalid-log 0 | |
636 | filtering * (glob) |
|
644 | filtering * (glob) | |
637 | abort: filter corrupted changeset (no user or date) |
|
645 | abort: filter corrupted changeset (no user or date) | |
638 | [255] |
|
646 | [255] | |
639 | $ cd .. |
|
647 | $ cd .. | |
640 |
|
648 | |||
641 | #endif |
|
649 | #endif | |
642 |
|
650 | |||
643 |
|
651 | |||
644 | test with a win32ext like setup (differing EOLs) |
|
652 | test with a win32ext like setup (differing EOLs) | |
645 |
|
653 | |||
646 | $ hg init twin1 |
|
654 | $ hg init twin1 | |
647 | $ cd twin1 |
|
655 | $ cd twin1 | |
648 | $ echo a > a |
|
656 | $ echo a > a | |
649 | $ echo b > b |
|
657 | $ echo b > b | |
650 | $ echo b >> b |
|
658 | $ echo b >> b | |
651 | $ hg ci -Am t |
|
659 | $ hg ci -Am t | |
652 | adding a |
|
660 | adding a | |
653 | adding b |
|
661 | adding b | |
654 | $ echo a > b |
|
662 | $ echo a > b | |
655 | $ echo b >> b |
|
663 | $ echo b >> b | |
656 | $ hg ci -m changeb |
|
664 | $ hg ci -m changeb | |
657 | $ cd .. |
|
665 | $ cd .. | |
658 |
|
666 | |||
659 | $ hg init twin2 |
|
667 | $ hg init twin2 | |
660 | $ cd twin2 |
|
668 | $ cd twin2 | |
661 | $ echo '[patch]' >> .hg/hgrc |
|
669 | $ echo '[patch]' >> .hg/hgrc | |
662 | $ echo 'eol = crlf' >> .hg/hgrc |
|
670 | $ echo 'eol = crlf' >> .hg/hgrc | |
663 | $ python -c "file('b', 'wb').write('b\r\nb\r\n')" |
|
671 | $ python -c "file('b', 'wb').write('b\r\nb\r\n')" | |
664 | $ hg ci -Am addb |
|
672 | $ hg ci -Am addb | |
665 | adding b |
|
673 | adding b | |
666 | $ hg transplant -s ../twin1 tip |
|
674 | $ hg transplant -s ../twin1 tip | |
667 | searching for changes |
|
675 | searching for changes | |
668 | warning: repository is unrelated |
|
676 | warning: repository is unrelated | |
669 | applying 2e849d776c17 |
|
677 | applying 2e849d776c17 | |
670 | 2e849d776c17 transplanted to 8e65bebc063e |
|
678 | 2e849d776c17 transplanted to 8e65bebc063e | |
671 | $ cat b |
|
679 | $ cat b | |
672 | a\r (esc) |
|
680 | a\r (esc) | |
673 | b\r (esc) |
|
681 | b\r (esc) | |
674 | $ cd .. |
|
682 | $ cd .. | |
675 |
|
683 | |||
676 | test transplant with merge changeset is skipped |
|
684 | test transplant with merge changeset is skipped | |
677 |
|
685 | |||
678 | $ hg init merge1a |
|
686 | $ hg init merge1a | |
679 | $ cd merge1a |
|
687 | $ cd merge1a | |
680 | $ echo a > a |
|
688 | $ echo a > a | |
681 | $ hg ci -Am a |
|
689 | $ hg ci -Am a | |
682 | adding a |
|
690 | adding a | |
683 | $ hg branch b |
|
691 | $ hg branch b | |
684 | marked working directory as branch b |
|
692 | marked working directory as branch b | |
685 | (branches are permanent and global, did you want a bookmark?) |
|
693 | (branches are permanent and global, did you want a bookmark?) | |
686 | $ hg ci -m branchb |
|
694 | $ hg ci -m branchb | |
687 | $ echo b > b |
|
695 | $ echo b > b | |
688 | $ hg ci -Am b |
|
696 | $ hg ci -Am b | |
689 | adding b |
|
697 | adding b | |
690 | $ hg update default |
|
698 | $ hg update default | |
691 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
699 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
692 | $ hg merge b |
|
700 | $ hg merge b | |
693 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
701 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
694 | (branch merge, don't forget to commit) |
|
702 | (branch merge, don't forget to commit) | |
695 | $ hg ci -m mergeb |
|
703 | $ hg ci -m mergeb | |
696 | $ cd .. |
|
704 | $ cd .. | |
697 |
|
705 | |||
698 | $ hg init merge1b |
|
706 | $ hg init merge1b | |
699 | $ cd merge1b |
|
707 | $ cd merge1b | |
700 | $ hg transplant -s ../merge1a tip |
|
708 | $ hg transplant -s ../merge1a tip | |
701 | $ cd .. |
|
709 | $ cd .. | |
702 |
|
710 | |||
703 | test transplant with merge changeset accepts --parent |
|
711 | test transplant with merge changeset accepts --parent | |
704 |
|
712 | |||
705 | $ hg init merge2a |
|
713 | $ hg init merge2a | |
706 | $ cd merge2a |
|
714 | $ cd merge2a | |
707 | $ echo a > a |
|
715 | $ echo a > a | |
708 | $ hg ci -Am a |
|
716 | $ hg ci -Am a | |
709 | adding a |
|
717 | adding a | |
710 | $ hg branch b |
|
718 | $ hg branch b | |
711 | marked working directory as branch b |
|
719 | marked working directory as branch b | |
712 | (branches are permanent and global, did you want a bookmark?) |
|
720 | (branches are permanent and global, did you want a bookmark?) | |
713 | $ hg ci -m branchb |
|
721 | $ hg ci -m branchb | |
714 | $ echo b > b |
|
722 | $ echo b > b | |
715 | $ hg ci -Am b |
|
723 | $ hg ci -Am b | |
716 | adding b |
|
724 | adding b | |
717 | $ hg update default |
|
725 | $ hg update default | |
718 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
726 | 0 files updated, 0 files merged, 1 files removed, 0 files unresolved | |
719 | $ hg merge b |
|
727 | $ hg merge b | |
720 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
728 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
721 | (branch merge, don't forget to commit) |
|
729 | (branch merge, don't forget to commit) | |
722 | $ hg ci -m mergeb |
|
730 | $ hg ci -m mergeb | |
723 | $ cd .. |
|
731 | $ cd .. | |
724 |
|
732 | |||
725 | $ hg init merge2b |
|
733 | $ hg init merge2b | |
726 | $ cd merge2b |
|
734 | $ cd merge2b | |
727 | $ hg transplant -s ../merge2a --parent 0 tip |
|
735 | $ hg transplant -s ../merge2a --parent 0 tip | |
728 | applying be9f9b39483f |
|
736 | applying be9f9b39483f | |
729 | be9f9b39483f transplanted to 9959e51f94d1 |
|
737 | be9f9b39483f transplanted to 9959e51f94d1 | |
730 | $ cd .. |
|
738 | $ cd .. | |
731 |
|
739 | |||
732 | test transplanting a patch turning into a no-op |
|
740 | test transplanting a patch turning into a no-op | |
733 |
|
741 | |||
734 | $ hg init binarysource |
|
742 | $ hg init binarysource | |
735 | $ cd binarysource |
|
743 | $ cd binarysource | |
736 | $ echo a > a |
|
744 | $ echo a > a | |
737 | $ hg ci -Am adda a |
|
745 | $ hg ci -Am adda a | |
738 | >>> file('b', 'wb').write('\0b1') |
|
746 | >>> file('b', 'wb').write('\0b1') | |
739 | $ hg ci -Am addb b |
|
747 | $ hg ci -Am addb b | |
740 | >>> file('b', 'wb').write('\0b2') |
|
748 | >>> file('b', 'wb').write('\0b2') | |
741 | $ hg ci -m changeb b |
|
749 | $ hg ci -m changeb b | |
742 | $ cd .. |
|
750 | $ cd .. | |
743 |
|
751 | |||
744 | $ hg clone -r0 binarysource binarydest |
|
752 | $ hg clone -r0 binarysource binarydest | |
745 | adding changesets |
|
753 | adding changesets | |
746 | adding manifests |
|
754 | adding manifests | |
747 | adding file changes |
|
755 | adding file changes | |
748 | added 1 changesets with 1 changes to 1 files |
|
756 | added 1 changesets with 1 changes to 1 files | |
749 | updating to branch default |
|
757 | updating to branch default | |
750 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
758 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
751 | $ cd binarydest |
|
759 | $ cd binarydest | |
752 | $ cp ../binarysource/b b |
|
760 | $ cp ../binarysource/b b | |
753 | $ hg ci -Am addb2 b |
|
761 | $ hg ci -Am addb2 b | |
754 | $ hg transplant -s ../binarysource 2 |
|
762 | $ hg transplant -s ../binarysource 2 | |
755 | searching for changes |
|
763 | searching for changes | |
756 | applying 7a7d57e15850 |
|
764 | applying 7a7d57e15850 | |
757 | skipping emptied changeset 7a7d57e15850 |
|
765 | skipping emptied changeset 7a7d57e15850 | |
758 | $ cd .. |
|
766 | $ cd .. | |
759 |
|
767 | |||
760 | Explicitly kill daemons to let the test exit on Windows |
|
768 | Explicitly kill daemons to let the test exit on Windows | |
761 |
|
769 | |||
762 | $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS |
|
770 | $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS | |
763 |
|
771 |
General Comments 0
You need to be logged in to leave comments.
Login now