Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
setup_temporary_shallow(): use tempfile module
author
Michael Haggerty
<mhagger@alum.mit.edu>
Mon, 10 Aug 2015 09:47:46 +0000
(11:47 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 10 Aug 2015 19:57:14 +0000
(12:57 -0700)
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
shallow.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
f6ecc62
)
diff --git
a/shallow.c
b/shallow.c
index 7973e74196666a9368bf0a41ed2fd6c3c1f3aeb6..2ba29a5ef56351b91e0cf73f75c58ccb21522581 100644
(file)
--- a/
shallow.c
+++ b/
shallow.c
@@
-1,4
+1,5
@@
#include "cache.h"
#include "cache.h"
+#include "tempfile.h"
#include "lockfile.h"
#include "commit.h"
#include "tag.h"
#include "lockfile.h"
#include "commit.h"
#include "tag.h"
@@
-208,50
+209,28
@@
int write_shallow_commits(struct strbuf *out, int use_pack_protocol,
return write_shallow_commits_1(out, use_pack_protocol, extra, 0);
}
return write_shallow_commits_1(out, use_pack_protocol, extra, 0);
}
-static struct strbuf temporary_shallow = STRBUF_INIT;
-
-static void remove_temporary_shallow(void)
-{
- if (temporary_shallow.len) {
- unlink_or_warn(temporary_shallow.buf);
- strbuf_reset(&temporary_shallow);
- }
-}
-
-static void remove_temporary_shallow_on_signal(int signo)
-{
- remove_temporary_shallow();
- sigchain_pop(signo);
- raise(signo);
-}
+static struct tempfile temporary_shallow;
const char *setup_temporary_shallow(const struct sha1_array *extra)
{
struct strbuf sb = STRBUF_INIT;
int fd;
const char *setup_temporary_shallow(const struct sha1_array *extra)
{
struct strbuf sb = STRBUF_INIT;
int fd;
- if (temporary_shallow.len)
- die("BUG: attempt to create two temporary shallow files");
-
if (write_shallow_commits(&sb, 0, extra)) {
if (write_shallow_commits(&sb, 0, extra)) {
- strbuf_addstr(&temporary_shallow, git_path("shallow_XXXXXX"));
- fd = xmkstemp(temporary_shallow.buf);
-
- atexit(remove_temporary_shallow);
- sigchain_push_common(remove_temporary_shallow_on_signal);
+ fd = xmks_tempfile(&temporary_shallow, git_path("shallow_XXXXXX"));
if (write_in_full(fd, sb.buf, sb.len) != sb.len)
die_errno("failed to write to %s",
if (write_in_full(fd, sb.buf, sb.len) != sb.len)
die_errno("failed to write to %s",
-
temporary_shallow.buf
);
- close
(fd
);
+
get_tempfile_path(&temporary_shallow)
);
+ close
_tempfile(&temporary_shallow
);
strbuf_release(&sb);
strbuf_release(&sb);
- return
temporary_shallow.buf
;
+ return
get_tempfile_path(&temporary_shallow)
;
}
/*
* is_repository_shallow() sees empty string as "no shallow
* file".
*/
}
/*
* is_repository_shallow() sees empty string as "no shallow
* file".
*/
- return
temporary_shallow.buf
;
+ return
get_tempfile_path(&temporary_shallow)
;
}
void setup_alternate_shallow(struct lock_file *shallow_lock,
}
void setup_alternate_shallow(struct lock_file *shallow_lock,