{"thread":{"id":"63988","subject":"git: list of my complaints about future graft removal","startedAt":"2025-08-19T13:57:37Z","lastAt":"2025-08-25T23:36:49Z","messageCount":4,"participants":["Askar Safin","Bagas Sanjaya","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"524445","messageId":"198c29e9058.119e3a5c065010.5888624019176274871@zohomail.com","threadId":"63988","inReplyTo":null,"subject":"git: list of my complaints about future graft removal","fromName":"Askar Safin","fromEmail":"safinaskar@zohomail.com","sentAt":"2025-08-19T13:57:08Z","receivedAt":"2025-08-19T13:57:37Z","isPatch":false,"sender":{"key":"safinaskar@zohomail.com","avatar":null},"body":"Hi.\n\nI just have read in https://github.com/git/git/blob/v2.51.0/Documentation/BreakingChanges.adoc that\ngit grafts will be removed in git 3.0.\n\nLet me share my list of complaints/objections/thoughts about this.\n\n(And also some info for kernel.org admins.)\n\n* As well as I understand, Linux history repo\n( https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/ )\nrelies on grafts. It is supposed that whoever clones that repo,\nshould manually graft latest commit of history repo with earliest commit\nof main Linux history. Also that person should graft two other commits of history\nrepo (as well as I understand).\n\nSo, git and/or kernel.org people, please, ensure that this history repo\nwill continue to work after removal of grafts.\n\nAlso, currently this is very hard to discover how to get full Linux\nhistory. If we type \"how to get unified linux kernel git history\"\nto Google, we will get this answer:\nhttps://stackoverflow.com/a/8130239 ,\nwhich also points to this link:\nhttps://archive.org/details/git-history-of-linux .\n\nBoth these links rely on grafts.\nSo, please, make sure that whoever types \"how to get unified linux kernel git history\"\ninto Google will get modern instructions in top links,\nwhich do not rely on grafts.\n\nAgain: I strongly think that we should not remove graft support\nuntil https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/\nis made compatible with \"git replace\".\nhistory.git is valuable repo, and I think a lot of people use history.git .\n\nGit release notes for 3.0 should mention how to get history.git\nworking without grafts.\n\n* As well as I understand, \"git clone --depth=1\" rely on grafts, too.\nI hope \"git clone --depth=1\" will continue to work.\n\n--\nAskar Safin\nhttps://types.pl/@safinaskar\n\n"},{"id":"524577","messageId":"aKXXkvAOhStlS2_m@archie.me","threadId":"63988","inReplyTo":"198c29e9058.119e3a5c065010.5888624019176274871@zohomail.com","subject":"Re: git: list of my complaints about future graft removal","fromName":"Bagas Sanjaya","fromEmail":"bagasdotme@gmail.com","sentAt":"2025-08-20T14:11:30Z","receivedAt":"2025-08-20T21:31:59Z","isPatch":false,"sender":{"key":"bagasdotme@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40219486?v=4"},"body":"On Tue, Aug 19, 2025 at 05:57:08PM +0400, Askar Safin wrote:\n> * As well as I understand, \"git clone --depth=1\" rely on grafts, too.\n> I hope \"git clone --depth=1\" will continue to work.\n\nSo shallow clones should use git-replace(1) under the hood (both on initial\nclone, deepening with --shallow-since and --unshallow), right?\n\nThanks.\n\n-- \nAn old man doll... just what I always wanted! - Clara\n"},{"id":"524862","messageId":"198e1742f3e.aebc766525693.2818180197972770618@zohomail.com","threadId":"63988","inReplyTo":"aKXXkvAOhStlS2_m@archie.me","subject":"Re: git: list of my complaints about future graft removal","fromName":"Askar Safin","fromEmail":"safinaskar@zohomail.com","sentAt":"2025-08-25T13:39:04Z","receivedAt":"2025-08-25T13:39:40Z","isPatch":false,"sender":{"key":"safinaskar@zohomail.com","avatar":null},"body":" ---- On Wed, 20 Aug 2025 18:11:30 +0400  Bagas Sanjaya <bagasdotme@gmail.com> wrote --- \n > So shallow clones should use git-replace(1) under the hood (both on initial\n > clone, deepening with --shallow-since and --unshallow), right?\n\nYou are asking me? I'm not git developer.\n\nWhat you mean? How git works currently or how it should work in 3.0?\n\nI don't know how it works currently.\n\nAnd I don't know how it will work in the future.\n\nI just want \"git clone --depth=1\" to continue to work.\nI. e. git developers should somehow take measures to\nmake sure \"git clone --depth=1\" will continue\nto work even if grafts will be removed.\n\nCurrently \"git clone --depth=1\" seems to\nbe implemented using grafts, i. e. I see word \"grafted\"\nin \"git log\" output if I use \"git clone --depth=1\"\n(I just tested this on git 2.47.2)\n\n\n--\nAskar Safin\nhttps://types.pl/@safinaskar\n\n"},{"id":"524904","messageId":"xmqq1poznfch.fsf@gitster.g","threadId":"63988","inReplyTo":"aKXXkvAOhStlS2_m@archie.me","subject":"Re: git: list of my complaints about future graft removal","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-08-25T23:36:46Z","receivedAt":"2025-08-25T23:36:49Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Bagas Sanjaya <bagasdotme@gmail.com> writes:\n\n> On Tue, Aug 19, 2025 at 05:57:08PM +0400, Askar Safin wrote:\n>> * As well as I understand, \"git clone --depth=1\" rely on grafts, too.\n>> I hope \"git clone --depth=1\" will continue to work.\n>\n> So shallow clones should use git-replace(1) under the hood (both on initial\n> clone, deepening with --shallow-since and --unshallow), right?\n\nAn unfortunate historical glitch is that shallow uses neither the\ngrafts (which is being removed) nor replace but its own mechanism.\nIt internally borrows the same \"graft\" code paths but the data is\nstored outside the normal grafts mechanism, if I understand\ncorrectly.\n"}]}