diff --git a/hgext/extdiff.py b/hgext/extdiff.py --- a/hgext/extdiff.py +++ b/hgext/extdiff.py @@ -100,7 +100,8 @@ def snapshot(ui, repo, files, node, tmpr if 'x' in fctx.flags(): util.set_flags(dest, False, True) if node is None: - fns_and_mtime.append((dest, repo.wjoin(fn), os.path.getmtime(dest))) + fns_and_mtime.append((dest, repo.wjoin(fn), + os.lstat(dest).st_mtime)) return dirname, fns_and_mtime def dodiff(ui, repo, diffcmd, diffopts, pats, opts): @@ -222,7 +223,7 @@ def dodiff(ui, repo, diffcmd, diffopts, util.system(cmdline, cwd=tmproot) for copy_fn, working_fn, mtime in fns_and_mtime: - if os.path.getmtime(copy_fn) != mtime: + if os.lstat(copy_fn).st_mtime != mtime: ui.debug('file changed while diffing. ' 'Overwriting: %s (src: %s)\n' % (working_fn, copy_fn)) util.copyfile(copy_fn, working_fn) diff --git a/tests/test-extdiff.t b/tests/test-extdiff.t --- a/tests/test-extdiff.t +++ b/tests/test-extdiff.t @@ -177,3 +177,20 @@ Test with revsets: $ hg extdif -p echo -r "0::1" */extdiff.*/a.8a5febb7f867/a a.34eed99112ab/a (glob) [1] + + $ cd .. + +Test symlinks handling (issue1909) + + $ hg init testsymlinks + $ cd testsymlinks + $ echo a > a + $ hg ci -Am adda + adding a + $ echo a >> a + $ ln -s missing linka + $ hg add linka + $ hg falabala -r 0 --traceback + diffing testsymlinks.07f494440405 testsymlinks + [1] + $ cd .. diff --git a/tests/test-http-proxy.t b/tests/test-http-proxy.t --- a/tests/test-http-proxy.t +++ b/tests/test-http-proxy.t @@ -17,7 +17,7 @@ url for proxy, stream $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone --uncompressed http://localhost:$HGPORT/ b streaming all changes 3 files to transfer, 303 bytes of data - transferred * bytes in * seconds (*B/sec) (glob) + transferred * bytes in * seconds (*/sec) (glob) updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd b diff --git a/tests/test-http.t b/tests/test-http.t --- a/tests/test-http.t +++ b/tests/test-http.t @@ -27,7 +27,7 @@ clone via stream $ hg clone --uncompressed http://localhost:$HGPORT/ copy 2>&1 streaming all changes 6 files to transfer, 606 bytes of data - transferred * bytes in * seconds (*B/sec) (glob) + transferred * bytes in * seconds (*/sec) (glob) updating to branch default 4 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg verify -R copy