我试图设置一个git仓库的darcs镜像。我有一些工作正常,但有一个重要的问题:如果我将一大堆提交到git仓库,这些提交合并到一个darcs补丁集中。我真的想确保每个git commit都被设置为一个darcs补丁集。我敢打赌,这可以通过做一些git fetch
然后审问远程分支的本地副本,但我的git fu不能胜任这项工作。如何从远程git存储库一次提交一个提交?
这是我现在使用的(KSH)代码,或多或少:
git pull -v # pulls all the commits from remote --- bad!
# gets information about only the last commit pulled -- bad!
author="$(git log HEAD^..HEAD --pretty=format:"%an <%ae>")"
logfile=$(mktemp)
git log HEAD^..HEAD --pretty=format:"%s%n%b%n" > $logfile
# add all new files to darcs and record a patchset. this part is OK
darcs add -q --umask=0002 -r .
darcs record -a -A "$author" --logfile="$logfile"
darcs push -a
rm -f $logfile
我的想法是
- 尝试
git fetch
获得远程分支的本地副本(不知道到底需要什么参数) - 以某种方式询问本地副本以获取自上次镜像操作以来每次提交的哈希值(我不知道该如何操作)
- 通过所有的哈希值,拉动只是承诺并记录相关的补丁集循环(我敢肯定,我知道如何做到这一点,如果我得到我的手哈希)
我欢迎任何帮助去肉在以上的情况或关于的建议我应该尝试。
想法?
正如一个提醒,有几个新的答案,你还没有评论。 (显然其中一个我认为其实很好地回答你的问题;)) – 2011-05-16 09:58:24