Commit 7343641
committed
Detect new files in diffs
New files in patch are shown as
diff --git a/git_deps/blame.py b/git_deps/blame.py
new file mode 100644
index 0000000..41d79fe
--- /dev/null
+++ b/git_deps/blame.py
@@ -0,0 +1,61 @@
This is even visible in pygit2.Diff.patch.
However, when you look at the same diff's
pygit2.Patch.delta.old_file.path it is not '/dev/null' but
'git_deps/blame.py'. This could have been caught up by tree_lookup() in
blame_diff_hunk if '/dev/null' was checked. Because old_file.path is a
valid filename though, tree_lookup() may succeed. When?
Consider case of moving a file and replacing it with a symlink:
diff --git a/some-script b/some-script
deleted file mode 100755
index 21c9f09..0000000
--- a/some-script
+++ /dev/null
@@ -1,3 +0,0 @@ <-- git-deps examines this hunk
-#!/usr/bin/perl
-...
-
diff --git a/some-script b/some-script
new file mode 120000
index 0000000..0098051
--- /dev/null
+++ b/some-script
@@ -0,0 +1 @@ <-- this can be skipped, new file
+newdir/some-script
As a fix look at file mode of each Patch.delta's file and detect new
files from old_file.mode, new files don't bring about any deps so they
can be skipped in hunk examination.
Fixes aspiers#41
Ref aspiers#1081 parent 89d51e8 commit 7343641
1 file changed
+4
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
144 | 144 | | |
145 | 145 | | |
146 | 146 | | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
147 | 150 | | |
148 | 151 | | |
149 | 152 | | |
| |||
342 | 345 | | |
343 | 346 | | |
344 | 347 | | |
| 348 | + | |
345 | 349 | | |
346 | 350 | | |
347 | 351 | | |
| |||
0 commit comments