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

Re: file disappears after git rebase (missing one commit)

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Aug 18, 2007, 20:55 UTC
Message-ID
<alpine.LFD.0.999.0708181334200.30176@woody.linux-foundation.org>
In-Reply-To
<e7bda7770708181329i7a64e613y88187a608c323a07@mail.gmail.com>
On Sat, 18 Aug 2007, Torgil Svensson wrote:
Show 7 quoted lines
> 
> > In other words, "git rebase" really is just a series of cherry-picks, 
> > but it avoids patches that have the same patch ID as something that is 
> > already upstream. That helps *enormously*, but it so happens that the 
> > patch ID's don't work really well for binary diffs.
> 
> Git cherry-pick seems to work on that particular patch:

Yes, cherry-picking itself works, it's just that "git rebase" probably won't even *try* to cherry-pick it because it thinks it is already applied.

> > Try this patch - see if it helps. Totally untested! It will enable 
> > patch ID's on binary diffs too, which should avoid this issue.
> 
> That didn't help. Same symptom.

Yeah, I was thinking about the external "git-patch-id" program, which actually takes the diff and looks at it from there. But "--ignore-if-in-upstream" does its own binary file testing, and doesn't use the generic diff code at all.

So the following patch is likely much better..
		Linus
---
 diff.c |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/diff.c b/diff.c
index 97cc5bc..a7e7671 100644
--- a/diff.c
+++ b/diff.c
@@ -2919,10 +2919,6 @@ static int diff_get_patch_id(struct diff_options *options, unsigned char *sha1)
 				fill_mmfile(&mf2, p->two) < 0)
 			return error("unable to read files to diff");
 
-		/* Maybe hash p->two? into the patch id? */
-		if (diff_filespec_is_binary(p->two))
-			continue;
-
 		len1 = remove_space(p->one->path, strlen(p->one->path));
 		len2 = remove_space(p->two->path, strlen(p->two->path));
 		if (p->one->mode == 0)
Previous: Torgil SvenssonNext: Torgil Svensson
Message 4 of 6 in “file disappears after git rebase (missing one commit)”
  1. Torgil SvenssonAug 18, 2007
  2. Linus TorvaldsAug 18, 2007
  3. Torgil SvenssonAug 18, 2007
  4. Linus TorvaldsAug 18, 2007
  5. Torgil SvenssonAug 18, 2007
  6. Take binary diffs into account for "git rebase"Linus Torvalds, Aug 18, 2007

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.