Show More
@@ -219,3 +219,4 b' 86a60679cf619e14cee9442f865fcf31b142cb9f' | |||||
219 | 750920b18aaaddd654756be40dec59d90f2643be 0 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 |
@@ -232,3 +232,4 b' 86a60679cf619e14cee9442f865fcf31b142cb9f' | |||||
232 | 750920b18aaaddd654756be40dec59d90f2643be 5.9.2 |
|
232 | 750920b18aaaddd654756be40dec59d90f2643be 5.9.2 | |
233 | 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1 5.9.3 |
|
233 | 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1 5.9.3 | |
234 | a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 |
|
234 | a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 | |
|
235 | 5d08b289e2e526259d7d5ea32b70fe76d5b327d7 6.0 |
@@ -18,13 +18,8 b' DOCKER=$($BUILDDIR/hg-docker docker-path' | |||||
18 |
|
18 | |||
19 | CONTAINER=hg-docker-$PLATFORM |
|
19 | CONTAINER=hg-docker-$PLATFORM | |
20 |
|
20 | |||
21 | if [[ -z "${HG_DOCKER_OWN_USER}" ]]; then |
|
21 | DOCKERUID=$(id -u) | |
22 | DOCKERUID=1000 |
|
22 | DOCKERGID=$(id -g) | |
23 | DOCKERGID=1000 |
|
|||
24 | else |
|
|||
25 | DOCKERUID=$(id -u) |
|
|||
26 | DOCKERGID=$(id -g) |
|
|||
27 | fi |
|
|||
28 |
|
23 | |||
29 | $BUILDDIR/hg-docker build \ |
|
24 | $BUILDDIR/hg-docker build \ | |
30 | --build-arg UID=$DOCKERUID \ |
|
25 | --build-arg UID=$DOCKERUID \ |
@@ -27,6 +27,7 b' Name: mercurial' | |||||
27 | Version: snapshot |
|
27 | Version: snapshot | |
28 | Release: 0 |
|
28 | Release: 0 | |
29 | License: GPLv2+ |
|
29 | License: GPLv2+ | |
|
30 | Prefix: / | |||
30 | Group: Development/Tools |
|
31 | Group: Development/Tools | |
31 | URL: https://mercurial-scm.org/ |
|
32 | URL: https://mercurial-scm.org/ | |
32 | Source0: %{name}-%{version}-%{release}.tar.gz |
|
33 | Source0: %{name}-%{version}-%{release}.tar.gz |
@@ -336,7 +336,7 b' def overridewalk(orig, self, match, subr' | |||||
336 | nonnormalset = { |
|
336 | nonnormalset = { | |
337 | f |
|
337 | f | |
338 | for f, e in self._map.items() |
|
338 | for f, e in self._map.items() | |
339 | if e.v1_state() != "n" or e.v1_mtime() == -1 |
|
339 | if e.v1_state() != b"n" or e.v1_mtime() == -1 | |
340 | } |
|
340 | } | |
341 |
|
341 | |||
342 | copymap = self._map.copymap |
|
342 | copymap = self._map.copymap |
@@ -28,6 +28,7 b' OR TORT (INCLUDING NEGLIGENCE OR OTHERWI' | |||||
28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
29 | */ |
|
29 | */ | |
30 |
|
30 | |||
|
31 | #define PY_SSIZE_T_CLEAN | |||
31 | #include <Python.h> |
|
32 | #include <Python.h> | |
32 | #include <bytesobject.h> |
|
33 | #include <bytesobject.h> | |
33 | #ifdef _MSC_VER |
|
34 | #ifdef _MSC_VER | |
@@ -1052,7 +1053,7 b' static int pdu_info_helper(' | |||||
1052 | int64_t* total_len_out) { |
|
1053 | int64_t* total_len_out) { | |
1053 | const char* start = NULL; |
|
1054 | const char* start = NULL; | |
1054 | const char* data = NULL; |
|
1055 | const char* data = NULL; | |
1055 |
|
|
1056 | Py_ssize_t datalen = 0; | |
1056 | const char* end; |
|
1057 | const char* end; | |
1057 | int64_t expected_len; |
|
1058 | int64_t expected_len; | |
1058 | off_t position; |
|
1059 | off_t position; | |
@@ -1101,7 +1102,7 b' static PyObject* bser_pdu_len(PyObject* ' | |||||
1101 |
|
1102 | |||
1102 | static PyObject* bser_loads(PyObject* self, PyObject* args, PyObject* kw) { |
|
1103 | static PyObject* bser_loads(PyObject* self, PyObject* args, PyObject* kw) { | |
1103 | const char* data = NULL; |
|
1104 | const char* data = NULL; | |
1104 |
|
|
1105 | Py_ssize_t datalen = 0; | |
1105 | const char* start; |
|
1106 | const char* start; | |
1106 | const char* end; |
|
1107 | const char* end; | |
1107 | int64_t expected_len; |
|
1108 | int64_t expected_len; |
@@ -176,7 +176,7 b' PyObject *encodedir(PyObject *self, PyOb' | |||||
176 |
|
176 | |||
177 | if (newobj) { |
|
177 | if (newobj) { | |
178 | assert(PyBytes_Check(newobj)); |
|
178 | assert(PyBytes_Check(newobj)); | |
179 |
Py_SIZE(newobj)- |
|
179 | Py_SET_SIZE(newobj, Py_SIZE(newobj) - 1); | |
180 | _encodedir(PyBytes_AS_STRING(newobj), newlen, path, len + 1); |
|
180 | _encodedir(PyBytes_AS_STRING(newobj), newlen, path, len + 1); | |
181 | } |
|
181 | } | |
182 |
|
182 | |||
@@ -791,7 +791,7 b' PyObject *pathencode(PyObject *self, PyO' | |||||
791 |
|
791 | |||
792 | if (newobj) { |
|
792 | if (newobj) { | |
793 | assert(PyBytes_Check(newobj)); |
|
793 | assert(PyBytes_Check(newobj)); | |
794 |
Py_SIZE(newobj)- |
|
794 | Py_SET_SIZE(newobj, Py_SIZE(newobj) - 1); | |
795 | basicencode(PyBytes_AS_STRING(newobj), newlen, path, |
|
795 | basicencode(PyBytes_AS_STRING(newobj), newlen, path, | |
796 | len + 1); |
|
796 | len + 1); | |
797 | } |
|
797 | } |
@@ -147,7 +147,7 b' def delete_nodemap(tr, repo, revlog):' | |||||
147 | if revlog._nodemap_file is None: |
|
147 | if revlog._nodemap_file is None: | |
148 | msg = "calling persist nodemap on a revlog without the feature enabled" |
|
148 | msg = "calling persist nodemap on a revlog without the feature enabled" | |
149 | raise error.ProgrammingError(msg) |
|
149 | raise error.ProgrammingError(msg) | |
150 | repo.svfs.unlink(revlog._nodemap_file) |
|
150 | repo.svfs.tryunlink(revlog._nodemap_file) | |
151 |
|
151 | |||
152 |
|
152 | |||
153 | def persist_nodemap(tr, revlog, pending=False, force=False): |
|
153 | def persist_nodemap(tr, revlog, pending=False, force=False): |
@@ -94,6 +94,9 b' class improvement(object):' | |||||
94 | # Whether this improvement changes repository requirements |
|
94 | # Whether this improvement changes repository requirements | |
95 | touches_requirements = True |
|
95 | touches_requirements = True | |
96 |
|
96 | |||
|
97 | # Whether this improvement changes working copy requirements | |||
|
98 | touches_wc_requirements = True | |||
|
99 | ||||
97 | # Whether this improvement touches the dirstate |
|
100 | # Whether this improvement touches the dirstate | |
98 | touches_dirstate = False |
|
101 | touches_dirstate = False | |
99 |
|
102 | |||
@@ -188,7 +191,8 b' class dirstatev2(requirementformatvarian' | |||||
188 | touches_filelogs = False |
|
191 | touches_filelogs = False | |
189 | touches_manifests = False |
|
192 | touches_manifests = False | |
190 | touches_changelog = False |
|
193 | touches_changelog = False | |
191 |
touches_requirements = |
|
194 | touches_requirements = False | |
|
195 | touches_wc_requirements = True | |||
192 | touches_dirstate = True |
|
196 | touches_dirstate = True | |
193 |
|
197 | |||
194 |
|
198 | |||
@@ -719,10 +723,24 b' class UpgradeOperation(object):' | |||||
719 | return set([a.name for a in self.upgrade_actions]) |
|
723 | return set([a.name for a in self.upgrade_actions]) | |
720 |
|
724 | |||
721 | @property |
|
725 | @property | |
|
726 | def wc_requirements_only(self): | |||
|
727 | # does the operation only touches repository requirement | |||
|
728 | return ( | |||
|
729 | self.touches_wc_requirements | |||
|
730 | and not self.touches_requirements | |||
|
731 | and not self.touches_filelogs | |||
|
732 | and not self.touches_manifests | |||
|
733 | and not self.touches_changelog | |||
|
734 | and not self.touches_dirstate | |||
|
735 | ) | |||
|
736 | ||||
|
737 | @property | |||
722 | def requirements_only(self): |
|
738 | def requirements_only(self): | |
723 | # does the operation only touches repository requirement |
|
739 | # does the operation only touches repository requirement | |
724 | return ( |
|
740 | return ( | |
725 | self.touches_requirements |
|
741 | (self.touches_requirements | |
|
742 | or self.touches_wc_requirements | |||
|
743 | ) | |||
726 | and not self.touches_filelogs |
|
744 | and not self.touches_filelogs | |
727 | and not self.touches_manifests |
|
745 | and not self.touches_manifests | |
728 | and not self.touches_changelog |
|
746 | and not self.touches_changelog | |
@@ -769,6 +787,19 b' class UpgradeOperation(object):' | |||||
769 | return False |
|
787 | return False | |
770 |
|
788 | |||
771 | @property |
|
789 | @property | |
|
790 | def touches_wc_requirements(self): | |||
|
791 | for a in self.upgrade_actions: | |||
|
792 | # optimisations are used to re-process revlogs and does not result | |||
|
793 | # in a requirement being added or removed | |||
|
794 | if a.type == OPTIMISATION: | |||
|
795 | pass | |||
|
796 | elif a.touches_wc_requirements: | |||
|
797 | return True | |||
|
798 | for a in self.removed_actions: | |||
|
799 | if a.touches_wc_requirements: | |||
|
800 | return True | |||
|
801 | ||||
|
802 | @property | |||
772 | def touches_requirements(self): |
|
803 | def touches_requirements(self): | |
773 | for a in self.upgrade_actions: |
|
804 | for a in self.upgrade_actions: | |
774 | # optimisations are used to re-process revlogs and does not result |
|
805 | # optimisations are used to re-process revlogs and does not result |
@@ -7,6 +7,7 b'' | |||||
7 |
|
7 | |||
8 | from __future__ import absolute_import |
|
8 | from __future__ import absolute_import | |
9 |
|
9 | |||
|
10 | import errno | |||
10 | import stat |
|
11 | import stat | |
11 |
|
12 | |||
12 | from ..i18n import _ |
|
13 | from ..i18n import _ | |
@@ -633,16 +634,29 b' def upgrade_dirstate(ui, srcrepo, upgrad' | |||||
633 | util.copyfile( |
|
634 | util.copyfile( | |
634 | srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires') |
|
635 | srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires') | |
635 | ) |
|
636 | ) | |
636 | util.copyfile( |
|
637 | try: | |
637 | srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate') |
|
638 | util.copyfile( | |
638 | ) |
|
639 | srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate') | |
|
640 | ) | |||
|
641 | except (IOError, OSError) as e: | |||
|
642 | # The dirstate does not exist on an empty repo or a repo with no | |||
|
643 | # revision checked out | |||
|
644 | if e.errno != errno.ENOENT: | |||
|
645 | raise | |||
639 |
|
646 | |||
640 | assert srcrepo.dirstate._use_dirstate_v2 == (old == b'v2') |
|
647 | assert srcrepo.dirstate._use_dirstate_v2 == (old == b'v2') | |
641 | srcrepo.dirstate._map.preload() |
|
648 | srcrepo.dirstate._map.preload() | |
642 | srcrepo.dirstate._use_dirstate_v2 = new == b'v2' |
|
649 | srcrepo.dirstate._use_dirstate_v2 = new == b'v2' | |
643 | srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2 |
|
650 | srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2 | |
644 | srcrepo.dirstate._dirty = True |
|
651 | srcrepo.dirstate._dirty = True | |
645 | srcrepo.vfs.unlink(b'dirstate') |
|
652 | try: | |
|
653 | srcrepo.vfs.unlink(b'dirstate') | |||
|
654 | except (IOError, OSError) as e: | |||
|
655 | # The dirstate does not exist on an empty repo or a repo with no | |||
|
656 | # revision checked out | |||
|
657 | if e.errno != errno.ENOENT: | |||
|
658 | raise | |||
|
659 | ||||
646 | srcrepo.dirstate.write(None) |
|
660 | srcrepo.dirstate.write(None) | |
647 |
|
661 | |||
648 | scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
|
662 | scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
@@ -1795,10 +1795,10 b' fixed.' | |||||
1795 | > --config "fix.log:pattern=glob:**.log" |
|
1795 | > --config "fix.log:pattern=glob:**.log" | |
1796 |
|
1796 | |||
1797 | $ cat $LOGFILE | sort | uniq -c |
|
1797 | $ cat $LOGFILE | sort | uniq -c | |
1798 |
|
|
1798 | \s*4 bar.log (re) | |
1799 |
|
|
1799 | \s*4 baz.log (re) | |
1800 |
|
|
1800 | \s*3 foo.log (re) | |
1801 |
|
|
1801 | \s*2 qux.log (re) | |
1802 |
|
1802 | |||
1803 | $ cd .. |
|
1803 | $ cd .. | |
1804 |
|
1804 |
@@ -1634,30 +1634,24 b' Demonstrate that nothing to perform upgr' | |||||
1634 | $ hg debugupgraderepo --run |
|
1634 | $ hg debugupgraderepo --run | |
1635 | nothing to do |
|
1635 | nothing to do | |
1636 |
|
1636 | |||
1637 | #if rust |
|
1637 | #if no-rust | |
|
1638 | ||||
|
1639 | $ cat << EOF >> $HGRCPATH | |||
|
1640 | > [storage] | |||
|
1641 | > dirstate-v2.slow-path = allow | |||
|
1642 | > EOF | |||
|
1643 | ||||
|
1644 | #endif | |||
1638 |
|
|
1645 | ||
1639 | Upgrade to dirstate-v2 |
|
1646 | Upgrade to dirstate-v2 | |
1640 |
|
1647 | |||
1641 | $ hg debugformat -v --config format.exp-rc-dirstate-v2=1 |
|
1648 | $ hg debugformat -v --config format.exp-rc-dirstate-v2=1 | grep dirstate-v2 | |
1642 | format-variant repo config default |
|
|||
1643 | fncache: yes yes yes |
|
|||
1644 | dirstate-v2: no yes no |
|
1649 | dirstate-v2: no yes no | |
1645 | dotencode: yes yes yes |
|
|||
1646 | generaldelta: yes yes yes |
|
|||
1647 | share-safe: no no no |
|
|||
1648 | sparserevlog: yes yes yes |
|
|||
1649 | persistent-nodemap: yes yes no |
|
|||
1650 | copies-sdc: no no no |
|
|||
1651 | revlog-v2: yes yes no |
|
|||
1652 | changelog-v2: no no no |
|
|||
1653 | plain-cl-delta: yes yes yes |
|
|||
1654 | compression: zstd zstd zstd |
|
|||
1655 | compression-level: default default default |
|
|||
1656 | $ hg debugupgraderepo --config format.exp-rc-dirstate-v2=1 --run |
|
1650 | $ hg debugupgraderepo --config format.exp-rc-dirstate-v2=1 --run | |
1657 | upgrade will perform the following actions: |
|
1651 | upgrade will perform the following actions: | |
1658 |
|
|
1652 | ||
1659 | requirements |
|
1653 | requirements | |
1660 | preserved: dotencode, exp-revlogv2.2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store |
|
1654 | preserved: * (glob) | |
1661 | added: dirstate-v2 |
|
1655 | added: dirstate-v2 | |
1662 |
|
|
1656 | ||
1663 | dirstate-v2 |
|
1657 | dirstate-v2 | |
@@ -1677,23 +1671,10 b' Upgrade to dirstate-v2' | |||||
1677 | removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob) |
|
1671 | removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob) | |
1678 | $ ls .hg/upgradebackup.*/dirstate |
|
1672 | $ ls .hg/upgradebackup.*/dirstate | |
1679 | .hg/upgradebackup.*/dirstate (glob) |
|
1673 | .hg/upgradebackup.*/dirstate (glob) | |
1680 | $ hg debugformat -v |
|
1674 | $ hg debugformat -v | grep dirstate-v2 | |
1681 | format-variant repo config default |
|
|||
1682 | fncache: yes yes yes |
|
|||
1683 | dirstate-v2: yes no no |
|
1675 | dirstate-v2: yes no no | |
1684 | dotencode: yes yes yes |
|
|||
1685 | generaldelta: yes yes yes |
|
|||
1686 | share-safe: no no no |
|
|||
1687 | sparserevlog: yes yes yes |
|
|||
1688 | persistent-nodemap: yes yes no |
|
|||
1689 | copies-sdc: no no no |
|
|||
1690 | revlog-v2: yes yes no |
|
|||
1691 | changelog-v2: no no no |
|
|||
1692 | plain-cl-delta: yes yes yes |
|
|||
1693 | compression: zstd zstd zstd |
|
|||
1694 | compression-level: default default default |
|
|||
1695 | $ hg status |
|
1676 | $ hg status | |
1696 |
$ dd |
|
1677 | $ dd bs=12 count=1 if=.hg/dirstate 2> /dev/null | |
1697 | dirstate-v2 |
|
1678 | dirstate-v2 | |
1698 |
|
1679 | |||
1699 | Downgrade from dirstate-v2 |
|
1680 | Downgrade from dirstate-v2 | |
@@ -1702,7 +1683,7 b' Downgrade from dirstate-v2' | |||||
1702 | upgrade will perform the following actions: |
|
1683 | upgrade will perform the following actions: | |
1703 |
|
|
1684 | ||
1704 | requirements |
|
1685 | requirements | |
1705 | preserved: dotencode, exp-revlogv2.2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store |
|
1686 | preserved: * (glob) | |
1706 | removed: dirstate-v2 |
|
1687 | removed: dirstate-v2 | |
1707 |
|
|
1688 | ||
1708 | processed revlogs: |
|
1689 | processed revlogs: | |
@@ -1717,21 +1698,69 b' Downgrade from dirstate-v2' | |||||
1717 | downgrading from dirstate-v2 to v1 |
|
1698 | downgrading from dirstate-v2 to v1 | |
1718 | replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob) |
|
1699 | replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob) | |
1719 | removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob) |
|
1700 | removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob) | |
1720 | $ hg debugformat -v |
|
1701 | $ hg debugformat -v | grep dirstate-v2 | |
1721 | format-variant repo config default |
|
|||
1722 | fncache: yes yes yes |
|
|||
1723 | dirstate-v2: no no no |
|
1702 | dirstate-v2: no no no | |
1724 | dotencode: yes yes yes |
|
|||
1725 | generaldelta: yes yes yes |
|
|||
1726 | share-safe: no no no |
|
|||
1727 | sparserevlog: yes yes yes |
|
|||
1728 | persistent-nodemap: yes yes no |
|
|||
1729 | copies-sdc: no no no |
|
|||
1730 | revlog-v2: yes yes no |
|
|||
1731 | changelog-v2: no no no |
|
|||
1732 | plain-cl-delta: yes yes yes |
|
|||
1733 | compression: zstd zstd zstd |
|
|||
1734 | compression-level: default default default |
|
|||
1735 | $ hg status |
|
1703 | $ hg status | |
1736 |
|
1704 | |||
1737 | #endif |
|
1705 | $ cd .. | |
|
1706 | ||||
|
1707 | dirstate-v2: upgrade and downgrade from and empty repository: | |||
|
1708 | ------------------------------------------------------------- | |||
|
1709 | ||||
|
1710 | $ hg init --config format.exp-rc-dirstate-v2=no dirstate-v2-empty | |||
|
1711 | $ cd dirstate-v2-empty | |||
|
1712 | $ hg debugformat | grep dirstate-v2 | |||
|
1713 | dirstate-v2: no | |||
|
1714 | ||||
|
1715 | upgrade | |||
|
1716 | ||||
|
1717 | $ hg debugupgraderepo --run --config format.exp-rc-dirstate-v2=yes | |||
|
1718 | upgrade will perform the following actions: | |||
|
1719 | ||||
|
1720 | requirements | |||
|
1721 | preserved: * (glob) | |||
|
1722 | added: dirstate-v2 | |||
|
1723 | ||||
|
1724 | dirstate-v2 | |||
|
1725 | "hg status" will be faster | |||
|
1726 | ||||
|
1727 | processed revlogs: | |||
|
1728 | - all-filelogs | |||
|
1729 | - changelog | |||
|
1730 | - manifest | |||
|
1731 | ||||
|
1732 | beginning upgrade... | |||
|
1733 | repository locked and read-only | |||
|
1734 | creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob) | |||
|
1735 | (it is safe to interrupt this process any time before data migration completes) | |||
|
1736 | upgrading to dirstate-v2 from v1 | |||
|
1737 | replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob) | |||
|
1738 | removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob) | |||
|
1739 | $ hg debugformat | grep dirstate-v2 | |||
|
1740 | dirstate-v2: yes | |||
|
1741 | ||||
|
1742 | downgrade | |||
|
1743 | ||||
|
1744 | $ hg debugupgraderepo --run --config format.exp-rc-dirstate-v2=no | |||
|
1745 | upgrade will perform the following actions: | |||
|
1746 | ||||
|
1747 | requirements | |||
|
1748 | preserved: * (glob) | |||
|
1749 | removed: dirstate-v2 | |||
|
1750 | ||||
|
1751 | processed revlogs: | |||
|
1752 | - all-filelogs | |||
|
1753 | - changelog | |||
|
1754 | - manifest | |||
|
1755 | ||||
|
1756 | beginning upgrade... | |||
|
1757 | repository locked and read-only | |||
|
1758 | creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob) | |||
|
1759 | (it is safe to interrupt this process any time before data migration completes) | |||
|
1760 | downgrading from dirstate-v2 to v1 | |||
|
1761 | replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob) | |||
|
1762 | removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob) | |||
|
1763 | $ hg debugformat | grep dirstate-v2 | |||
|
1764 | dirstate-v2: no | |||
|
1765 | ||||
|
1766 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now