2011-02-02 115 views
5

我知道,它一定是一個愚蠢的問題。 假設我有一個使用autotools構建系統的庫。 我有所有configure,configure.ac,Makefile.am,config.h和可能在我的項目根文件夾中的其他文件。其中一些是由開發人員編寫的,另一些則是由autotools生成的。Autotools和版本控制

問題是:如果我使用版本控制系統(在我的情況下 - hg) - 哪個autotools文件應該由VCS跟蹤,哪個不應該(hgignore'd)?

感謝, 塞爾

+0

[我應該保留在Git存儲庫中哪些文件由Autotools生成?](http://stackoverflow.com/questions/3290908/which-files-generated-by-autotools-should-i-keep-in -git-repository) – ptomato 2011-02-02 11:17:50

回答

10

我認爲最好的做法是隻將文件置於版本控制之下,但不會生成 - 與VCS一起工作的人員是開發人員,並且應該在他們的機器上安裝autotools,檢查生成的文件只會給他們帶來麻煩。

另一方面,您必須確保源代碼級分發是在所有生成的文件就緒的情況下完成的,以便非開發人員能夠在未安裝自動工具的情況下構建軟件。

4

有兩個思想流派在此:

  1. 「我想看到的項目,正是因爲它是在時間/版本X」
  2. 「我可以總是重新產生後來自動生成的任何東西「

我一般都會親自進入後一組,但前者可以很好,如果在某些特定版本中,您可能不再安裝任何版本的系統,因此這些版本系統存在問題。

在你的例子中,configureconfig.h都是(可能)自動生成的,所以如果你打算將它們包含在版本控制中,我會傾向於包含Makefile.in

在我的項目,這通常是指沒有相關的文件超過自動工具configure.acMakefile.am,如果它是GNU和一個名爲m4目錄,其中包括任何自定義/非標準宏我configure.ac需要的文檔。

+0

我更喜歡第二種方式。在這種情況下,庫將始終由安裝了自動工具的計算機上的回購庫構建。所以,我想在我的回購中儘可能少使用與autotools相關的文件。 – zserge 2011-02-02 10:16:19

+1

這兩種思想學派不是相互排斥的。您將未生成的文件存儲在VCS中,並將版本的tarball存儲在其他位置,通常位於規範源代碼存儲庫的同級目錄中。 – 2011-02-02 17:52:39