diff options
Diffstat (limited to 'src/remote.c')
-rw-r--r-- | src/remote.c | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/src/remote.c b/src/remote.c index f33f5ef3c..f320f4a52 100644 --- a/src/remote.c +++ b/src/remote.c @@ -845,9 +845,13 @@ int git_remote_download(git_remote *remote) return git_fetch_download_pack(remote); } -int git_remote_fetch(git_remote *remote) +int git_remote_fetch( + git_remote *remote, + const git_signature *signature, + const char *reflog_message) { int error; + git_buf reflog_msg_buf = GIT_BUF_INIT; /* Connect and download everything */ if ((error = git_remote_connect(remote, GIT_DIRECTION_FETCH)) != 0) @@ -859,8 +863,18 @@ int git_remote_fetch(git_remote *remote) /* We don't need to be connected anymore */ git_remote_disconnect(remote); + /* Default reflog message */ + if (reflog_message) + git_buf_sets(&reflog_msg_buf, reflog_message); + else { + git_buf_printf(&reflog_msg_buf, "fetch %s", + remote->name ? remote->name : remote->url); + } + /* Create "remote/foo" branches for all remote branches */ - return git_remote_update_tips(remote); + error = git_remote_update_tips(remote, signature, git_buf_cstr(&reflog_msg_buf)); + git_buf_free(&reflog_msg_buf); + return error; } static int remote_head_for_fetchspec_src(git_remote_head **out, git_vector *update_heads, const char *fetchspec_src) @@ -978,7 +992,12 @@ cleanup: return error; } -static int update_tips_for_spec(git_remote *remote, git_refspec *spec, git_vector *refs) +static int update_tips_for_spec( + git_remote *remote, + git_refspec *spec, + git_vector *refs, + const git_signature *signature, + const char *log_message) { int error = 0, autotag; unsigned int i = 0; @@ -1045,7 +1064,8 @@ static int update_tips_for_spec(git_remote *remote, git_refspec *spec, git_vecto continue; /* In autotag mode, don't overwrite any locally-existing tags */ - error = git_reference_create(&ref, remote->repo, refname.ptr, &head->oid, !autotag, NULL, NULL); + error = git_reference_create(&ref, remote->repo, refname.ptr, &head->oid, !autotag, + signature, log_message); if (error < 0 && error != GIT_EEXISTS) goto on_error; @@ -1074,7 +1094,10 @@ on_error: } -int git_remote_update_tips(git_remote *remote) +int git_remote_update_tips( + git_remote *remote, + const git_signature *signature, + const char *reflog_message) { git_refspec *spec, tagspec; git_vector refs; @@ -1089,7 +1112,7 @@ int git_remote_update_tips(git_remote *remote) goto out; if (remote->download_tags == GIT_REMOTE_DOWNLOAD_TAGS_ALL) { - error = update_tips_for_spec(remote, &tagspec, &refs); + error = update_tips_for_spec(remote, &tagspec, &refs, signature, reflog_message); goto out; } @@ -1097,7 +1120,7 @@ int git_remote_update_tips(git_remote *remote) if (spec->push) continue; - if ((error = update_tips_for_spec(remote, spec, &refs)) < 0) + if ((error = update_tips_for_spec(remote, spec, &refs, signature, reflog_message)) < 0) goto out; } |