2010-07-24 70 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 
相关问题