]> git.ipfire.org Git - thirdparty/git.git/commit - refs.c
reflog_expire(): ignore --updateref for symbolic references
authorMichael Haggerty <mhagger@alum.mit.edu>
Tue, 3 Mar 2015 11:43:16 +0000 (12:43 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Mar 2015 20:35:37 +0000 (12:35 -0800)
commit5e6f003ca8aed546d50a4f3fbf1e011186047bc0
treeb1c46f92b37353b253b88caae5044fae8b8413f3
parentfe2a18165c97d3e0937bb99fda449e1f64e5c867
reflog_expire(): ignore --updateref for symbolic references

If we are expiring reflog entries for a symbolic reference, then how
should --updateref be handled if the newest reflog entry is expired?

Option 1: Update the referred-to reference. (This is what the current
code does.) This doesn't make sense, because the referred-to reference
has its own reflog, which hasn't been rewritten.

Option 2: Update the symbolic reference itself (as in, REF_NODEREF).
This would convert the symbolic reference into a non-symbolic
reference (e.g., detaching HEAD), which is surely not what a user
would expect.

Option 3: Error out. This is plausible, but it would make the
following usage impossible:

    git reflog expire ... --updateref --all

Option 4: Ignore --updateref for symbolic references.

We choose to implement option 4.

Note: another problem in this code will be fixed in a moment.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-reflog.txt
refs.c