3

I am moving some svn repositories to Git. So, what I basically try to do is this:

  • Setup one server with bare Git repositories from which I will pull and push to
  • Setup a few backup servers for all of my repositories that are on the 1st server.

So, let's say i have a directory on my server, like: $HOME/git/, which has bare repositories. Eg:

~/git/project1.git ~/git/project2.git ~/git/project3.git ... 

My backup servers may be mirrors to this server, or keep the backed up data in archives or whatever. I suppose I can do something like:

git clone --bare ssh://gitserver/~user/git/projectX.git 

Or maybe:

$ cd ~/git/project1.git $ git bundle create ~/gitbackup/project1.bdl --all 

and then copy all bundles from all projects to my backup servers.
However, having a lot of projects either strategy would be a tedious task, so in each case I would need to make some scripts to automate the task.

I wonder how are you guys doing this? Maybe there is some better way to do it than what I considered already. Any tip would be appreciated.

1
  • I think you might be better info on serverfault.com Commented Jul 19, 2010 at 20:47

2 Answers 2

5

The general idea would be to:

There are other techniques back in 2008, based on gibak, but the idea remains the same.


Example of a post-receive hook:

 #!/bin/sh # # A hook script that is called after a successful # commit is made. # # Place this file in .git/hooks and chmod +x BRANCH=`git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'` git push origin $BRANCH 
 #!/usr/bin/env ruby STDIN.read.split("\n").each do |line| oldrev, newrev, refname = line.split(' ') if refname.match(/^refs\/heads\/(.*)/) branch = $1 `git push origin #{branch}` else puts "#{refname} was weird, not sure what to do." end end 
Sign up to request clarification or add additional context in comments.

2 Comments

this hook pushes just the one branch, which is current in the repository. In my case I needed to backup all existing branches, so it goes like this: git push origin, and no BRANCH variable.
@AndersMetnik With links between 8 and 10 years old, I am not surprised ;) Anyway, I have restored all links.
2

Doesn't seem like there's anything special here -- you just need a standard backup solution.

I've had good luck with rsnapshot, or rsync if I just need simple backups.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.