Re: Scripted clone generating an incomplete, unusable .git/config
From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:50:01
On Thu, 11 Nov 2010, Jonathan Nieder wrote:
quoted hunk ↗ jump to hunk
On Thu, Nov 11, 2010 at 07:16:27PM +0700, Nguyen Thai Ngoc Duy wrote:quoted
On Thu, Nov 11, 2010 at 5:37 PM, Jonathan Nieder [off-list ref] wrote:quoted
quoted
Most likely the clone is terminating when Python exits, perhaps due to SIGPIPE. It doesn't look like a bug to me; I suspect you meant to use os.system(), which is synchronous, instead.[...]quoted
If "git clone" is terminated before it completes, shouldn't it clean the uncompleted repo?Ah, so it should. trace: built-in: git clone jrn@localhost:/home/jrn/src/xz trace: run_command: ssh jrn@localhost git-upload-pack '/home/jrn/src/xz' trace: remove junk called jrn@localhosts password: trace: run_command: index-pack --stdin -v --fix-thin --keep=fetch-pack 19314 on burratino trace: exec: git index-pack --stdin -v --fix-thin --keep=fetch-pack 19314 on burratino trace: built-in: git index-pack --stdin -v --fix-thin --keep=fetch-pack 19314 on burratino remote: Counting objects: 7299, done. remote: Compressing objects: 100% (1826/1826), done. remote: Total 7299 (delta 5421), reused 7274 (delta 5401) Receiving objects: 100% (7299/7299), 2.36 MiB | 4.43 MiB/s, done. Resolving deltas: 100% (5421/5421), done. trace: exited with status 0 trace: exited with status 0 trace: remove junk called trace: remove_junk: pid != 0 Are there any downside to the following? Signed-off-by: Jonathan Nieder <redacted> ---diff --git a/builtin/clone.c b/builtin/clone.c index 19ed640..af6b40a 100644 --- a/builtin/clone.c +++ b/builtin/clone.c@@ -667,6 +667,5 @@ int cmd_clone(int argc, const char **argv, const char *prefix) strbuf_release(&branch_top); strbuf_release(&key); strbuf_release(&value); - junk_pid = 0; return err; }
I believe that would cause it to remove the repository when it terminates, regardless of whether it completed or not. That line is after all of the clone's code. I'm a bit suspicious that it's not flushing some stdio buffer and relying on the C library doing it on an orderly exit. -Daniel *This .sig left intentionally blank*