2013-09-26 197 views
1

我的工作包含的src/目錄,我想與大家分享僅此的src/目錄一大應用的子目錄同步。如何一個Git倉庫與另一個倉庫

所以,我想這的src/目錄定期推到另一個倉庫(並保持作了以及包含文件所做的的src/內的變化是,標籤和分支)。

到目前爲止,我已經做了以下內容:

git clone MyBigProject /tmp/foo 
cd /tmp/foo 

# I want to share the master and 1.0, 1.1, 2.0,... branches 
REMOTE_BRANCHES=`git branch -r | tr -d " " | grep "^origin/[0-9]\.[0-9]$"` 
for BRANCH in $REMOTE_BRANCHES; do 
    # So I need to track them locally in order to rewrite them 
    git checkout --track $BRANCH 
done 

git filter-branch --tree-filter 'rm -rf `ls -1 | grep -v src`' --prune-empty -- --all 

git push MySharedRepo --all 
git push MySharedRepo --tags 

問題是,filter-branch將創建新的提交哈希值,從而推到MySharedRepo帶來了很多的衝突。這也意味着它會在每次推送共享存儲庫時破壞所有用戶引用。

我想指出MySharedRepo是一個READ-ONLY存儲庫。

我一直在尋找過去幾天沒有找到這個問題的正確解決方案,所以提前感謝,如果你能幫助我解決它!

回答

0

通過filter-branch只共享子目錄是正確的路徑。理想情況下,如果src目錄可以獨立存在,則主(父)存儲庫可以將filter-branch存儲庫作爲子模塊而受益。這實現了以下內容:

  1. src內容和父項目提供單獨的存儲庫。
  2. 支持將src作爲存儲庫 (如果在中央存儲庫上共享,如https://github.com)進行讀取/讀取+寫入訪問控制。
  3. 省去了重複git filter-branch努力每次提交上src需要共享
相關問題