git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] disable grafts during fetch/push/bundle

From
Jeff King <peff@peff.net>
Date
Mar 5, 2014, 19:28 UTC
Message-ID
<20140305192837.GA11304@sigill.intra.peff.net>
In-Reply-To
<xmqqppm0h2ti.fsf@gitster.dls.corp.google.com>
On Wed, Mar 05, 2014 at 11:18:17AM -0800, Junio C Hamano wrote:
Show 17 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > On Wed, Mar 05, 2014 at 10:49:24AM -0800, Junio C Hamano wrote:
> >
> >> ... the plan, at least in my mind, has always been exactly that: grafts
> >> were a nice little attempt but is broken---if you really wanted to
> >> muck with the history without rewriting (which is still discouraged,
> >> by the way), do not use "graft", but use "replace".
> >
> > I certainly had in the back of my mind that grafts were a lesser form of
> > "replace", and that eventually we could get rid of the former. Perhaps
> > my question should have been: "why haven't we deprecated grafts yet?".
> 
> Given that we discourage "grafts" strongly and "replace" less so
> (but still discourage it), telling the users that biting the bullet
> and rewriting the history is _the_ permanent solution, I think it is
> understandable why nobody has bothered to.
Perhaps the patch below would help discourage grafts more?

The notable place in the documentation where grafts are still used is git-filter-branch.txt. But since the example there is about cementing rewritten history, it might be OK to leave.

I used "outdated" below. We could also up the ante to "deprecated".
-- >8 --
Subject: [PATCH] docs: mark info/grafts as outdated
We should be encouraging people to use git-replace instead.
Signed-off-by: Jeff King <peff@peff.net>
---
 Documentation/gitrepository-layout.txt | 4 ++++
 Documentation/glossary-content.txt     | 4 ++++
 2 files changed, 8 insertions(+)
diff --git a/Documentation/gitrepository-layout.txt b/Documentation/gitrepository-layout.txt
index aa03882..17d2ea6 100644
--- a/Documentation/gitrepository-layout.txt
+++ b/Documentation/gitrepository-layout.txt
@@ -176,6 +176,10 @@ info/grafts::
 	per line describes a commit and its fake parents by
 	listing their 40-byte hexadecimal object names separated
 	by a space and terminated by a newline.
++
+Note that the grafts mechanism is outdated and can lead to problems
+transferring objects between repositories; see linkgit:git-replace[1]
+for a more flexible and robust system to do the same thing.
 
 info/exclude::
 	This file, by convention among Porcelains, stores the
diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index 378306f..be0858c 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -176,6 +176,10 @@ current branch integrates with) obviously do not work, as there is no
 	you can make Git pretend the set of <<def_parent,parents>> a <<def_commit,commit>> has
 	is different from what was recorded when the commit was
 	created. Configured via the `.git/info/grafts` file.
++
+Note that the grafts mechanism is outdated and can lead to problems
+transferring objects between repositories; see linkgit:git-replace[1]
+for a more flexible and robust system to do the same thing.
 
 [[def_hash]]hash::
 	In Git's context, synonym for <<def_object_name,object name>>.
-- 
1.8.5.2.500.g8060133
Previous: Junio C HamanoNext: Junio C Hamano
Message 7 of 35 in “disable grafts during fetch/push/bundle”
  1. disable grafts during fetch/push/bundleJeff King, Mar 4, 2014
  2. Junio C HamanoMar 4, 2014
  3. Jeff KingMar 5, 2014
  4. Junio C HamanoMar 5, 2014
  5. Jeff KingMar 5, 2014
  6. Junio C HamanoMar 5, 2014
  7. Jeff KingMar 5, 2014
  8. Junio C HamanoMar 5, 2014
  9. Michael HaggertyMar 6, 2014
  10. Christian CouderMar 6, 2014
  11. Jeff KingMar 6, 2014
  12. Michael HaggertyMar 6, 2014
  13. Jeff KingMar 6, 2014
  14. 1/4 replace: refactor command-mode determinationJeff King, Mar 6, 2014
  15. 2/4 replace: use OPT_CMDMODE to handle modesJeff King, Mar 6, 2014
  16. 3/4 replace: factor object resolution out of replace_objectJeff King, Mar 6, 2014
  17. 4/4 replace: add --edit optionJeff King, Mar 6, 2014
  18. Eric SunshineMar 7, 2014
  19. Jeff KingMar 7, 2014
  20. Junio C HamanoMar 6, 2014
  21. Jeff KingMar 6, 2014
  22. Philip OakleyMar 6, 2014
  23. Michael HaggertyMar 6, 2014
  24. Junio C HamanoMar 6, 2014
  25. Christian CouderMar 7, 2014
  26. Jeff KingMar 7, 2014
  27. Junio C HamanoMar 19, 2014
  28. Jeff KingMar 21, 2014
  29. Philip OakleyMar 6, 2014
  30. Eric SunshineMar 4, 2014
  31. Jeff KingMar 5, 2014
  32. Eric SunshineMar 5, 2014
  33. Jeff KingMar 5, 2014
  34. Eric SunshineMar 5, 2014
  35. Jeff KingMar 6, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.