使用版本控制编译工作流程

Tri*_*tan 6 git version-control autotools

到目前为止,我已经将版本控制用于基本的基于Web的项目,这些项目实际上没有编译阶段.我现在分叉了一个相对较大的项目,该项目遵循标准的"./configure; make; make install"模式.我不确定这类项目的正确工作流程.

如何处理编译过程中创建的所有文件?

  • 添加很多东西给.gitignore?这很难,因为我没有创建构建过程,也没有真正理解所创建的所有内容.
  • 在每个构建的其他地方签出项目?这似乎是一种痛苦,因为我经常每隔几分钟建立一次.
  • 只是确保永远不要添加我不知道的东西,即从不这样做,git add . 如果是这样,我该如何清理呢?

显然这是每个处理已编译代码的人,所以我确信有一个可接受的模式,我还不熟悉它.

小智 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