代码之家  ›  专栏  ›  技术社区  ›  Carlo Pecchia

在hook脚本中修改SVN下的文件

svn
  •  2
  • Carlo Pecchia  · 技术社区  · 15 年前

    修改特定文件的最佳方法是什么(如果有) 在下面 我们的存储库在提交后 ?

    我想在somefile.conf文件中附加一个校验和行。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Ether    15 年前

    不要在一个钩子中这样做——在一个单独的变更中这样做,该分支的其他用户随后可以将这个变更下拉到他们的工作副本中。它不需要比这更复杂(在伪代码中):

    • 脚本获取从存储库到本地目录的工作副本
    • 脚本修改文件
    • 脚本提交带有良好提交消息的文件,例如“script foo:adding checksum”

    构建脚本(在cron下运行或由makefile触发)对存储库进行定期修订并不少见,例如基于其他文件重新生成文件。有时这些文件会被检入到存储库中,有时不会,这取决于谁使用这些文件以及如何使用这些文件。

        2
  •  4
  •   sbi    15 年前

    你可能想读 this chapter 关于SVN的书。最后,在一个漂亮的红色框中有以下警告:

    虽然钩子脚本几乎可以做任何事情,但钩子脚本作者应该在一个维度上表现出克制:不要使用钩子脚本修改提交事务。虽然使用hook脚本自动更正提交的文件中存在的错误、缺点或策略冲突可能很有诱惑力,但这样做可能会导致问题。Subversion保留某些存储库数据位的客户端缓存,如果您以这种方式更改提交事务,这些缓存将变得不可检测的过时。这种不一致可能导致令人惊讶和意外的行为。您不应该修改事务,而应该简单地在预提交挂钩中验证事务,如果不满足所需的要求,则拒绝提交。作为一个额外的好处,你的用户将学习到谨慎、遵纪守法的工作习惯的价值。

        3
  •  1
  •   Jim T    15 年前

    在提交后挂钩中执行您的建议没有问题,但请注意,它将向存储库添加新的修订,并且原始提交者需要在看到脚本所做的更改之前进行更新。 它还将减慢提交速度,因为提交后在从提交操作返回之前运行。