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

new file mode 160000

From
JEJörn Engel <joern@purestorage.com>
Date
Mar 10, 2020, 18:41 UTC
Message-ID
<20200310184111.GD1443@cork>

Something weird happened to us and I have no idea how to reproduce it. A developer managed to create a git commit with the following content:

diff --git a/foo b/foo
new file mode 160000
index 000000000000..b7e7816c1266
--- /dev/null
+++ b/foo
@@ -0,0 +1 @@
+one line of content

File name and content obfuscated, the rest is verbatim from the git
commit.

Now, file mode 160000 doesn't make sense to me.  It doesn't correspond
to any known file type and I cannot explain how this commit was created
in the first place.  But whatever the mechanism, the git client should
have refused it.

Next, the commit was pushed to our git server, which happily accepted
it.  Again, I would argue that the git server should have refused the
push.

Finally, others including myself pulled and checked out a branch with
this commit.  On checkout, an empty directory is being created and
caused various mayhem.  I get:
	error: 'foo' does not have a commit checked out
	fatal: updating files failed

Not sure what the correct solution would be here.  An empty directory is
a bad idea, but I cannot think of any "correct" way to handle things
once the bad commit is in the tree.

In case it matters, my client is: git version 2.25.0

Jörn

--
So, one might well ask, if Congress and the White House, Republicans
and Democrats, liberals and conservatives, all now agree on reform,
how meaningful can the reform be?
-- David Cole
Next: Andreas Schwab
Message 1 of 9 in “new file mode 160000”
  1. Jörn EngelMar 10, 2020
  2. Andreas SchwabMar 10, 2020
  3. Junio C HamanoMar 10, 2020
  4. Andreas SchwabMar 10, 2020
  5. Junio C HamanoMar 11, 2020
  6. Bryan TurnerMar 10, 2020
  7. Junio C HamanoMar 10, 2020
  8. Jörn EngelMar 10, 2020
  9. brian m. carlsonMar 10, 2020

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.