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('re |
|
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('re |
|
671 | deltabothparents = self.ui.configbool('storage', | |
672 |
|
|
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 = |
|
1704 | msg = 'revlog.descendant is deprecated, use revlog.isancestorrev' | |
1705 |
|
|
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 |
|
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 |
|
|
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 |
|
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 |
|
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 |
? |
|
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