git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: backup or mirror a repository

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 28, 2007, 06:27 UTC
Message-ID
<7vsl4zqp8l.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<1190947063.2263.46.camel@Tenacity>
Dan Farina <drfarina@gmail.com> writes:
Show 6 quoted lines
> I did look at prune and update, but my problem is the opposite: I want
> something that will remove branches from the remote repo when they no
> longer exist locally. As-is over time I will proliferate little local
> branches unless I occasionally sit down and delete branches by operating
> directly on the bare backup repository. (and then use prune on the
> remote nodes)

The "git remote add --mirror" setup is about setting up the local repository _AS_ the backup of the remote. In other words, the contents come from the remote by fetching from it and safely kept away from disaster on the local side. And for that, "remote prune" is a perfect thing to do.

I think what you are asking for is an opposite, a backup remote site you would push into. That is not what "remote add --mirror" is about.

You can almost do it with
	git push --all $remote

except there is no way to automagically remove the branch you removed from the local repository. For that, we would need a new --mirror option to "git-push".

I think it is trivial to do for native transports, as we first get the list of all refs from the remote side before starting the transfer. You need to change the last parameter called 'all' to remote.c::match_refs() into an enum ('push_all' being one of choices), introduce another enum 'push_mirror', and teach it to "match" the remote (i.e. dst) ref that does not have corresponding entry on our side (i.e. src) with an empty object name to mark it removed. Then the part marked as "Finally, tell the other end!" in send-pack.c::send_pack() will take care of the actual removal.

Previous: Dan FarinaNext: Dan Farina
Message 6 of 9 in “backup or mirror a repository”
  1. Dan FarinaSep 27, 2007
  2. Johannes SchindelinSep 27, 2007
  3. Dan FarinaSep 28, 2007
  4. Johannes SchindelinSep 28, 2007
  5. Dan FarinaSep 28, 2007
  6. Junio C HamanoSep 28, 2007
  7. Dan FarinaSep 28, 2007
  8. Dmitry PotapovOct 18, 2007
  9. Johannes SchindelinOct 30, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.