##// END OF EJS Templates
dirstate-guard: remove it usage in `mq`...
marmoute -
r50956:64b3cc02 default
parent child Browse files
Show More
@@ -82,7 +82,6 b' from mercurial.pycompat import ('
82 from mercurial import (
82 from mercurial import (
83 cmdutil,
83 cmdutil,
84 commands,
84 commands,
85 dirstateguard,
86 encoding,
85 encoding,
87 error,
86 error,
88 extensions,
87 extensions,
@@ -1993,72 +1992,65 b' class queue:'
1993 bmlist = repo[top].bookmarks()
1992 bmlist = repo[top].bookmarks()
1994
1993
1995 with repo.dirstate.changing_parents(repo):
1994 with repo.dirstate.changing_parents(repo):
1996 # XXX do we actually need the dirstateguard
1995 if diffopts.git or diffopts.upgrade:
1997 dsguard = None
1996 copies = {}
1998 try:
1997 for dst in a:
1999 dsguard = dirstateguard.dirstateguard(repo, b'mq.refresh')
1998 src = repo.dirstate.copied(dst)
2000 if diffopts.git or diffopts.upgrade:
1999 # during qfold, the source file for copies may
2001 copies = {}
2000 # be removed. Treat this as a simple add.
2002 for dst in a:
2001 if src is not None and src in repo.dirstate:
2003 src = repo.dirstate.copied(dst)
2002 copies.setdefault(src, []).append(dst)
2004 # during qfold, the source file for copies may
2003 repo.dirstate.update_file(
2005 # be removed. Treat this as a simple add.
2004 dst, p1_tracked=False, wc_tracked=True
2006 if src is not None and src in repo.dirstate:
2005 )
2007 copies.setdefault(src, []).append(dst)
2006 # remember the copies between patchparent and qtip
2008 repo.dirstate.update_file(
2007 for dst in aaa:
2009 dst, p1_tracked=False, wc_tracked=True
2008 src = ctx[dst].copysource()
2009 if src:
2010 copies.setdefault(src, []).extend(
2011 copies.get(dst, [])
2010 )
2012 )
2011 # remember the copies between patchparent and qtip
2013 if dst in a:
2012 for dst in aaa:
2014 copies[src].append(dst)
2013 src = ctx[dst].copysource()
2015 # we can't copy a file created by the patch itself
2014 if src:
2016 if dst in copies:
2015 copies.setdefault(src, []).extend(
2017 del copies[dst]
2016 copies.get(dst, [])
2018 for src, dsts in copies.items():
2017 )
2019 for dst in dsts:
2018 if dst in a:
2020 repo.dirstate.copy(src, dst)
2019 copies[src].append(dst)
2021 else:
2020 # we can't copy a file created by the patch itself
2022 for dst in a:
2021 if dst in copies:
2023 repo.dirstate.update_file(
2022 del copies[dst]
2024 dst, p1_tracked=False, wc_tracked=True
2023 for src, dsts in copies.items():
2025 )
2024 for dst in dsts:
2026 # Drop useless copy information
2025 repo.dirstate.copy(src, dst)
2027 for f in list(repo.dirstate.copies()):
2026 else:
2028 repo.dirstate.copy(None, f)
2027 for dst in a:
2029 for f in r:
2028 repo.dirstate.update_file(
2030 repo.dirstate.update_file_p1(f, p1_tracked=True)
2029 dst, p1_tracked=False, wc_tracked=True
2031 # if the patch excludes a modified file, mark that
2030 )
2032 # file with mtime=0 so status can see it.
2031 # Drop useless copy information
2033 mm = []
2032 for f in list(repo.dirstate.copies()):
2034 for i in range(len(m) - 1, -1, -1):
2033 repo.dirstate.copy(None, f)
2035 if not match1(m[i]):
2034 for f in r:
2036 mm.append(m[i])
2035 repo.dirstate.update_file_p1(f, p1_tracked=True)
2037 del m[i]
2036 # if the patch excludes a modified file, mark that
2038 for f in m:
2037 # file with mtime=0 so status can see it.
2039 repo.dirstate.update_file_p1(f, p1_tracked=True)
2038 mm = []
2040 for f in mm:
2039 for i in range(len(m) - 1, -1, -1):
2041 repo.dirstate.update_file_p1(f, p1_tracked=True)
2040 if not match1(m[i]):
2042 for f in forget:
2041 mm.append(m[i])
2043 repo.dirstate.update_file_p1(f, p1_tracked=False)
2042 del m[i]
2044
2043 for f in m:
2045 user = ph.user or ctx.user()
2044 repo.dirstate.update_file_p1(f, p1_tracked=True)
2046
2045 for f in mm:
2047 oldphase = repo[top].phase()
2046 repo.dirstate.update_file_p1(f, p1_tracked=True)
2048
2047 for f in forget:
2049 # assumes strip can roll itself back if interrupted
2048 repo.dirstate.update_file_p1(f, p1_tracked=False)
2050 repo.setparents(*cparents)
2049
2051 self.applied.pop()
2050 user = ph.user or ctx.user()
2052 self.applieddirty = True
2051
2053 strip(self.ui, repo, [top], update=False, backup=False)
2052 oldphase = repo[top].phase()
2053
2054 # assumes strip can roll itself back if interrupted
2055 repo.setparents(*cparents)
2056 self.applied.pop()
2057 self.applieddirty = True
2058 strip(self.ui, repo, [top], update=False, backup=False)
2059 dsguard.close()
2060 finally:
2061 release(dsguard)
2062
2054
2063 try:
2055 try:
2064 # might be nice to attempt to roll back strip after this
2056 # might be nice to attempt to roll back strip after this
General Comments 0
You need to be logged in to leave comments. Login now