On 30/04/2022 00:57, Glen Choo wrote: > If I were designing Git from scratch, I would probably block embedded bare repos > from being committed altogether - if an embedded bare repo doesn't behave > particularly differently from `.git` (which we pretty much agree we should not > support), then this is just an inherently dangerous way to work. > > But yes, we have historically allowed embedded bare repos, and I don't think we > should stop supporting them altogether. For instance, I don't see a good > alternative for the test fixture use case: > > - Submodules aren't a good fit because they only allow you to include the > contents of a submodule's tree, whereas in a test fixture, you really do want > the gitdir internals to be source controlled so that you get nice predictable > results. > - Users could store the repos in some other form e.g. CDN, tarball. It's fine > when running from a test script, but it's pretty awful to author/review any > changes. Can I check that storing bundles (of other repos) within a repository is considered reasonably safe? I have been looking at how Git's documentation could carry with it small exemplar repositories that cover the commit hierarchies shown in the various man pages to allow users to see, explore and understand the man page examples. I'd settled on bundles as a reasonable compromise, with the exemplar repositories being generated via the test suite (obviously). With the recent focus on security issues, I thought it worth asking now. > - Perhaps the users could munge the bare repo at commit time e.g. instead of > storing (refs/, objects/, HEAD), they could store (test_refs/, test_objects/, > test_HEAD), which would later get turned into the bare repo in the test > script. It's a little silly, but not unreasonable for a test script, I think. -- Philip