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

Re: git-push error: Cannot write keep file

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 24, 2009, 17:31 UTC
Message-ID
<7v7i3fivx2.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<49A428B7.4000003@spiralti.com>
Rafael Darder Calvo <rdarder@spiralti.com> writes:
Show 23 quoted lines
> Hello,
> 	I am having the following error when I try to git push.
>
>
> rdarder@shiny:~/Sources/promotoras$ git push origin ranto:ranto
> Counting objects: 256, done.
> Compressing objects: 100% (199/199), done.
> Writing objects: 100% (213/213), 216.94 KiB, done.
> Total 213 (delta 60), reused 1 (delta 0)
>
> fatal: cannot write keep file
>
> error: unpack failed: index-pack abnormal exit
> To ssh://fherrero@10.7.1.20:2222/var/www/promotoras.git
>  ! [remote rejected] ranto -> ranto (n/a (unpacker error))
> error: failed to push some refs to
> 'ssh://fherrero@10.7.1.20:2222/var/www/promotoras.git'
>
>
> I couldn't find any significant description on the error "cannot write
> keep file". git-fsck passes without errors in both repositories, and I
> find no permission problems. Can anyone give me some directions on how
> to diagnose this?

If you have access to the receiving side of the repository and the machine that hosts it, the debug patch attached may help.

One possibility is the receiving repository was initialized long time ago with an ancient git (ealier than f49fb35 (git-init-db: create "pack" subdirectory under objects, 2005-06-27), and never had a packfile in it since then. We started creating '.git/objects/pack/' subdirectory in git-init only after that commit. It was Ok for a long time because we lazily create "pack" subdirectory as needed, but a recent change 8b4eb6b (Do not perform cross-directory renames when creating packs, 2008-09-22) carelessly assumed that .git/objects/pack/ directory would always exist and tries to create files in there without making sure the leading directories exist. See $gmane/110621

    Subject: [PATCH] Make sure objects/pack exists before creating a new pack
    To: git@vger.kernel.org
    Date: Wed, 18 Feb 2009 20:48:07 -0800
    Message-ID: <7vr61vnibc.fsf@gitster.siamese.dyndns.org>
for details.
And the debug patch...
 index-pack.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/index-pack.c b/index-pack.c
index f7a3807..acdc85f 100644
--- a/index-pack.c
+++ b/index-pack.c
@@ -802,14 +802,18 @@ static void final(const char *final_pack_name, const char *curr_pack_name,
 		keep_fd = open(keep_name, O_RDWR|O_CREAT|O_EXCL, 0600);
 		if (keep_fd < 0) {
 			if (errno != EEXIST)
-				die("cannot write keep file");
+				die("cannot write keep file '%s' (%s)",
+				    keep_name,
+				    strerror(errno));
 		} else {
 			if (keep_msg_len > 0) {
 				write_or_die(keep_fd, keep_msg, keep_msg_len);
 				write_or_die(keep_fd, "\n", 1);
 			}
 			if (close(keep_fd) != 0)
-				die("cannot write keep file");
+				die("cannot close the written keep file '%s' (%s)",
+				    keep_name,
+				    strerror(errno));
 			report = "keep";
 		}
 	}
Previous: Rafael Darder CalvoNext: Rafael Darder Calvo
Message 2 of 10 in “git-push error: Cannot write keep file”
  1. Rafael Darder CalvoFeb 24, 2009
  2. Junio C HamanoFeb 24, 2009
  3. Rafael Darder CalvoFeb 24, 2009
  4. Make sure objects/pack exists before creating a new packJunio C Hamano, Feb 25, 2009
  5. Junio C HamanoFeb 25, 2009
  6. Johannes SixtFeb 26, 2009
  7. Mike RalphsonFeb 26, 2009
  8. Johannes SixtFeb 26, 2009
  9. Mike RalphsonFeb 26, 2009
  10. Junio C HamanoFeb 26, 2009

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.