##// END OF EJS Templates
merge with stable
Augie Fackler -
r38789:813e726e merge default
parent child Browse files
Show More
@@ -166,3 +166,5 b' 1ec874717d8a93b19e0d50628443e0ee5efab3a9'
166 6614cac550aea66d19c601e45efd1b7bd08d7c40 0 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
@@ -179,3 +179,5 b' 1ec874717d8a93b19e0d50628443e0ee5efab3a9'
179 6614cac550aea66d19c601e45efd1b7bd08d7c40 4.6
179 6614cac550aea66d19c601e45efd1b7bd08d7c40 4.6
180 9c5ced5276d6e7d54f7c3dadf5247b7ee98ec79c 4.6.1
180 9c5ced5276d6e7d54f7c3dadf5247b7ee98ec79c 4.6.1
181 0b63a6743010dfdbf8a8154186e119949bdaa1cc 4.6.2
181 0b63a6743010dfdbf8a8154186e119949bdaa1cc 4.6.2
182 e90130af47ce8dd53a3109aed9d15876b3e7dee8 4.7rc0
183 33ac6a72308a215e6086fbced347ec10aa963b0a 4.7
@@ -927,9 +927,9 b" coreconfigitem('progress', 'width',"
927 coreconfigitem('push', 'pushvars.server',
927 coreconfigitem('push', 'pushvars.server',
928 default=False,
928 default=False,
929 )
929 )
930 coreconfigitem('revlog', 'optimize-delta-parent-choice',
930 coreconfigitem('storage', 'revlog.optimize-delta-parent-choice',
931 default=True,
931 default=True,
932 # formely an experimental option: format.aggressivemergedeltas
932 alias=[('format', 'aggressivemergedeltas')],
933 )
933 )
934 coreconfigitem('server', 'bookmarks-pushkey-compat',
934 coreconfigitem('server', 'bookmarks-pushkey-compat',
935 default=True,
935 default=True,
@@ -411,6 +411,7 b' class changectx(basectx):'
411 self._rev = repo.changelog.rev(changeid)
411 self._rev = repo.changelog.rev(changeid)
412 return
412 return
413 except error.FilteredLookupError:
413 except error.FilteredLookupError:
414 changeid = hex(changeid) # for the error message
414 raise
415 raise
415 except LookupError:
416 except LookupError:
416 # check if it might have come from damaged dirstate
417 # check if it might have come from damaged dirstate
@@ -591,7 +592,7 b' class changectx(basectx):'
591
592
592 def descendant(self, other):
593 def descendant(self, other):
593 msg = (b'ctx.descendant(other) is deprecated, '
594 msg = (b'ctx.descendant(other) is deprecated, '
594 'use ctx.isancestorof(other)')
595 b'use ctx.isancestorof(other)')
595 self._repo.ui.deprecwarn(msg, b'4.7')
596 self._repo.ui.deprecwarn(msg, b'4.7')
596 return self.isancestorof(other)
597 return self.isancestorof(other)
597
598
@@ -2326,7 +2327,12 b' class memfilectx(committablefilectx):'
2326 revision being committed, or None."""
2327 revision being committed, or None."""
2327 super(memfilectx, self).__init__(repo, path, None, changectx)
2328 super(memfilectx, self).__init__(repo, path, None, changectx)
2328 self._data = data
2329 self._data = data
2329 self._flags = (islink and 'l' or '') + (isexec and 'x' or '')
2330 if islink:
2331 self._flags = 'l'
2332 elif isexec:
2333 self._flags = 'x'
2334 else:
2335 self._flags = ''
2330 self._copied = None
2336 self._copied = None
2331 if copied:
2337 if copied:
2332 self._copied = (copied, nullid)
2338 self._copied = (copied, nullid)
@@ -72,6 +72,11 b' else:'
72 '646': lambda: 'ascii',
72 '646': lambda: 'ascii',
73 'ANSI_X3.4-1968': lambda: 'ascii',
73 'ANSI_X3.4-1968': lambda: 'ascii',
74 }
74 }
75 # cp65001 is a Windows variant of utf-8, which isn't supported on Python 2.
76 # No idea if it should be rewritten to the canonical name 'utf-8' on Python 3.
77 # https://bugs.python.org/issue13216
78 if pycompat.iswindows and not pycompat.ispy3:
79 _encodingfixers['cp65001'] = lambda: 'utf-8'
75
80
76 try:
81 try:
77 encoding = environ.get("HGENCODING")
82 encoding = environ.get("HGENCODING")
@@ -592,7 +592,9 b' class matchctx(object):'
592 try:
592 try:
593 return predfn(fctx)
593 return predfn(fctx)
594 except (IOError, OSError) as e:
594 except (IOError, OSError) as e:
595 if e.errno in (errno.ENOENT, errno.ENOTDIR, errno.EISDIR):
595 # open()-ing a directory fails with EACCES on Windows
596 if e.errno in (errno.ENOENT, errno.EACCES, errno.ENOTDIR,
597 errno.EISDIR):
596 return False
598 return False
597 raise
599 raise
598 else:
600 else:
@@ -1773,13 +1773,13 b' have a definite end point.'
1773
1773
1774 Alias definitions for revsets. See :hg:`help revsets` for details.
1774 Alias definitions for revsets. See :hg:`help revsets` for details.
1775
1775
1776 ``revlog``
1776 ``storage``
1777 ----------
1777 -----------
1778
1778
1779 Control the strategy Mercurial uses internally to store history. Options in this
1779 Control the strategy Mercurial uses internally to store history. Options in this
1780 category impact performance and repository size.
1780 category impact performance and repository size.
1781
1781
1782 ``optimize-delta-parent-choice``
1782 ``revlog.optimize-delta-parent-choice``
1783 When storing a merge revision, both parents will be equally considered as
1783 When storing a merge revision, both parents will be equally considered as
1784 a possible delta base. This results in better delta selection and improved
1784 a possible delta base. This results in better delta selection and improved
1785 revlog compression. This option is enabled by default.
1785 revlog compression. This option is enabled by default.
@@ -731,8 +731,14 b' def clone(ui, peeropts, source, dest=Non'
731 uprev = None
731 uprev = None
732 status = None
732 status = None
733 if checkout is not None:
733 if checkout is not None:
734 if checkout in destrepo:
734 # Some extensions (at least hg-git and hg-subversion) have
735 # a peer.lookup() implementation that returns a name instead
736 # of a nodeid. We work around it here until we've figured
737 # out a better solution.
738 if len(checkout) == 20 and checkout in destrepo:
735 uprev = checkout
739 uprev = checkout
740 elif scmutil.isrevsymbol(destrepo, checkout):
741 uprev = scmutil.revsymbol(destrepo, checkout).node()
736 else:
742 else:
737 if update is not True:
743 if update is not True:
738 try:
744 try:
@@ -136,7 +136,7 b' class requestcontext(object):'
136 logourl = self.config('web', 'logourl')
136 logourl = self.config('web', 'logourl')
137 logoimg = self.config('web', 'logoimg')
137 logoimg = self.config('web', 'logoimg')
138 staticurl = (self.config('web', 'staticurl')
138 staticurl = (self.config('web', 'staticurl')
139 or req.apppath + '/static/')
139 or req.apppath.rstrip('/') + '/static/')
140 if not staticurl.endswith('/'):
140 if not staticurl.endswith('/'):
141 staticurl += '/'
141 staticurl += '/'
142
142
@@ -514,7 +514,7 b' class hgwebdir(object):'
514 logourl = config('web', 'logourl')
514 logourl = config('web', 'logourl')
515 logoimg = config('web', 'logoimg')
515 logoimg = config('web', 'logoimg')
516 staticurl = (config('web', 'staticurl')
516 staticurl = (config('web', 'staticurl')
517 or req.apppath + '/static/')
517 or req.apppath.rstrip('/') + '/static/')
518 if not staticurl.endswith('/'):
518 if not staticurl.endswith('/'):
519 staticurl += '/'
519 staticurl += '/'
520
520
@@ -668,8 +668,8 b' class localrepository(object):'
668 manifestcachesize = self.ui.configint('format', 'manifestcachesize')
668 manifestcachesize = self.ui.configint('format', 'manifestcachesize')
669 if manifestcachesize is not None:
669 if manifestcachesize is not None:
670 self.svfs.options['manifestcachesize'] = manifestcachesize
670 self.svfs.options['manifestcachesize'] = manifestcachesize
671 deltabothparents = self.ui.configbool('revlog',
671 deltabothparents = self.ui.configbool('storage',
672 'optimize-delta-parent-choice')
672 'revlog.optimize-delta-parent-choice')
673 self.svfs.options['deltabothparents'] = deltabothparents
673 self.svfs.options['deltabothparents'] = deltabothparents
674 self.svfs.options['lazydeltabase'] = not scmutil.gddeltaconfig(self.ui)
674 self.svfs.options['lazydeltabase'] = not scmutil.gddeltaconfig(self.ui)
675 chainspan = self.ui.configbytes('experimental', 'maxdeltachainspan')
675 chainspan = self.ui.configbytes('experimental', 'maxdeltachainspan')
@@ -689,6 +689,8 b' class localrepository(object):'
689 self.svfs.options['sparse-read-min-gap-size'] = srmingapsize
689 self.svfs.options['sparse-read-min-gap-size'] = srmingapsize
690 sparserevlog = SPARSEREVLOG_REQUIREMENT in self.requirements
690 sparserevlog = SPARSEREVLOG_REQUIREMENT in self.requirements
691 self.svfs.options['sparse-revlog'] = sparserevlog
691 self.svfs.options['sparse-revlog'] = sparserevlog
692 if sparserevlog:
693 self.svfs.options['generaldelta'] = True
692
694
693 for r in self.requirements:
695 for r in self.requirements:
694 if r.startswith('exp-compression-'):
696 if r.startswith('exp-compression-'):
@@ -692,7 +692,7 b' class prefixdirmatcher(basematcher):'
692 The prefix path should usually be the relative path from the root of
692 The prefix path should usually be the relative path from the root of
693 this matcher to the root of the wrapped matcher.
693 this matcher to the root of the wrapped matcher.
694
694
695 >>> m1 = match(b'root/d/e', b'f', [b'../a.txt', b'b.txt'])
695 >>> m1 = match(util.localpath(b'root/d/e'), b'f', [b'../a.txt', b'b.txt'])
696 >>> m2 = prefixdirmatcher(b'root', b'd/e/f', b'd/e', m1)
696 >>> m2 = prefixdirmatcher(b'root', b'd/e/f', b'd/e', m1)
697 >>> bool(m2(b'a.txt'),)
697 >>> bool(m2(b'a.txt'),)
698 False
698 False
@@ -1424,14 +1424,13 b' def calculateupdates(repo, wctx, mctx, a'
1424 del actions[f]
1424 del actions[f]
1425 repo.ui.note(_('end of auction\n\n'))
1425 repo.ui.note(_('end of auction\n\n'))
1426
1426
1427 _resolvetrivial(repo, wctx, mctx, ancestors[0], actions)
1428
1429 if wctx.rev() is None:
1427 if wctx.rev() is None:
1430 fractions = _forgetremoved(wctx, mctx, branchmerge)
1428 fractions = _forgetremoved(wctx, mctx, branchmerge)
1431 actions.update(fractions)
1429 actions.update(fractions)
1432
1430
1433 prunedactions = sparse.filterupdatesactions(repo, wctx, mctx, branchmerge,
1431 prunedactions = sparse.filterupdatesactions(repo, wctx, mctx, branchmerge,
1434 actions)
1432 actions)
1433 _resolvetrivial(repo, wctx, mctx, ancestors[0], actions)
1435
1434
1436 return prunedactions, diverge, renamedelete
1435 return prunedactions, diverge, renamedelete
1437
1436
@@ -1701,8 +1701,8 b' class revlog(object):'
1701 return self.isancestorrev(a, b)
1701 return self.isancestorrev(a, b)
1702
1702
1703 def descendant(self, a, b):
1703 def descendant(self, a, b):
1704 msg = (b'revlog.descendant is deprecated, use revlog.isancestorrev')
1704 msg = 'revlog.descendant is deprecated, use revlog.isancestorrev'
1705 self._repo.ui.deprecwarn(msg, b'4.7')
1705 util.nouideprecwarn(msg, '4.7')
1706 return self.isancestorrev(a, b)
1706 return self.isancestorrev(a, b)
1707
1707
1708 def isancestorrev(self, a, b):
1708 def isancestorrev(self, a, b):
@@ -1366,7 +1366,8 b' def gdinitconfig(ui):'
1366 """
1366 """
1367 # experimental config: format.generaldelta
1367 # experimental config: format.generaldelta
1368 return (ui.configbool('format', 'generaldelta')
1368 return (ui.configbool('format', 'generaldelta')
1369 or ui.configbool('format', 'usegeneraldelta'))
1369 or ui.configbool('format', 'usegeneraldelta')
1370 or ui.configbool('format', 'sparse-revlog'))
1370
1371
1371 def gddeltaconfig(ui):
1372 def gddeltaconfig(ui):
1372 """helper function to know if incoming delta should be optimised
1373 """helper function to know if incoming delta should be optimised
@@ -17,6 +17,7 b''
17 <a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a> |
17 <a href="{url|urlescape}summary{sessionvars%urlparameter}">summary</a> |
18 <a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a> |
18 <a href="{url|urlescape}shortlog{sessionvars%urlparameter}">shortlog</a> |
19 <a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a> |
19 <a href="{url|urlescape}log{sessionvars%urlparameter}">changelog</a> |
20 <a href="{url|urlescape}graph{sessionvars%urlparameter}">graph</a> |
20 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a> |
21 <a href="{url|urlescape}tags{sessionvars%urlparameter}">tags</a> |
21 <a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
22 <a href="{url|urlescape}bookmarks{sessionvars%urlparameter}">bookmarks</a> |
22 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a> |
23 <a href="{url|urlescape}branches{sessionvars%urlparameter}">branches</a> |
@@ -67,8 +67,6 b' status.relative = yes'
67 update.check = noconflict
67 update.check = noconflict
68 # Show conflicts information in `hg status`
68 # Show conflicts information in `hg status`
69 status.verbose = True
69 status.verbose = True
70 # Collapse entire directories that contain only unknown files
71 status.terse = u
72
70
73 [diff]
71 [diff]
74 git = 1
72 git = 1
@@ -212,6 +212,7 b' def _posixworker(ui, func, staticargs, a'
212 signal.signal(signal.SIGINT, oldhandler)
212 signal.signal(signal.SIGINT, oldhandler)
213 waitforworkers()
213 waitforworkers()
214 signal.signal(signal.SIGCHLD, oldchldhandler)
214 signal.signal(signal.SIGCHLD, oldchldhandler)
215 selector.close()
215 status = problem[0]
216 status = problem[0]
216 if status:
217 if status:
217 if status < 0:
218 if status < 0:
@@ -54,8 +54,10 b' default context'
54 trailing whitespace
54 trailing whitespace
55
55
56 $ cp a a.orig
56 $ cp a a.orig
57 $ sed 's/^dd$/dd \r/' a >a.new
57 >>> with open('a', 'rb') as f:
58 $ mv a.new a
58 ... data = f.read()
59 >>> with open('a', 'wb') as f:
60 ... f.write(data.replace('dd', 'dd \r'))
59 $ hg diff --nodates
61 $ hg diff --nodates
60 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
62 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
61 \x1b[0;31;1m--- a/a\x1b[0m (esc)
63 \x1b[0;31;1m--- a/a\x1b[0m (esc)
@@ -420,7 +420,7 b' Test with a revision'
420 c1
420 c1
421 c2
421 c2
422 c3
422 c3
423 con.xml
423 con.xml (no-windows !)
424 mixed
424 mixed
425 unknown
425 unknown
426 $ fileset 'eol(mac)'
426 $ fileset 'eol(mac)'
@@ -442,7 +442,7 b" Test safety of 'encoding' on removed fil"
442 c1
442 c1
443 c2
443 c2
444 c3
444 c3
445 con.xml
445 con.xml (no-windows !)
446 dos
446 dos
447 mac
447 mac
448 mixed
448 mixed
@@ -146,7 +146,7 b' Test revlog.optimize-delta-parent-choice'
146 - Verify aggressive merge uses p2 (commit 0) as delta parent
146 - Verify aggressive merge uses p2 (commit 0) as delta parent
147 $ hg up -q -C 1
147 $ hg up -q -C 1
148 $ hg merge -q 0
148 $ hg merge -q 0
149 $ hg commit -q -m merge --config revlog.optimize-delta-parent-choice=yes
149 $ hg commit -q -m merge --config storage.revlog.optimize-delta-parent-choice=yes
150 $ hg debugdeltachain -m
150 $ hg debugdeltachain -m
151 rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio
151 rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio
152 0 1 1 -1 base 59 215 59 0.27442 59 0 0.00000
152 0 1 1 -1 base 59 215 59 0.27442 59 0 0.00000
@@ -2598,9 +2598,9 b' Test metadata encoding (issue5754)'
2598 > f.write(b't\xe8st2') and None
2598 > f.write(b't\xe8st2') and None
2599 > EOF
2599 > EOF
2600 $ mkcommit ROOT
2600 $ mkcommit ROOT
2601 $ HGENCODING=latin-1 HGUSER="`cat test1`" mkcommit A0
2601 $ ( HGENCODING=latin-1 HGUSER="`cat test1`" mkcommit A0 )
2602 $ echo 42 >> A0
2602 $ echo 42 >> A0
2603 $ hg amend -m "A1" --note "`cat test2`"
2603 $ HGENCODING=latin-1 hg amend -m "A1" --note "`cat test2`"
2604 $ HGENCODING=latin-1 hg amend -m "A2" \
2604 $ HGENCODING=latin-1 hg amend -m "A2" \
2605 > --config devel.user.obsmarker="`cat test2`"
2605 > --config devel.user.obsmarker="`cat test2`"
2606 $ mkcommit B0
2606 $ mkcommit B0
@@ -2611,31 +2611,31 b' metadata should be stored in UTF-8, and '
2611 local encoding since the command is supposed to show unmodified content:
2611 local encoding since the command is supposed to show unmodified content:
2612
2612
2613 $ HGENCODING=latin-1 hg debugobsolete
2613 $ HGENCODING=latin-1 hg debugobsolete
2614 5f66a482f0bb2fcaccfc215554ad5eb9f40b50f5 718c0d00cee1429bdb73064e0d88908c601507a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'note': 't\xc3\xa8st2', 'operation': 'amend', 'user': 't\xc3\xa8st1'}
2614 5f66a482f0bb2fcaccfc215554ad5eb9f40b50f5 718c0d00cee1429bdb73064e0d88908c601507a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'note': 't\xc3\xa8st2', 'operation': 'amend', 'user': 'test'}
2615 718c0d00cee1429bdb73064e0d88908c601507a8 1132562159b35bb27e1d6b80c80ee94a1659a4da 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 't\xc3\xa8st2'}
2615 718c0d00cee1429bdb73064e0d88908c601507a8 1132562159b35bb27e1d6b80c80ee94a1659a4da 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 't\xc3\xa8st2'}
2616 e1724525bc3bec4472d7915a02811b938004a7a2 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 't\xc3\xa8st2'}
2616 8f82db6f991db367fdbb3b6dba5e187ecc3ebd96 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 't\xc3\xa8st2'}
2617
2617
2618 metadata should be converted back to local encoding when displaying:
2618 metadata should be converted back to local encoding when displaying:
2619
2619
2620 $ HGENCODING=latin-1 hg fatelog --hidden
2620 $ HGENCODING=latin-1 hg fatelog --hidden
2621 @ e1724525bc3b
2621 @ 8f82db6f991d
2622 | Obsfate: pruned by t\xe8st2 (at 1970-01-01 00:00 +0000); (esc)
2622 | Obsfate: pruned by t\xe8st2 (at 1970-01-01 00:00 +0000); (esc)
2623 o 1132562159b3
2623 o 1132562159b3
2624 |
2624 |
2625 | x 718c0d00cee1
2625 | x 718c0d00cee1
2626 |/ Obsfate: rewritten using amend as 3:1132562159b3 by t\xe8st2 (at 1970-01-01 00:00 +0000); (esc)
2626 |/ Obsfate: rewritten using amend as 3:1132562159b3 by t\xe8st2 (at 1970-01-01 00:00 +0000); (esc)
2627 | x 5f66a482f0bb
2627 | x 5f66a482f0bb
2628 |/ Obsfate: rewritten using amend as 2:718c0d00cee1 by t\xe8st1 (at 1970-01-01 00:00 +0000); (esc)
2628 |/ Obsfate: rewritten using amend as 2:718c0d00cee1 by test (at 1970-01-01 00:00 +0000);
2629 o ea207398892e
2629 o ea207398892e
2630
2630
2631 $ HGENCODING=utf-8 hg fatelog --hidden
2631 $ HGENCODING=utf-8 hg fatelog --hidden
2632 @ e1724525bc3b
2632 @ 8f82db6f991d
2633 | Obsfate: pruned by t\xc3\xa8st2 (at 1970-01-01 00:00 +0000); (esc)
2633 | Obsfate: pruned by t\xc3\xa8st2 (at 1970-01-01 00:00 +0000); (esc)
2634 o 1132562159b3
2634 o 1132562159b3
2635 |
2635 |
2636 | x 718c0d00cee1
2636 | x 718c0d00cee1
2637 |/ Obsfate: rewritten using amend as 3:1132562159b3 by t\xc3\xa8st2 (at 1970-01-01 00:00 +0000); (esc)
2637 |/ Obsfate: rewritten using amend as 3:1132562159b3 by t\xc3\xa8st2 (at 1970-01-01 00:00 +0000); (esc)
2638 | x 5f66a482f0bb
2638 | x 5f66a482f0bb
2639 |/ Obsfate: rewritten using amend as 2:718c0d00cee1 by t\xc3\xa8st1 (at 1970-01-01 00:00 +0000); (esc)
2639 |/ Obsfate: rewritten using amend as 2:718c0d00cee1 by test (at 1970-01-01 00:00 +0000);
2640 o ea207398892e
2640 o ea207398892e
2641
2641
@@ -60,3 +60,61 b' copy'
60 temporarily included 2 file(s) in the sparse checkout for merging
60 temporarily included 2 file(s) in the sparse checkout for merging
61 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
61 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
62 (branch merge, don't forget to commit)
62 (branch merge, don't forget to commit)
63
64 $ cd ..
65
66 Tests merging a file which is modified in one branch and deleted in another and
67 file is excluded from sparse checkout
68
69 $ hg init ytest
70 $ cd ytest
71 $ echo "syntax: glob" >> .hgignore
72 $ echo "*.orig" >> .hgignore
73 $ hg ci -Aqm "added .hgignore"
74 $ for ch in a d; do echo foo > $ch; hg ci -Aqm "added "$ch; done;
75 $ cat >> .hg/hgrc <<EOF
76 > [alias]
77 > glog = log -GT "{rev}:{node|short} {desc}"
78 > [extensions]
79 > sparse =
80 > EOF
81
82 $ hg glog
83 @ 2:f29feff37cfc added d
84 |
85 o 1:617125d27d6b added a
86 |
87 o 0:53f3774ed939 added .hgignore
88
89 $ hg rm d
90 $ hg ci -m "removed d"
91
92 $ hg up '.^'
93 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
94 $ hg debugsparse --reset
95 $ echo bar >> d
96 $ hg ci -Am "added bar to d"
97 created new head
98
99 $ hg glog
100 @ 4:6527874a90e4 added bar to d
101 |
102 | o 3:372c8558de45 removed d
103 |/
104 o 2:f29feff37cfc added d
105 |
106 o 1:617125d27d6b added a
107 |
108 o 0:53f3774ed939 added .hgignore
109
110 $ hg debugsparse --exclude "d"
111 $ ls
112 a
113
114 $ hg merge
115 temporarily included 1 file(s) in the sparse checkout for merging
116 local [working copy] changed d which other [merge rev] deleted
117 use (c)hanged version, (d)elete, or leave (u)nresolved? u
118 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
119 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
120 [1]
@@ -109,8 +109,11 b' combining patterns with root and pattern'
109
109
110 tweaking defaults works
110 tweaking defaults works
111 $ hg status --cwd a --config ui.tweakdefaults=yes
111 $ hg status --cwd a --config ui.tweakdefaults=yes
112 ? .
112 ? 1/in_a_1
113 ? ../b/
113 ? in_a
114 ? ../b/1/in_b_1
115 ? ../b/2/in_b_2
116 ? ../b/in_b
114 ? ../in_root
117 ? ../in_root
115 $ HGPLAIN=1 hg status --cwd a --config ui.tweakdefaults=yes
118 $ HGPLAIN=1 hg status --cwd a --config ui.tweakdefaults=yes
116 ? a/1/in_a_1 (glob)
119 ? a/1/in_a_1 (glob)
@@ -120,8 +123,11 b' tweaking defaults works'
120 ? b/in_b (glob)
123 ? b/in_b (glob)
121 ? in_root
124 ? in_root
122 $ HGPLAINEXCEPT=tweakdefaults hg status --cwd a --config ui.tweakdefaults=yes
125 $ HGPLAINEXCEPT=tweakdefaults hg status --cwd a --config ui.tweakdefaults=yes
123 ? .
126 ? 1/in_a_1
124 ? ../b/
127 ? in_a
128 ? ../b/1/in_b_1
129 ? ../b/2/in_b_2
130 ? ../b/in_b
125 ? ../in_root (glob)
131 ? ../in_root (glob)
126
132
127 relative paths can be requested
133 relative paths can be requested
@@ -151,8 +157,11 b' if relative paths are explicitly off, tw'
151 > status.relative = False
157 > status.relative = False
152 > EOF
158 > EOF
153 $ hg status --cwd a --config ui.tweakdefaults=yes
159 $ hg status --cwd a --config ui.tweakdefaults=yes
154 ? a/
160 ? a/1/in_a_1
155 ? b/
161 ? a/in_a
162 ? b/1/in_b_1
163 ? b/2/in_b_2
164 ? b/in_b
156 ? in_root
165 ? in_root
157
166
158 $ cd ..
167 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now