Allow to control where the replace refs are looked for

It can be useful to have grafts or replace refs for specific use-cases while
keeping the default "view" of the repository pristine (or with a different
set of grafts/replace refs).

It is possible to use a different graft file with GIT_GRAFT_FILE, but while
replace refs are more powerful, they don't have an equivalent override.

Add a GIT_REPLACE_REF_BASE environment variable to control where git is
going to look for replace refs.

Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Mike Hommey
2015-06-12 06:34:59 +09:00
committed by Junio C Hamano
parent f86f31ab33
commit 58d121b22b
5 changed files with 16 additions and 6 deletions

View File

@ -96,11 +96,12 @@ static int add_ref_decoration(const char *refname, const unsigned char *sha1, in
assert(cb_data == NULL);
if (starts_with(refname, "refs/replace/")) {
if (starts_with(refname, git_replace_ref_base)) {
unsigned char original_sha1[20];
if (!check_replace_refs)
return 0;
if (get_sha1_hex(refname + 13, original_sha1)) {
if (get_sha1_hex(refname + strlen(git_replace_ref_base),
original_sha1)) {
warning("invalid replace ref %s", refname);
return 0;
}