Petr Baudis wrote: > Sometimes its handy to be able to efficiently backup or mirror one > Git repository to another Git repository by employing the native > Git object transfer protocol. But when mirroring or backing up a > repository you really want: > > 1) Every object in the source to go to the mirror. > 2) Every ref in the source to go to the mirror. > 3) Any ref removed from the source to be removed from the mirror. > > and since git-fetch doesn't do 2 and 3, here's a tool that does. > > This is based on Shawn Pearce's patch from 25 Sep 2006, updated to take > Junio's and Sergey's review into account, to use few newer pieces of Git > infrastructure and with few trivial tweaks. The repacking part was dropped > since git-fetch does that on its own now. > > I actually still would kind of prefer this to be a git-fetch's feature but > the general mood seems to be to have this as a separate command and I can't > say I care at all. > > Signed-off-by: Petr Baudis <pasky@xxxxxxx> > --- > > .gitignore | 1 > Documentation/config.txt | 6 ++ > Documentation/git-mirror.txt | 54 +++++++++++++++++++++ > Makefile | 2 - > git-mirror.perl | 110 ++++++++++++++++++++++++++++++++++++++++++ > 5 files changed, 172 insertions(+), 1 deletions(-) > > diff --git a/.gitignore b/.gitignore > index 4dc0c39..d0b67da 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -80,6 +80,7 @@ git-merge-resolve > git-merge-stupid > git-merge-subtree > git-mergetool > +git-mirror > git-mktag > git-mktree > git-name-rev > diff --git a/Documentation/config.txt b/Documentation/config.txt > index e0aff53..e05e4c5 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -513,6 +513,12 @@ log.showroot:: > Tools like gitlink:git-log[1] or gitlink:git-whatchanged[1], which > normally hide the root commit will now show it. True by default. > > +mirror.allowed:: > + If true, gitlink:git-mirror[1] will be allowed to run on the > + repository. Please see its documentation for all the implications. > + > +mirror. > + Ok, I can see why you'd want to protect a user from going git-mirror <foo> and losing their local changes. But you've only protected them from mirroring at all. If they want to use this repo as a mirror of somewhere X you have not stopped them from git-mirror Y'ing themselves. Now yes if you know its a mirror then I guess you can recover with a git-mirror X but ... It seems to me if you are having a config option that perhaps it should be the URL from whence the mirror comes, and the command should just be 'git mirror'. [mirror] url='somewhere' -apw - 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