我正在将一些svn存储库移动到Git.所以,我基本上尝试做的是:
所以,假设我的服务器上有一个目录,例如:$HOME/git/,它有裸存储库.例如:
~/git/project1.git
~/git/project2.git
~/git/project3.git
...
Run Code Online (Sandbox Code Playgroud)
我的备份服务器可能是此服务器的镜像,或将备份的数据保存在存档或其他任何内容中.我想我可以这样做:
git clone --bare ssh://gitserver/~user/git/projectX.git
Run Code Online (Sandbox Code Playgroud)
或者可能:
$ cd ~/git/project1.git
$ git bundle create ~/gitbackup/project1.bdl --all
Run Code Online (Sandbox Code Playgroud)
然后将所有项目中的所有包复制到我的备份服务器.
但是,拥有很多项目或者策略都是一项繁琐的工作,因此在每种情况下我都需要制作一些脚本来自动完成任务.
我想知道你们是怎么做到这一点的?也许有比我已经考虑过的更好的方法.任何提示将不胜感激.
一般的想法是:
git:协议或ssh+git:协议自动将收到的任何内容推送到相应的Git备份仓库.基于gibak,2008年还有其他技术,但这个想法仍然是一样的.
后接收挂钩示例:
#!/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
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |