我正在将我的大量工作从个人 SVN 存储库转移到 git 存储库。我有一个 cron 作业设置,每晚在我的所有存储库中运行 svnadmin dump 到远程文件夹中。git中是否有类似的功能?
另外,我不完全理解 git,所以这个逻辑很可能是错误的,但是我将所有 svn 存储库保存在一个目录(/home/svn/)下,git 是否创建了一个类似的目录,我可以复制到偏远的地点?还是它只将快照存储在 .git 目录中?
我正在将我的大量工作从个人 SVN 存储库转移到 git 存储库。我有一个 cron 作业设置,每晚在我的所有存储库中运行 svnadmin dump 到远程文件夹中。git中是否有类似的功能?
另外,我不完全理解 git,所以这个逻辑很可能是错误的,但是我将所有 svn 存储库保存在一个目录(/home/svn/)下,git 是否创建了一个类似的目录,我可以复制到偏远的地点?还是它只将快照存储在 .git 目录中?
你可以只使用git clone。请注意,git 不等同于 svnadmin,因为每个 git “工作副本”(使用 SVN 术语)都是一个完整的存储库。
#!/bin/bash
# tar.bz2 to the stdout the git repo from the current dir.
TMP=`mktemp -d`
trap "rm -rf $TMP" EXIT
git clone --template=. --mirror . "$TMP" && tar -cjC "$TMP" .
ps:并非每个 git “工作副本”都是完整的存储库。它们中的大多数是,但是由下面的示例创建的不是。
git clone --depth 4 . `mktemp -d`
没有办法(内置于 git)将多个存储库复制/镜像到远程计算机。您的新 cron 作业必须单独克隆/推送每个存储库,您可以使用另一种方式同步所有存储库。存储库只是普通文件,因此如果您将它们全部保存/srv/svn
或类似,您可以rsync
将该目录简单地保存到另一台计算机。
在更新存储库的同时使用可能会出现问题rsync
,但如果这是供个人使用,您几乎可以保证存储库在夜间左右“空闲”。