Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2014-03-19 01:16:58 +0400
committerCarlos Martín Nieto <cmn@dwim.me>2014-03-19 18:54:33 +0400
commit1afe1400433f010734ae4c43bf35dcc94edcc9de (patch)
treed2a7143551040175da2a5f13948ccc68f260d7ff /tests/repo
parentbac95e6e1e99b1e364c5ebd39887a8e24bc1ad9d (diff)
refdb: don't update when there's no need
If the caller wants to update a ref to point to the same target as it currently has, we should return early and avoid writing to the reflog.
Diffstat (limited to 'tests/repo')
-rw-r--r--tests/repo/head.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/repo/head.c b/tests/repo/head.c
index a246e6086..130ed8588 100644
--- a/tests/repo/head.c
+++ b/tests/repo/head.c
@@ -341,3 +341,30 @@ void test_repo_head__orphan_branch_does_not_count(void)
git_signature_free(sig);
}
+
+void test_repo_head__set_to_current_target(void)
+{
+ git_signature *sig;
+ const char *msg;
+ git_reflog *log;
+ size_t nentries, nentries_after;
+
+ cl_git_pass(git_reflog_read(&log, repo, GIT_HEAD_FILE));
+ nentries = git_reflog_entrycount(log);
+ git_reflog_free(log);
+
+ cl_git_pass(git_signature_now(&sig, "me", "foo@example.com"));
+
+ msg = "message 1";
+ cl_git_pass(git_repository_set_head(repo, "refs/heads/haacked", sig, msg));
+ cl_git_pass(git_repository_set_head(repo, "refs/heads/haacked", sig, msg));
+
+ cl_git_pass(git_reflog_read(&log, repo, GIT_HEAD_FILE));
+ nentries_after = git_reflog_entrycount(log);
+ git_reflog_free(log);
+
+ cl_assert_equal_i(nentries + 1, nentries_after);
+
+ git_signature_free(sig);
+
+}