changeset 12345:e0ee3e822a9a

Merge with stable
author Patrick Mezard <pmezard@gmail.com>
date Mon, 20 Sep 2010 22:29:13 +0200
parents f00953d9533c (current diff) b6173aee4a47 (diff)
children 9f7f58afc131 cb59654c2c7a
files hgext/mq.py mercurial/cmdutil.py mercurial/context.py mercurial/dirstate.py mercurial/patch.py mercurial/util.py tests/test-convert-svn-sink.out tests/test-mq-symlinks.out tests/test-mq-symlinks.t tests/test-rename.out tests/test-rename.t
diffstat 12 files changed, 80 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/convert/gnuarch.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/hgext/convert/gnuarch.py	Mon Sep 20 22:29:13 2010 +0200
@@ -138,7 +138,7 @@
             raise util.Abort(_('internal calling inconsistency'))
 
         # Raise IOError if necessary (i.e. deleted files).
-        if not os.path.exists(os.path.join(self.tmppath, name)):
+        if not os.path.lexists(os.path.join(self.tmppath, name)):
             raise IOError
 
         return self._getfile(name, rev)
--- a/hgext/convert/subversion.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/hgext/convert/subversion.py	Mon Sep 20 22:29:13 2010 +0200
@@ -1037,7 +1037,7 @@
         # our copyfile method expects to record a copy that has
         # already occurred.  Cross the semantic gap.
         wdest = self.wjoin(dest)
-        exists = os.path.exists(wdest)
+        exists = os.path.lexists(wdest)
         if exists:
             fd, tempname = tempfile.mkstemp(
                 prefix='hg-copy-', dir=os.path.dirname(wdest))
--- a/hgext/mq.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/hgext/mq.py	Mon Sep 20 22:29:13 2010 +0200
@@ -674,7 +674,7 @@
                 removed = []
                 merged = []
                 for f in files:
-                    if os.path.exists(repo.wjoin(f)):
+                    if os.path.lexists(repo.wjoin(f)):
                         merged.append(f)
                     else:
                         removed.append(f)
--- a/mercurial/cmdutil.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/mercurial/cmdutil.py	Mon Sep 20 22:29:13 2010 +0200
@@ -422,7 +422,7 @@
             return
 
         # check for overwrites
