Log ref updates made by fetch.
If a ref is changed by http-fetch, local-fetch or ssh-fetch record the change and the remote URL/name in the log for the ref. This requires loading the config file to check logAllRefUpdates. Also fixed a bug in the ref lock generation; the log file name was not being produced right due to a bad prefix length. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
732232a123
commit
d0740d92be
17
fetch.c
17
fetch.c
@ -8,6 +8,7 @@
|
||||
#include "refs.h"
|
||||
|
||||
const char *write_ref = NULL;
|
||||
const char *write_ref_log_details = NULL;
|
||||
|
||||
const unsigned char *current_ref = NULL;
|
||||
|
||||
@ -206,13 +207,17 @@ int pull(char *target)
|
||||
{
|
||||
struct ref_lock *lock;
|
||||
unsigned char sha1[20];
|
||||
char *msg;
|
||||
int ret;
|
||||
|
||||
save_commit_buffer = 0;
|
||||
track_object_refs = 0;
|
||||
if (write_ref) {
|
||||
lock = lock_ref_sha1(write_ref, current_ref, 1);
|
||||
if (!lock)
|
||||
if (!lock) {
|
||||
error("Can't lock ref %s", write_ref);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!get_recover) {
|
||||
@ -234,7 +239,15 @@ int pull(char *target)
|
||||
}
|
||||
|
||||
if (write_ref) {
|
||||
return write_ref_sha1(lock, sha1, "git fetch");
|
||||
if (write_ref_log_details) {
|
||||
msg = xmalloc(strlen(write_ref_log_details) + 12);
|
||||
sprintf(msg, "fetch from %s", write_ref_log_details);
|
||||
} else
|
||||
msg = NULL;
|
||||
ret = write_ref_sha1(lock, sha1, msg ? msg : "fetch (unknown)");
|
||||
if (msg)
|
||||
free(msg);
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user