git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/2] git-jump: ignore deleted files in diff mode

From
Jeff King <peff@peff.net>
Date
Sep 15, 2024, 11:20 UTC
Message-ID
<20240915112024.GB2017851@coredump.intra.peff.net>
In-Reply-To
<20240915111119.GA2017770@coredump.intra.peff.net>
If you do something like this:
  rm file_a
  echo change >file_b
  git jump diff

then we'll generate two quickfix entries for the diff, one for each file. But the one for the deleted file is rather pointless. There's no content to show since the file is gone, and in fact we open the editor with the path /dev/null!

In vim, at least, the result is a confusing annoyance: the editor opens with an empty buffer, and you have to skip past it to the useful quickfix entry (after scratching your head and figuring out that no, nothing is broken).

Let's skip such entries entirely. There's nothing useful to show, since the point is that the file has been deleted.

It is possible that you could be doing a diff whose post-image is not the working tree, and then you'd perhaps be jumping to the deleted content (or at least something that was in the same spot). But I don't think it's worth worrying about that case. For one thing, using git-jump for such diffs is a bad idea in general, as it's going to sometimes move you to the wrong spot. And two, a deletion is always going to have one hunk starting at line 1, which is not that interesting to jump to in the first place.

Signed-off-by: Jeff King <peff@peff.net>
---
 contrib/git-jump/git-jump | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contrib/git-jump/git-jump b/contrib/git-jump/git-jump
index 78e7394406..3f69675961 100755
--- a/contrib/git-jump/git-jump
+++ b/contrib/git-jump/git-jump
@@ -44,7 +44,7 @@ open_editor() {
 mode_diff() {
 	git diff --no-prefix --relative "$@" |
 	perl -ne '
-	if (m{^\+\+\+ (.*)}) { $file = $1; next }
+	if (m{^\+\+\+ (.*)}) { $file = $1 eq "/dev/null" ? undef : $1; next }
 	defined($file) or next;
 	if (m/^@@ .*?\+(\d+)/) { $line = $1; next }
 	defined($line) or next;
-- 
2.46.1.893.gc4b01a7614
Previous: Martin ÅgrenNext: Martin Ågren
Message 4 of 10 in “a few git-jump quality-of-life fixes”
  1. 0/2 a few git-jump quality-of-life fixesJeff King, Sep 15, 2024
  2. 1/2 git-jump: always specify column 1 for diff entriesJeff King, Sep 15, 2024
  3. Martin ÅgrenSep 16, 2024
  4. 2/2 git-jump: ignore deleted files in diff modeJeff King, Sep 15, 2024
  5. Martin ÅgrenSep 16, 2024
  6. Taylor BlauSep 17, 2024
  7. Junio C HamanoSep 17, 2024
  8. Jeff KingSep 24, 2024
  9. Taylor BlauSep 24, 2024
  10. Junio C HamanoSep 25, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.