我没有shell脚本编写经验。 我想创建一个shell脚本,它将从GIT获取更改并将这些更改提交到SVN存储库。
在网上搜索并阅读此链接后: Shell script to check git for changes and then loop through changed files?
我能想出以下内容......
#!/bin/sh
#checks if there are any changes
if ! git --git-dir="/dir/.git" diff --quiet
then
# do stuff...
git --git-dir="/dir/.git" diff-tree ORIG_HEAD.. | \
while read srcmode dstmode srcsha dstsha status srcfile dstfile
do
# do something with $srcfile and $dstfile
done
fi
我猜以上内容会从GIT回购中获得更改。我在正确的道路上吗? 现在在循环中我想提交从GIT获得的更改。
如何做到这一点?
我将在Jenkins中添加此脚本,它将作为构建后操作执行。
答案 0 :(得分:0)
您希望将git-svn
用作Ju Liu suggested。假设您有以下设置:
/repos/project.git
的Git存储库。branches
处的标准tags
,trunk
,http://svn/project
目录结构。将提交从git
存储库复制到project
Subversion主干:
从Subversion创建一个Git存储库:
cd /repos
git svn clone --stdlayout --revision 1:HEAD --no-minimize-url http://svn/project
将git
存储库添加为远程:
cd project
git remote add /repos/project.git
获取您想要的git
次提交。例如,您可以git pull
然后git rebase [commit-id-of-the-subversion-head]
删除不需要的提交,或者使用git cherry-pick
来获取其中的部分内容。
git svn dcommit
将提交Subversion。您可以保留两个git
存储库,只需使用/repos/project
更新git svn rebase
,然后再从pull
执行其他cherry-pick
或/repos/project.git
s