Fetch from remote A, push to remote B

5 messages, 1 author, 2016-06-15 · open the first message on its own page

Fetch from remote A, push to remote B

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:13

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

Re: Fetch from remote A, push to remote B

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:13

On 5/31/07, Martin Langhoff [off-list ref] 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

Re: Fetch from remote A, push to remote B

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:13

On 5/31/07, Martin Langhoff [off-list ref] 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

Re: Fetch from remote A, push to remote B

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:13

On 6/1/07, Martin Langhoff [off-list ref] wrote:
On 5/31/07, Martin Langhoff [off-list ref] wrote:
quoted
  # 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

Re: Fetch from remote A, push to remote B

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:13

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help