【问题标题】:GIT or Subversion - How to ignore part of the codeGIT 或 Subversion - 如何忽略部分代码
【发布时间】:2012-06-22 17:35:26
【问题描述】:

我正在根据特定需求在版本控制应用程序之间进行选择:

源文件由导出脚本文件的 4GL 图形客户端生成。问题是某些代码部分需要被忽略。这是一个脚本的代码示例:

BEGIN DSRECORD
   Identifier "V0"
   DateModified "1899-12-30"
   TimeModified "00.00.01"
   (...)
   StageXSize "730|48|46|48|48|48|48|48|48|48|48|48|48|48"
   StageYSize "132|48|48|48|48|48|48|48|48|48|48|48|48|48"
   ContainerViewSizing "0083 0345 0569 0735 0000 0001 0183 0680"
END DSRECORD

在该代码中,应该忽略 StageXSize 和 StageYSize 行,因为每次开发人员移动框(称为 Stage)时,这些值都会改变,但我不想将其视为代码更改。

所以我在 GIT 或 Subversion 中的问题,是否有办法指定在比较脚本的 2 个版本时忽略部分代码?

谢谢

【问题讨论】:

  • 使用smudge/clean filter,您也许可以在 Git 中执行此操作。我认为它不会“忽略”该文件的一部分,但您可以在清理步骤中指定恢复该文件的那一部分。

标签: git svn


【解决方案1】:

我听说过的所有版本控制应用程序都只允许忽略每个文件,但不能忽略文件中的特定行。

在任何 VCS 中,您通常通过签入具有默认值的“模板文件”来处理配置文件(=需要以某种形式存在于存储库中的文件,但任何开发人员都应该可以对其进行编辑而不提交更改) ,并让开发人员在其副本中进行更改,而 VCS 将忽略该副本。

下面是一个示例:
how to ignore files in kiln/mercurial using tortoise hg "that are part of the repository"

如果可能的话,您应该尝试将整个脚本文件视为“配置文件”。

【讨论】:

    【解决方案2】:

    我不这么认为。

    我认为“正确”的解决方案是将其拆分为两个文件,并在构建过程的某些部分将它们粘合到运行时所需的单个文件中(大概)。

    这样,每个开发人员都可以更改仅包含 StageXSizeStageYSize 行的较小文件,而无需提交。

    【讨论】:

      【解决方案3】:

      简单回答否。无论是对于 SVN 还是对于 Git,都无法忽略文件​​的某些部分。您可以忽略文件。

      在 SVN 中通过 svn:ignore 属性在 Git 中通过 .gitignore 文件获取目录。

      【讨论】:

        【解决方案4】:

        听起来 StageXSize 和 StageYSize 的值是不应该硬编码的配置选项。他们应该进入一个配置文件,比如 stage.config 或 some-app.conf

        【讨论】:

          猜你喜欢
          • 2012-05-16
          • 1970-01-01
          • 2015-08-19
          • 1970-01-01
          • 1970-01-01
          • 2010-09-10
          • 1970-01-01
          相关资源
          最近更新 更多