2015-05-07 165 views
3

是否可以保持同步兩個Github存儲庫(遠程)的特定文件夾?自動同步兩個git存儲庫

有兩個github回購:repoA和repoB。 兩個倉庫都有名爲ABC的文件夾以及其他唯一文件夾。 如果在repoA的文件夾ABC中的任何文件中有更新,我想自動更新repoB的文件夾ABC。

+0

您是否找到了解決方案? – rohit

回答

1

僅將git命令應用於特定文件夾是不可能的。您將需要syn整個回購。

Best syn解決方案涉及'post-receive'掛鉤。但是因爲你不能在github中添加鉤子(就我所知),那麼你唯一的選擇是在任何能夠「看到」兩個倉庫的機器上執行一個cron任務,然後在那裏爲兩個倉庫創建一個克隆(使用--mirror選項)。通過適當的持續時間設置爲cron作業,你可以「同步」都回購作爲cron的腳本如下:現在

cd <to-repoA-clone> 
git remote update 
git push <repoB-url> --all 
cd <to-repoB-clone> 
git remote update 
git push <repoA-url> --all 

,如果兩個回購協議修改該文件夾「ABC」,然後推送會失敗,並會需要做一個合併(也可以是自動的,但如果有任何衝突仍然會失敗)。

此外,如果兩個倉庫的內容除了文件夾ABC完全不同,您可能希望將文件夾ABC本身分割成一個倉庫(搜索git filter-branch)。這將使同步更加高效。

0

我對晚會有點遲,但這也可以用服務Git-hg Mirror。免責聲明:我來自背後的公司。

0

你可以有多種方式,但你不想複製內容。

而是,創建第三個存儲庫repoC來存儲常用的ABC文件夾。然後使用git submodule將它添加到repoA和repoB作爲子目錄。 git submodule add <url-to-repoC> ABC/在repoA和repoB。現在您在這兩個存儲庫中共享內容爲ABC/

由於ABC/仍然是其自己的存儲庫,所以對repoA/ABC/所做的任何更改都可以推送到repoC,然後通過repoB進行提取。對於repoB/ABC/也是如此,可以將更改推送到repoC並通過repoB提取。有多種方法可以自動化,但他們必須在Git之外。