From: Masaya Suzuki <firstname.lastname@example.org> To: Junio C Hamano <email@example.com> Cc: Git Mailing List <firstname.lastname@example.org> Subject: Re: [PATCH v3] doc: describe Git bundle format Date: Wed, 12 Feb 2020 14:13:29 -0800 Message-ID: <CAJB1erWuCTYtGdjiwBT3hhbH5Jrdr+cE8duwtoH=P7Fe6BmUpg@mail.gmail.com> (raw) In-Reply-To: <email@example.com> On Fri, Feb 7, 2020 at 5:49 PM Junio C Hamano <firstname.lastname@example.org> wrote: > > Masaya Suzuki <email@example.com> writes: > > > Yes. The reason that I've been trying to check the semantics of the > > prerequisites is that I DO recognize that this is possible > > format-wise. I'm not sure if this Git implementation can create such > > bundles, but format-wise such bundles can be created. > > Yeah, now I get it. > > The problem is *not* that v2 format "cannot represent a shallow > clone repository", but is that there is nothing that prevents a > bundle in v2 format from depending on objects behind (not just at) > the shallow boundary, making it impossible for a reader to guarantee > that a bundle with prereqs can be used to create an equivalent > shallow repository with shallow boundary at the same place as > prereqs. IOW, bundle with prereqs in the v2 format allows more > objects to be omitted than an equivalent shallow repository omits, > because prereqs and shallow cutoff points mean different things. Yes. So, I think it's better to say prereqs and shallow boundaries are different. > While we are at it, I suspect that with reachability bitmap, a "git > fetch" that updates a history up to commit A to a new history up to > commit B can omit more objects than what is directly reachable from > the commit A. That is, if A's direct child (call it C) is a commit > that reverts A, a blob in A's tree won't be in the bundle (because A > is a prereq), but the blob at the same path in C is the same blob as > the blob at the same path in A's parent (that is what it means for > that A's direct child to be a revert of A). In the normal > enumeration based on object-walk to decide which objects to send, > such a blob in C will be included in the pack, That's interesting. I have never looked CGit's implementation, but I think JGit would omit those objects. (At least that was my understanding. Not confirmed with the code.) Anyway. Is it OK with adding this small note on "prereq is not a shallow boundary"? In practice, there are not many Git implementations that handle Git bundles, so it's not that big deal as long those few implementers recognize this, but this document is meant for those implementers.
next prev parent reply other threads:[~2020-02-12 22:13 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-01-30 22:58 [PATCH] " Masaya Suzuki 2020-01-31 13:56 ` Johannes Schindelin 2020-01-31 20:38 ` Junio C Hamano 2020-01-31 21:49 ` Masaya Suzuki 2020-01-31 23:01 ` Junio C Hamano 2020-01-31 23:57 ` Masaya Suzuki 2020-02-04 18:20 ` Junio C Hamano 2020-01-31 22:18 ` [PATCH v2] " Masaya Suzuki 2020-01-31 23:06 ` Junio C Hamano 2020-02-07 20:42 ` [PATCH v3] " Masaya Suzuki 2020-02-07 20:44 ` Masaya Suzuki 2020-02-07 20:59 ` Junio C Hamano 2020-02-07 22:21 ` Masaya Suzuki 2020-02-08 1:49 ` Junio C Hamano 2020-02-12 22:13 ` Masaya Suzuki [this message] 2020-02-12 22:43 ` Junio C Hamano
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAJB1erWuCTYtGdjiwBT3hhbH5Jrdr+cE8duwtoH=P7Fe6BmUpg@mail.gmail.com' \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
email@example.com list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ firstname.lastname@example.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git