threads / discuss / 8372

Fetch from remote A, push to remote B

Subject: Fetch from remote A, push to remote B

## tl;dr

5 messages between May 31, 2007 and Jun 1, 2007.

replies: 4people: 1as markdown or json

Martin Langhoff· May 31, 2007, 05:53 UTC · lore
Is there an easy way to get a "passthrough" repo setup so I can say on a cronjob
  git-fetch remoteA
  git-push ssh+git://host/path/to/repoB.git remotes/remoteA/<all>
The 2 repositories cannot talk to each other directly.
cheers,
martin
Martin Langhoff· May 31, 2007, 07:28 UTC · re: Martin Langhoff · lore

Re: Fetch from remote A, push to remote B

On 5/31/07, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> Is there an easy way to get a "passthrough" repo setup so I can say on a cronjob
>
>   git-fetch remoteA
>   git-push ssh+git://host/path/to/repoB.git remotes/remoteA/<all>
After mucking about with stuff like...

find .git/refs/remotes/origin -type f -printf '%P\0' | xargs -0 -IHEADNAME git-push git+ssh://git.catalyst.net.nz/var/git/moodle-r2-testing.git origin/HEADNAME:HEADNAME

I figured out that a bare repo did the trick
  # set things up
  git-clone --bare git+ssh://host-a/bla.git bla-transfer.git
  # on cron do
  GIT_DIR=bla-transfer.git git-fetch git+ssh://host-a/bla.git
  GIT_DIR=bla-transfer.git git-push --all git+ssh://host-b/bla.git
cheers!
martin
Martin Langhoff· Jun 1, 2007, 00:37 UTC · re: Martin Langhoff · lore

Re: Fetch from remote A, push to remote B

On 5/31/07, Martin Langhoff <martin.langhoff@gmail.com> wrote:
>   # on cron do
>   GIT_DIR=bla-transfer.git git-fetch git+ssh://host-a/bla.git
>   GIT_DIR=bla-transfer.git git-push --all git+ssh://host-b/bla.git

Actually -- this doesn't quite work - the fetch grabs the new objects properly but doesn't update the local heads on a bare repo.

cheers,
m
Martin Langhoff· Jun 1, 2007, 01:52 UTC · re: Martin Langhoff · lore

Re: Fetch from remote A, push to remote B

On 6/1/07, Martin Langhoff <martin.langhoff@gmail.com> wrote:
Show 7 quoted lines
> On 5/31/07, Martin Langhoff <martin.langhoff@gmail.com> wrote:
> >   # on cron do
> >   GIT_DIR=bla-transfer.git git-fetch git+ssh://host-a/bla.git
> >   GIT_DIR=bla-transfer.git git-push --all git+ssh://host-b/bla.git
>
> Actually -- this doesn't quite work - the fetch grabs the new objects
> properly but doesn't update the local heads on a bare repo.
Should this work?

GIT_DIR=bla-transfer.git git-fetch git+ssh://host-a/bla.git +refs/heads/*:refs/heads/*

Earlier discussions about mirroring tools (and Pasky's git-mirror) finished with this being the recommended technique. Only - it does on me with

* refusing to create funny ref 'heads/*' locally
cheers,
martin
Martin Langhoff· Jun 1, 2007, 03:51 UTC · re: Martin Langhoff · lore

Re: Fetch from remote A, push to remote B

To finish off the soliloquy... effective mirroring with git
  git-clone --bare git://host/repo.git mirror.git
  git --git-dir=mirror.git config remote.origin.url git://host/repo.git
  git --git-dir=mirror.git config remote.origin.fetch
'+refs/heads/*:refs/heads/*'
  and now, on cron...
  git --git-dir=mirror.git fetch -u
  git --git-dir=mirror.git remote prune origin
(Thanks to Shawn Pearce for helping me figure out why it wasn't working for me!)
cheers
martin

← back to recent threads