2013-06-26 41 views
0

我沒有shell腳本經驗。 我想創建一個shell腳本,它將從GIT獲取更改並將這些更改提交到SVN存儲庫。Shell腳本,用於讀取GIT repo中的更改,然後將這些更改提交到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

有沒有理由不能使用'git-svn'? –

+0

嗨。其實我們正在使用Jenkins服務器進行構建。所以我想創建後構建腳本,這將在每次構建後執行。 – user1771680

回答

0

你會想要使用git-svn作爲Ju Liu suggested。假設您有以下設置:

  • Git存儲庫在/repos/project.git
  • 標準branches,tags, trunk目錄結構在http://svn/project

複製從git庫提交至project顛覆主幹:

  1. 創建從Subversion一個Git倉庫:

    cd /repos 
    git svn clone --stdlayout --revision 1:HEAD --no-minimize-url http://svn/project 
    
  2. 添加git倉庫作爲遠程:

    cd project 
    git remote add /repos/project.git 
    
  3. 獲取您想要的git提交。例如,您可以使用git pull,然後使用git rebase [commit-id-of-the-subversion-head]刪除不需要的提交,或者使用git cherry-pick首先獲取其中的一部分。

  4. 當你有提交你想要的,git svn dcommit提交到Subversion。

可以保持雙方git庫,並從/repos/project.git做額外pull S或cherry-pick年代以前只更新/repos/projectgit svn rebase

+0

謝謝:)這種方法絕對看起來更容易。但是如果我必須爲它編寫一個shell腳本,寫一個腳本會很容易嗎? – user1771680

+0

可能不是很困難(命令不會比上面的更復雜),但真正的問題是爲什麼你要複製提交併首先使用兩個VCS。 – l0b0