2010-07-24 45 views
6

到目前爲止,我已經對簡單的基於web的項目使用了版本控制,這些項目並沒有真正的編譯階段。我現在分叉了一個相對較大的項目,它遵循標準的「./configure; make; make install」模式。我不確定這種類型的項目的正確工作流程。使用版本控制編譯工作流程

如何處理編譯過程中創建的所有文件?

  • 將很多東西添加到.gitignore?這很難,因爲我沒有創建構建過程,也沒有真正理解創建的所有東西。
  • 簽出每個構建的其他地方的項目?這看起來很痛苦,因爲我經常每隔幾分鐘就建立一次。
  • 只要確保永遠不要添加我不知道的東西,即永遠不會做git add .如果是這樣,我該如何清理,然後呢?

很明顯,這是每個人都處理編譯代碼的面孔,所以我確信有一個可接受的模式,我只是不熟悉它。

+0

你使用自動工具嗎(即你的項目是否包含configure.ac/configure.in/Makefile.am文件)? – Scharron 2010-07-24 15:46:15

+0

@scharron:是的,該項目正在使用autotools。 – Tristan 2010-07-24 15:54:35

回答

6

我同意ChrisF,不要在版本庫中存儲構建生成的二進制文件。您的目標應該是擁有一個漂亮的.gitignore文件,以便在任何時候運行git status都不應顯示「未跟蹤的文件」。這意味着git要麼忽略或跟蹤所有文件。我用它來建立我的.gitignore

一個過程是這樣的:

  1. 添加並提交所有源項目(任何建之前)

    cd project

    git add .

    git commit -m'initial import'

  2. 添加將被忽略的簡單模式的文件.gitignore;這包括* .o,* .so等。

    echo '*.o' > .gitignore

    echo '*.so' >> .gitignore

  3. 然後我運行生成。

    make

  4. 然後我跑

    git ls-files -o >> .gitignore

    這將拿起你未與glob模式指定生成的任何優秀的文件。

-Bart

1

您不應將中間或輸出文件放在源代碼管理下。如果你這樣做了,每次編譯和構建解決方案時,都必須檢查它們以使文件可寫。

你不會說你正在使用什麼IDE(如果有) - 檢查它是否可以將項目添加到源代碼控制。如果它可以使用這個選項,因爲它只會添加那些絕對需要的文件。

4

要清理您的工作目錄,你可以使用git clean。除非您指定-f(強制)標誌,否則它不會在默認情況下造成任何傷害。

命令行git clean -xfd將刪除工作目錄中的所有內容,這不在版本控制中。

3

簡單的策略是將輸出存儲在另一個目錄中,例如,建立,然後忽略此目錄。你可以這樣配置:

mkdir build && cd build && ../configure