# HG changeset patch # User Johan Bjork # Date 1381667910 14400 # Node ID 1184edaead7ac68b51ff1d5fdf4ed2913c3ac7bf # Parent 1e13a5a9c66e24348be9d9b684cbf38c5a848087 patch: ensure valid git diffs if source/destination file is missing (issue4046) This is arguably a workaround, a better fix may be in the repo to ensure that it won't list a file 'modified' unless there is a file context for the previous version. diff -r 1e13a5a9c66e -r 1184edaead7a mercurial/patch.py --- a/mercurial/patch.py Sun Oct 27 00:24:25 2013 +0900 +++ b/mercurial/patch.py Sun Oct 13 08:38:30 2013 -0400 @@ -1703,7 +1703,7 @@ tn = getfilectx(f, ctx2).data() a, b = f, f if opts.git or losedatafn: - if f in added: + if f in added or (f in modified and to is None): mode = gitmode[ctx2.flags(f)] if f in copy or f in copyto: if opts.git: @@ -1739,7 +1739,7 @@ if not opts.git and not tn: # regular diffs cannot represent new empty file losedatafn(f) - elif f in removed: + elif f in removed or (f in modified and tn is None): if opts.git: # have we already reported a copy above? if ((f in copy and copy[f] in added diff -r 1e13a5a9c66e -r 1184edaead7a tests/test-git-export.t --- a/tests/test-git-export.t Sun Oct 27 00:24:25 2013 +0900 +++ b/tests/test-git-export.t Sun Oct 13 08:38:30 2013 -0400 @@ -360,3 +360,23 @@ +foo $ hg ci -m 'add filename with spaces' +Additions should be properly marked even in the middle of a merge + + $ hg up -r -2 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo "New File" >> inmerge + $ hg add inmerge + $ hg ci -m "file in merge" + created new head + $ hg up 23 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg merge + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg diff -g + diff --git a/inmerge b/inmerge + new file mode 100644 + --- /dev/null + +++ b/inmerge + @@ -0,0 +1,1 @@ + +New File diff -r 1e13a5a9c66e -r 1184edaead7a tests/test-shelve.t --- a/tests/test-shelve.t Sun Oct 27 00:24:25 2013 +0900 +++ b/tests/test-shelve.t Sun Oct 13 08:38:30 2013 -0400 @@ -228,6 +228,7 @@ +a +>>>>>>> other diff --git a/b.rename/b b/b.rename/b + new file mode 100644 --- /dev/null +++ b/b.rename/b @@ -0,0 +1,1 @@ @@ -239,6 +240,7 @@ @@ -1,1 +0,0 @@ -b diff --git a/c.copy b/c.copy + new file mode 100644 --- /dev/null +++ b/c.copy @@ -0,0 +1,1 @@