繁体   English   中英

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

[英]Compiling workflow with version control

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

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

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

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

我同意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

要清理工作目录,可以使用git clean 除非您指定-f (强制)标志,否则默认情况下不会造成任何伤害。

命令行git clean -xfd将删除工作目录中的所有内容,而不是版本控制中的内容。

简单的策略是将make输出存储在另一个目录中,例如build,然后忽略该目录。 您可以像这样配置它:

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

您不应将中间或输出文件置于源代码管理之下。 如果你这样做,你必须检查它们,以便在每次编译和构建解决方案时使文件可写。

您没有说出您正在使用的IDE(如果有) - 请检查它是否可以将项目添加到源代码管理中。 如果它可以使用此选项,因为它只会添加绝对需要的那些文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM