2011-10-09 60 views
1

我正在與一個合作伙伴一起工作。我們的make文件略有差異,由不同的版本設置提供。正因爲如此,迄今爲止我們還沒有跟蹤這個文件。不過,至少有一個跟蹤我們會很高興。問題是,當完成並且其他人運行hg update時,他們的副本得到更新並且代碼不會被編譯。有選擇地更新工作目錄

有沒有一種方法來跟蹤文件,但讓它可以選擇性地更新工作目錄?或者有其他方法可以解決這個問題嗎?

回答

1

MQ擴展是最好的和正確的方式(TM)來做到這一點(不是最簡單的,但是......)

存儲文件在回購,個人個性化的公共部分 - 在自己的MQ-補丁

+2

這個問題的答案是這樣一個基本的問題不應該是「學習的工具,它是如此複雜的零件,他們甚至沒有默認啓用。 「 – mpm

+0

他們不是「那麼複雜」,他們只是在日常生活中不需要每一個人。我在不到一個小時的時間內完成了MQ,但它節省了我幾個小時的複製粘貼工作。 –

+0

等一下,您告訴我*爲什麼默認情況下MQ不是? – mpm

1

是否可以合併您的Makefiles?那麼不會因爲不將它們存儲在版本控制中而丟失不同的配置。

例如,您可以添加基於用戶名的條件語句。我的用戶名是瑞安,這個代碼與我的名字相反,但如果它在您的計算機上運行,​​它可能會回顯「不瑞安」。

all: 
    if [ `whoami` = "ryan" ]; then echo "ryan"; else echo "not ryan"; fi 
+0

**這種**情況的條件makefile是不好的風格 - 依賴於人爲,管理不善和可擴展 - 想像團隊中的10-20-50個開發人員 –

+0

當他們達到這個規模時,可以承擔類似的構建環境:) – ryantm

6

這是一個標準的「我該如何處理配置文件」問題的輕微變體。 SVN,Mercurial和Git的標準答案是:不跟蹤文件,而是跟蹤<文件>。例如。然後每個用戶將其複製到<文件>並根據需要調整它。

但Makefiles比配置文件有點聰明:它們執行代碼並可以包含其他文件。在這種情況下,它開始有意義地正常跟蹤Makefile,並使其包含另一個本地文件(如果存在該文件會覆蓋默認規則)。例如,下面將與GNU使工作:

# pull in any local user tweaks 
-include Makefile.local