2010-09-16 93 views
4

添加子模塊超級項目,我有一個目錄數(10-15)Git倉庫:的Git從現有回購

~/plugins/admin 
~/plugins/editor 
~/plugins/etc 

每個人都有自己獨立的存儲設備和遠程服務器。

的問題是,拉所有我到倉庫所有的變化:

cd ~/plugins/admin 
git pull origin master 
password: ******** 
cd .. 

cd ~/plugins/editor 
git pull origin master 
password: ******** 
cd .. 

cd ~/plugins/etc 
git pull origin master 
password: ******** 
cd .. 

我設置任何Git的子模塊怎麼能拉所有的儲存庫1個命令,

或可替代爲Windows,Linux和Mac編寫腳本(因爲我使用所有3個操作系統)來有效地執行相同的操作。請記住,回購可以在不同的分支機構,並且不一定需要跟蹤分支機構設置。

同調:

  • 密碼是所有回購
  • 遠程服務器是一樣的回購相同(單獨回購/目錄顯然)
  • 我只需要輸入密碼一旦
  • 我只想輸入一個命令,把所有回購
  • 公鑰/私鑰是不是一種選擇
  • 我connectin g通過ssh到遠程
+0

首先,'git的子模塊--help'。其次,假設你通過SSH訪問遠程倉庫,爲無密碼登錄設置公鑰/私鑰,還有其他方法。一旦你完成了這個工作,你就可以用'git submodule update'更新所有子模塊。 – meagar 2010-09-16 15:06:57

+0

公共/私人密鑰不是一個選項,我也閱讀過幫助文檔,有些教程無濟於事。因此,我尋求幫助。 – Petah 2010-09-16 15:20:59

回答

2

就像Git一樣使用Perl。假設你已經爲每個密碼:

#!/usr/bin/perl 

@dirs = ("admin", "editor", "etc"); 
foreach(@dirs) 
{ 
    chdir($_); 
    exec("git pull origin master"); 
    chdir(".."); 
} 

隨着一點點的附加拋光可以添加更好的錯誤處理和讀取密碼一次,而不是每次都。

+0

+1非常好的解決方案。簡單,做這項工作。 – ralphtheninja 2011-04-27 19:29:03

+0

我最終做了類似的事情,除了PHP,所以你可以打勾。 – Petah 2011-06-07 09:54:38

9
bash-3.2$ git submodule add [email protected]:SubmoduleName.git existing/submodule/path 
Adding existing repo at 'existing/submodule/path' to the index 

當您嘗試從某些git回購已存在的位置添加子模塊時,此回購將被添加到索引中。

0

(我知道這個問題很老了,但也許我的回答將是有用的人。)

現在你可以使用git子模塊的foreach這樣的任務。

也許混帳混帳拉拉--recurse-子模塊= YES也可以幫助你