-        exists = os.path.exists(target)
+        exists = os.path.lexists(target)
         if not after and exists or after and state in 'mn':
             if not opts['force']:
                 ui.warn(_('%s: not overwriting - file exists\n') %
--- a/mercurial/context.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/mercurial/context.py	Mon Sep 20 22:29:13 2010 +0200
@@ -825,7 +825,7 @@
         wlock = self._repo.wlock()
         try:
             for f in list:
-                if unlink and os.path.exists(self._repo.wjoin(f)):
+                if unlink and os.path.lexists(self._repo.wjoin(f)):
                     self._repo.ui.warn(_("%s still exists!\n") % f)
                 elif self._repo.dirstate[f] == 'a':
                     self._repo.dirstate.forget(f)
@@ -853,7 +853,7 @@
 
     def copy(self, source, dest):
         p = self._repo.wjoin(dest)
-        if not (os.path.exists(p) or os.path.islink(p)):
+        if not os.path.lexists(p):
             self._repo.ui.warn(_("%s does not exist!\n") % dest)
         elif not (os.path.isfile(p) or os.path.islink(p)):
             self._repo.ui.warn(_("copy failed: %s is not a file or a "
--- a/mercurial/dirstate.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/mercurial/dirstate.py	Mon Sep 20 22:29:13 2010 +0200
@@ -362,7 +362,7 @@
         norm_path = os.path.normcase(path)
         fold_path = self._foldmap.get(norm_path, None)
         if fold_path is None:
-            if knownpath or not os.path.exists(os.path.join(self._root, path)):
+            if knownpath or not os.path.lexists(os.path.join(self._root, path)):
                 fold_path = path
             else:
                 fold_path = self._foldmap.setdefault(norm_path,
--- a/mercurial/patch.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/mercurial/patch.py	Mon Sep 20 22:29:13 2010 +0200
@@ -25,7 +25,7 @@
 
 def copyfile(src, dst, basedir):
     abssrc, absdst = [util.canonpath(basedir, basedir, x) for x in [src, dst]]
-    if os.path.exists(absdst):
+    if os.path.lexists(absdst):
         raise util.Abort(_("cannot create %s: destination already exists") %
                          dst)
 
@@ -923,7 +923,7 @@
     if afile == bfile:
         goodb = gooda
     else:
-        goodb = not nullb and os.path.exists(bfile)
+        goodb = not nullb and os.path.lexists(bfile)
     createfunc = hunk.createfile
     missing = not goodb and not gooda and not createfunc()
 
--- a/mercurial/util.py	Mon Sep 20 15:46:17 2010 +0200
+++ b/mercurial/util.py	Mon Sep 20 22:29:13 2010 +0200
@@ -644,7 +644,7 @@
             l = l + 1
         name = name[l:]
 
-    if not os.path.exists(os.path.join(root, name)):
+    if not os.path.lexists(os.path.join(root, name)):
         return None
 
     seps = os.sep
--- a/tests/test-convert-svn-sink	Mon Sep 20 15:46:17 2010 +0200
+++ b/tests/test-convert-svn-sink	Mon Sep 20 22:29:13 2010 +0200
@@ -29,6 +29,7 @@
 echo a > a/a
 mkdir -p a/d1/d2
 echo b > a/d1/d2/b
+ln -s a/missing a/link
 echo % add
 hg --cwd a ci -d '0 0' -A -m 'add a file'
 
@@ -43,6 +44,7 @@
 cmp a/a a-hg-wc/a && echo same || echo different
 
 hg --cwd a mv a b
+hg --cwd a mv link newlink
 echo % rename
 hg --cwd a ci -d '2 0' -m 'rename a file'
 hg --cwd a tip -q
--- a/tests/test-convert-svn-sink.out	Mon Sep 20 15:46:17 2010 +0200
+++ b/tests/test-convert-svn-sink.out	Mon Sep 20 22:29:13 2010 +0200
@@ -1,8 +1,9 @@
 % add
 adding a
 adding d1/d2/b
+adding link
 % modify
-1:e0e2b8a9156b
+1:8231f652da37
 assuming destination a-hg
 initializing svn repository 'a-hg'
 initializing svn working copy 'a-hg-wc'
@@ -17,6 +18,7 @@
  2 1 test d1
  2 1 test d1/d2
  2 1 test d1/d2/b
+ 2 1 test link
 <?xml version="1.0"?>
 <log>
 <logentry
@@ -42,6 +44,8 @@
    action="A">/d1/d2</path>
 <path
    action="A">/d1/d2/b</path>
+<path
+   action="A">/link</path>
 </paths>
 <msg>add a file</msg>
 </logentry>
@@ -49,13 +53,15 @@
 a:
 a
 d1
+link
 
 a-hg-wc:
 a
 d1
+link
 same
 % rename
-2:eb5169441d43
+2:a67e26ccec09
 assuming destination a-hg
 initializing svn working copy 'a-hg-wc'
 scanning source...
@@ -68,6 +74,7 @@
  3 1 test d1
  3 1 test d1/d2
  3 1 test d1/d2/b
+ 3 3 test newlink
 <?xml version="1.0"?>
 <log>
 <logentry
@@ -81,6 +88,12 @@
    copyfrom-path="/a"
    copyfrom-rev="2"
    action="A">/b</path>
+<path
+   copyfrom-path="/link"
+   copyfrom-rev="2"
+   action="A">/newlink</path>
+<path
+   action="D">/link</path>
 </paths>
 <msg>rename a file</msg>
 </logentry>
@@ -88,12 +101,14 @@
 a:
 b
 d1
+newlink
 
 a-hg-wc:
 b
 d1
+newlink
 % copy
-3:60effef6ab48
+3:0cf087b9ab02
 assuming destination a-hg
 initializing svn working copy 'a-hg-wc'
 scanning source...
@@ -107,6 +122,7 @@
  4 1 test d1
  4 1 test d1/d2
  4 1 test d1/d2/b
+ 4 3 test newlink
 <?xml version="1.0"?>
 <log>
 <logentry
@@ -126,13 +142,15 @@
 b
 c
 d1
+newlink
 
 a-hg-wc:
 b
 c
 d1
+newlink
 % remove
-4:87bbe3013fb6
+4:07b2e34a5b17
 assuming destination a-hg
 initializing svn working copy 'a-hg-wc'
 scanning source...
@@ -145,6 +163,7 @@
  5 1 test d1
  5 1 test d1/d2
  5 1 test d1/d2/b
+ 5 3 test newlink
 <?xml version="1.0"?>
 <log>
 <logentry
@@ -161,12 +180,14 @@
 a:
 c
 d1
+newlink
 
 a-hg-wc:
 c
 d1
+newlink
 % executable
-5:ff42e473c340
+5:31093672760b
 assuming destination a-hg
 initializing svn working copy 'a-hg-wc'
 scanning source...
@@ -179,6 +200,7 @@
  6 1 test d1
  6 1 test d1/d2
  6 1 test d1/d2/b
+ 6 3 test newlink
 <?xml version="1.0"?>
 <log>
 <logentry
--- a/tests/test-mq-symlinks.t	Mon Sep 20 15:46:17 2010 +0200
+++ b/tests/test-mq-symlinks.t	Mon Sep 20 22:29:13 2010 +0200
@@ -88,3 +88,33 @@
   C b
   C c
   C s
+
+replace broken symlink with another broken symlink
+
+  $ ln -s linka linka
+  $ hg add linka
+  $ hg qnew link
+  $ hg mv linka linkb
+  $ ln -sf linkb linkb
+  $ hg qnew movelink
+  $ hg qpop
+  popping movelink
+  now at: link
+  $ hg qpush
+  applying movelink
+  now at: movelink
+  $ $TESTDIR/readlink.py linkb
+  linkb -> linkb
+
+check patch does not overwrite untracked symlinks
+
+  $ hg qpop
+  popping movelink
+  now at: link
+  $ ln -s linkbb linkb
+  $ hg qpush
+  applying movelink
+  patch failed, unable to continue (try -v)
+  patch failed, rejects left in working dir
+  errors during apply, please fix and refresh movelink
+  [2]
--- a/tests/test-rename.t	Mon Sep 20 15:46:17 2010 +0200
+++ b/tests/test-rename.t	Mon Sep 20 22:29:13 2010 +0200
@@ -372,6 +372,17 @@
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ rm d1/ca
 
+attempt to overwrite an existing broken symlink
+
+  $ ln -s ba d1/ca
+  $ hg rename --traceback d1/ba d1/ca
+  d1/ca: not overwriting - file exists
+  $ hg status -C
+  ? d1/ca
+  $ hg update -C
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ rm d1/ca
+
 replace a symlink with a file
 
   $ ln -s ba d1/ca