Hi Chris, as mentioned by Stefan (who is a respected, active core Git contributor, if you need any more arguments to listen to him), it is inappropriate to copy the contents of the .git/ directory wholesale to another user's machine. For one, it would horribly break in case the user overrode `user.email` in `.git/config`. That's one setting that should not be copied *anywhere*. And that's just one, there are *plenty* more examples. Just think of absolute paths referring to files that probably do not even exist on another machine! Like, worktrees, etc. Of course, you could start a list of exceptions (files, config keys, etc) that should not be copied. But that's very fragile a solution. So no, copying the .git/ directory is always the wrong thing to do, as Stefan pointed out. I could imagine that a much better idea is to identify a *positive* list of things you want to copy over. The output of `git rev-parse --symbolic-full-name HEAD`? Sure. Maybe even the output of `git rev-parse --symbolic-full-name HEAD@{u}`? And then the URL of the corresponding remote? Sure. `.git/objects/alternates/`? Absolutely not. It is tedious, alright, but you simply cannot copy the contents of .git/ to another machine and expect that to work. Ciao, Johannes On Thu, 4 Oct 2018, Chris Jeschke wrote: > Hi Stefan, > > thanks for your answer. > > The Goal after sending the files is to have a copy on the remote site. > This includes that the working directory is the same (what we already > guarantee with our tool) and that git is at the same 'state' (that > means that we have the same history and that we checkout at the same > branch/commit). > My idea: > Send the working directory with our tool > Initialize a Git directory on the remote side > Send the 'objects','refs', 'HEAD' and the 'gitignore' with our tool > > Is there anything else I should take care of? > > Am Mi., 3. Okt. 2018 um 20:51 Uhr schrieb Stefan Beller <sbeller@xxxxxxxxxx>: > > > > On Wed, Oct 3, 2018 at 5:26 AM Chris Jeschke > > <chrisjberlin@xxxxxxxxxxxxxx> wrote: > > > > > > Hey git-team, > > > I am working on a plug-in for a distributed pair programming tool. To > > > skip the details: I was thinking about sending parts of the git folder > > > as a zip folder with our own Bytestream instead of using the git API. > > > Is there a common sense about what should and what shouldn't be done > > > when working with the files inside the git folder? > > > > This contradicts the security model of git. > > Locally I can do things like: > > git config alias.co "rm -rf ~" > > echo "rm -rf ~" >.git/hooks/{...} > > and I would experience bad things, but that is ok, > > as I configured it locally (supposedly I know what > > I am doing); but if I have the ability to send these > > tricks to my beloved coworkers, hilarity might ensue. > > > > What stuff do you need to send around? > > > > objects? Fine, as the receive could check they are > > good using fsck. > > > > refs/ ? Sure. It may be confusing to users, > > but I am sure you'll figure UX out. > > > > local config, hooks ? I would not. > > > > Not sure what else you'd think of sending around. > > > > Cheers, > > Stefan >