path: root/advice.c
diff options
authorJohannes Schindelin <>2018-04-28 22:44:44 (GMT)
committerJunio C Hamano <>2018-04-30 02:12:31 (GMT)
commitf9f99b3f7d06716336b239bcf122eb5a7348bfd5 (patch)
tree2a7813e7ae8389cfef632073f4d5f654a53bfef7 /advice.c
parent0115e030db499853a77c2b92dc8c6a51552009ef (diff)
Deprecate support for .git/info/grafts
The grafts feature was a convenient way to "stitch together" ancient history to the fresh start of linux.git. Its implementation is, however, not up to Git's standards, as there are too many ways where it can lead to surprising and unwelcome behavior. For example, when pushing from a repository with active grafts, it is possible to miss commits that have been "grafted out", resulting in a broken state on the other side. Also, the grafts feature is limited to "rewriting" commits' list of parents, it cannot replace anything else. The much younger feature implemented as `git replace` set out to remedy those limitations and dangerous bugs. Seeing as `git replace` is pretty mature by now (since 4228e8bc98 (replace: add --graft option, 2014-07-19) it can perform the graft file's duties), it is time to deprecate support for the graft file, and to retire it eventually. Signed-off-by: Johannes Schindelin <> Reviewed-by: Stefan Beller <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'advice.c')
1 files changed, 2 insertions, 0 deletions
diff --git a/advice.c b/advice.c
index 406efc1..4411704 100644
--- a/advice.c
+++ b/advice.c
@@ -19,6 +19,7 @@ int advice_rm_hints = 1;
int advice_add_embedded_repo = 1;
int advice_ignored_hook = 1;
int advice_waiting_for_editor = 1;
+int advice_graft_file_deprecated = 1;
static struct {
const char *name;
@@ -42,6 +43,7 @@ static struct {
{ "addembeddedrepo", &advice_add_embedded_repo },
{ "ignoredhook", &advice_ignored_hook },
{ "waitingforeditor", &advice_waiting_for_editor },
+ { "graftfiledeprecated", &advice_graft_file_deprecated },
/* make this an alias for backward compatibility */
{ "pushnonfastforward", &advice_push_update_rejected }