On 2015-03-28 03.56, Christoph Anton Mitterer wrote: > Hey. > > I was looking for an ideally simple way to make a "full" copy of a git > repo. Many howtos are floating around on this on the web, with also lots > of voodoo. > > > First, it shouldn't be just a clone, i.o.w. > - I want to have all refs (local/remote branches/tags) and of course all > objects from the source repo copied as is. > So it's local branches should become my local branches and not remote > branches as well - and so on. > Basically I want to be able to delete the source afterwards (and all > backups ;) ) and not having anything lost. > > - It shouldn't set the source repo as origin or it's branches as remote > tracking branches, as said it should be identical the source repo, just > "freshly copied" via the "Git aware transport mechanisms". > > - Whether GC or repacking happens, I don't care, as long as nothing that > is still reachable in the source repo wouldn't get lost (or get lost > once I run a GC in the copied repo). > > - Whether anything that other tools have added to .git (e.g. git-svn > stuff) get's lost, I don't care. > > - It should work for both, bare and non-bare repos, but it's okay when > it doesn't copy anything that is not committed or stashed. > > > > I'd have said that either: > $ git clone --mirror URl-to-source-repo copy > for the direction from "outside" the source to a copy, > or alternatively: > $ cd source-repo > $ git push --mirror URl-to-copy > for the direction from "within" the source to a copy with copy being an > empty bare or non-bare repo, > would do the job. > > But: > > a) but the git-clone(1) part for --mirror: > >and sets up a refspec configuration such that all these refs are > >overwritten by a git remote update in the target repository. > kinda confuses me since I wanted to get independent of the source > repo and this ssems to set up a remote to it? > > b) do I need --all --tags for the push as well? > > c) When following > https://help.github.com/articles/duplicating-a-repository/ > it doesn't seem as if --mirror is what I want because they seem to > advertise it rather as having the copy tracking the source repo. > Of course I read about just using git-clone --bare, but that seems to > not copy everything that --mirror does (remote-tracking branches, > notes). > > So I'm a bit confused... This instructions have 3 repos: the source, "old", the destination "new" and a temporary one. As you only push to "new", "new" should have no information about "old" or "temp". > > > 1) Is it working like I assumed above? > 2) Does that also copy things like git-config, hooks, etc.? > 3) Does it copy the configured remotes from the source? > 4) What else is not copied by that? I'd assume anything that is not > tracked by git and the stash of the source? You didn't write if this is a bare repository, if it is on a local disc, if it is reachable by rsync ? Linux or Windows ? For a "full clone" (in the sense of having everything, bit for bit) I would probably use rsync. (After stopping all activities on the repo) But I don't know where you repos life, are they bare or not, so there may be other ways to go. > > > Thanks a lot, > Chris. > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html