2010-05-28 43 views
1

我有一個本地git存儲庫在github上的「中央」回購。我正在參與一個項目的一部分,而一個朋友正在研究一個完全獨立回購的相關部分,我可以直接鏈接到我朋友的回購嗎?Git在推送期間使用遠程源

例如,該應用程序稱爲小部件。我有我的部件/應用/ mycode的所有的代碼和我的朋友正在寫代碼,進入控件/插件/真棒/ hiscode

我希望能夠永遠擁有http://github.com/mycode/widgets/plugins/hiscode是直接鏈接或克隆http://github.com/hiscode/awesome

,便有可能我錯過了我的問題的git的一些基本的東西或知識,如果是的話請你,我會很樂意嘗試填補空白。

我正在通過capistrano部署到我的製作網站,所以也許某種腳本可能更容易?我不知道(這就是爲什麼我張貼)!

回答

1

git submodules, true nature所述,這可以通過在widgets/plugins/awesome/hiscode中聲明一個子模塊來參考http://github.com/hiscode/awesome來實現。

然後,您可以定期從該子模塊中取出其最新更改以更新它,前提是您再次從widgets/目錄(這是您的「主」項目,即包含子模塊的項目)提交。
這樣,您的主項目將記錄更新的子模塊的新SHA1。

你甚至可以直接在該子模塊開發,直接推到http://github.com/mycode/widgets/plugins/hiscode(同時還犯小部件,再記錄新的SHA1)。
但是,您需要記住首先在該子模塊內簽出分支,因爲「子模塊更新」始終將其初始化/更新爲detached head

+0

使用此解決方案時,我必須在每次提交主回購前確保我有最新更改才能拉動子模塊?如果有,是否有任何方法可以自動執行此操作? – Schneems 2010-05-28 14:09:35

+0

@ThinkBohemian:如果您最近對該子模塊進行的更改(在該子模塊中)是在主項目之外進行的,那麼是的,在主項目提交之前需要在子模塊中進行拉取。但是(如「submodule,true nature」中詳細描述的那樣),您也可以直接在子模塊內進行修改。 – VonC 2010-05-28 14:24:11

1

這聽起來像子模塊將是一個很好的解決方案。我不是在github上的url 100%肯定,但是這應該讓你接近:

git submodule add http://github.com/hiscode/awesome plugins/hiscode

要更新的子模塊,並確保你仍然可以提交到「真棒插件」,你會執行從repoisitory根以下:

git submodule update
cd plugins/hiscode
git checkout master

注意,你基本上在這一點上築巢Git倉庫,而不是實際進行的另一部分。

對於SVN用戶:這與具有特定修訂號的subversion的svn:externals屬性類似。執行上述腳本與更新svn屬性中的修訂號相同。