mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
Merge with crew-stable
This commit is contained in:
commit
93125a20b3
31
hgext/mq.py
31
hgext/mq.py
@ -1190,17 +1190,16 @@ class queue:
|
||||
patchf.write(chunk)
|
||||
|
||||
try:
|
||||
copies = {}
|
||||
for dst in a:
|
||||
src = repo.dirstate.copied(dst)
|
||||
# during qfold, the source file for copies may
|
||||
# be removed. Treat this as a simple add.
|
||||
if src is not None and src in repo.dirstate:
|
||||
copies.setdefault(src, []).append(dst)
|
||||
repo.dirstate.add(dst)
|
||||
# remember the copies between patchparent and tip
|
||||
# this may be slow, so don't do it if we're not tracking copies
|
||||
if self.diffopts().git:
|
||||
copies = {}
|
||||
for dst in a:
|
||||
src = repo.dirstate.copied(dst)
|
||||
# during qfold, the source file for copies may
|
||||
# be removed. Treat this as a simple add.
|
||||
if src is not None and src in repo.dirstate:
|
||||
copies.setdefault(src, []).append(dst)
|
||||
repo.dirstate.add(dst)
|
||||
# remember the copies between patchparent and tip
|
||||
for dst in aaa:
|
||||
f = repo.file(dst)
|
||||
src = f.renamed(man[dst])
|
||||
@ -1211,9 +1210,15 @@ class queue:
|
||||
# we can't copy a file created by the patch itself
|
||||
if dst in copies:
|
||||
del copies[dst]
|
||||
for src, dsts in copies.iteritems():
|
||||
for dst in dsts:
|
||||
repo.dirstate.copy(src, dst)
|
||||
for src, dsts in copies.iteritems():
|
||||
for dst in dsts:
|
||||
repo.dirstate.copy(src, dst)
|
||||
else:
|
||||
for dst in a:
|
||||
repo.dirstate.add(dst)
|
||||
# Drop useless copy information
|
||||
for f in list(repo.dirstate.copies()):
|
||||
repo.dirstate.copy(None, f)
|
||||
for f in r:
|
||||
repo.dirstate.remove(f)
|
||||
# if the patch excludes a modified file, mark that
|
||||
|
@ -216,10 +216,15 @@ class dirstate(object):
|
||||
self._dirty = False
|
||||
|
||||
def copy(self, source, dest):
|
||||
"""Mark dest as a copy of source. Unmark dest if source is None.
|
||||
"""
|
||||
if source == dest:
|
||||
return
|
||||
self._dirty = True
|
||||
self._copymap[dest] = source
|
||||
if source is not None:
|
||||
self._copymap[dest] = source
|
||||
elif dest in self._copymap:
|
||||
del self._copymap[dest]
|
||||
|
||||
def copied(self, file):
|
||||
return self._copymap.get(file, None)
|
||||
|
@ -123,15 +123,12 @@ sed -n '/^diff/s/diff -r [^ ]* //p' .hg/patches/mqbase
|
||||
echo
|
||||
cd ..
|
||||
|
||||
|
||||
|
||||
echo "[diff]" >> $HGRCPATH
|
||||
echo "git=True" >> $HGRCPATH
|
||||
|
||||
# Test qrefresh --git losing copy metadata
|
||||
echo % create test repo
|
||||
hg init repo
|
||||
cd repo
|
||||
echo "[diff]" >> .hg/hgrc
|
||||
echo "git=True" >> .hg/hgrc
|
||||
echo a > a
|
||||
hg ci -Am adda
|
||||
hg copy a ab
|
||||
@ -146,3 +143,27 @@ hg qref
|
||||
hg qdiff
|
||||
cd ..
|
||||
|
||||
# Test issue 1441: qrefresh confused after hg rename
|
||||
echo % issue1441 without git patches
|
||||
hg init repo-1441
|
||||
cd repo-1441
|
||||
echo a > a
|
||||
hg add a
|
||||
hg qnew -f p
|
||||
hg mv a b
|
||||
hg qrefresh
|
||||
hg qdiff --nodates
|
||||
cd ..
|
||||
|
||||
echo % issue1441 with git patches
|
||||
hg init repo-1441-git
|
||||
cd repo-1441-git
|
||||
echo "[diff]" >> .hg/hgrc
|
||||
echo "git=True" >> .hg/hgrc
|
||||
echo a > a
|
||||
hg add a
|
||||
hg qnew -f p
|
||||
hg mv a b
|
||||
hg qrefresh
|
||||
hg qdiff --nodates
|
||||
cd ..
|
@ -253,3 +253,16 @@ copy to ac
|
||||
@@ -1,1 +1,2 @@
|
||||
a
|
||||
+c
|
||||
% issue1441 without git patches
|
||||
diff -r 000000000000 b
|
||||
--- /dev/null
|
||||
+++ b/b
|
||||
@@ -0,0 +1,1 @@
|
||||
+a
|
||||
% issue1441 with git patches
|
||||
diff --git a/b b/b
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/b
|
||||
@@ -0,0 +1,1 @@
|
||||
+a
|
||||
|
Loading…
Reference in New Issue
Block a user