我正在尝试设置 git 存储库的 darcs 镜像。我有一些可以正常工作的东西,但是有一个重大问题:如果我将一大堆提交推送到 git 存储库,这些提交会合并到一个 darcs 补丁集中。我真的很想确保每个 git 提交都设置为单个 darcs 补丁集。我敢打赌,这可以通过对远程分支的本地副本进行某种git fetch
随后的询问来实现,但是我的 git fu 不能胜任这项工作。
这是我现在使用的(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
获取远程分支的本地副本(不确定需要哪些参数) - 自上次镜像操作以来,以某种方式询问本地副本以获取每次提交的哈希(我不知道如何执行此操作)
- 循环遍历所有哈希,仅提取该提交并记录相关的补丁集(我很确定如果我得到哈希,我知道该怎么做)
我欢迎帮助充实上述场景或建议我应该尝试的其他事情。
想法?