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

Does "git push" open a pack for read before closing it?

From
Ggit-mailinglist@happybeing.com <git-mailinglist@happybeing.com>
Date
Dec 21, 2018, 12:46 UTC
Message-ID
<5878633d-cdbd-ce05-30de-3417386c720e@happybeing.com>
[Major ignorance alert]

I'm writing software to implement a FUSE mount for a decentralised file system and during testing with git I see some strange behaviour which I'd like to investigate. It might be a bug in my code, or even the FUSE lib I'm using, or it might be intended behaviour by git.

So one thing I'd like to do is check if this is expected in git.
SYSTEM
OS: Ubuntu 18.10
git version 2.19.1
Decentralised storage mounted at ~/SAFE

What I'm doing I'm testing my FUSE implementation for SAFE Network while exploring the use of git with decentralised storage, so not necessarily in a sensible arrangement (comments on that also welcome).

I have a folder at ~/SAFE/_public/tests/data1/ and want to create a bare repo there to use as a remote from my local drive for an existing git repo at ~/src/safe/sjs.git

Anyway, I do the following sequence of commands which are all fine up until the last one which eventually fails:

  cd ~/SAFE/_public/tests/data1
  git init --bare blah
  cd ~/src/safe/sjs.git
  git remote remove origin
  git remote add origin ~/SAFE/_public/tests/data1/blah
  git push origin master
Here's the output from the last command above:
Enumerating objects: 373, done.
Counting objects: 100% (373/373), done.
Delta compression using up to 8 threads
Compressing objects: 100% (371/371), done.
Writing objects: 100% (373/373), 187.96 KiB | 33.00 KiB/s, done.
Total 373 (delta 254), reused 0 (delta 0)
remote: fatal: unable to open
/home/mrh/SAFE/_public/tests/data1/blah/./objects/incoming-73lbb6/pack/tmp_pack_pL28kQ:
Remote I/O error
error: remote unpack failed: index-pack abnormal exit
To /home/mrh/SAFE/_public/tests/data1/blah
 ! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '/home/mrh/SAFE/_public/tests/data1/blah'

Inspecting the logs from my FUSE implementation I see that there's a problem related to this file on the mounted storage:

 /_public/tests/data1/blah/objects/incoming-73lbb6/pack/tmp_pack_pL28kQ

Prior to the error the file is written to multiple times by git - all good (about 200kB in all). Then, before the file is closed I see an attempt to open it for read, which fails. The failure is because I don't support read on a file that is open for write yet, and I'm not sure if that is sensible or what git might be expecting to do given the file has not even been flushed to disk at this point.

So I'd like to know if this is expected behaviour by git (or where to look to find out), and if it is expected, then what might git expect to do if the file were opened successfully?

N.B. After the failure, the file is closed and then deleted!

Also note that it is possible the behaviour I'm seeing is not really git but another issue, such as a bug in the sync/async aspect of my code.

Thanks
Mark
-- 
Secure Access For Everyone:
- SAFE Network
- First Autonomous Decentralised Internet
https://safenetwork.tech
Next: brian m. carlson
Message 1 of 3 in “Does "git push" open a pack for read before closing it?”
  1. git-mailinglist@happybeing.comDec 21, 2018
  2. brian m. carlsonDec 22, 2018
  3. git-mailinglist@happybeing.comJan 7, 2019

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.