extdiff: fix broken symlinks handling (issue1909)

This commit is contained in:
Patrick Mezard 2011-04-29 08:04:46 +02:00
parent 7564668184
commit 2cbeb4b9c6
2 changed files with 17 additions and 2 deletions

View File

@ -100,7 +100,8 @@ def snapshot(ui, repo, files, node, tmproot):
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, pats, opts):
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)

View File

@ -167,4 +167,18 @@ Test extdiff with --option:
$ hg falabala -o this -c 1
diffing this a.8a5febb7f867/a a.34eed99112ab/a
[1]
$ cd ..
$ 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 ..