首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用钩子设置和操作自定义svn修订属性

如何使用钩子设置和操作自定义svn修订属性
EN

Stack Overflow用户
提问于 2013-04-16 20:50:47
回答 3查看 2.1K关注 0票数 4

我想配置以下内容:

  1. 当开发人员从SVN客户端签入代码时,钩子应该验证它是否设置了一个修订属性"CodeReview“,如果设置了属性的值,那么它是否与属性值一起设置。
  2. 如果未设置,则添加修订属性并将其值设置为“未完成”。
  3. 完成代码检查后,将属性值更新为“已完成”。

我在步骤1本身就有错误。我尝试添加一个预提交钩子来检查是否设置了修订属性。我无法在提交前的钩子中做到这一点。我编写了一个pre-commit.BAT文件并使用了svn,如下所示:

“C:\ Files\Subversion\bin\svn.exe”propget "CodeReview“-t %TXN % REPOS% >属性查找"%property%”“C:\repos\hooks\requiredproperties.txt”>“空” 如果%ERRORLEVEL% EQU 0转到OK1

这就产生了错误--抱怨-t。

有人能帮我完成这三个步骤的脚本吗?

EN

回答 3

Stack Overflow用户

发布于 2013-04-16 21:55:09

如前所述,您必须在步骤1中使用svnlook。但是情况更糟:强烈建议不要在预提交钩子中修改事务内容(虽然不禁止),以避免不可预测的结果,但您希望在步骤2中这样做。

而且,JFYI属性(任何svn属性)都是文件或目录的属性,您尝试从transaction获得它,它永远不会成功。

票数 3
EN

Stack Overflow用户

发布于 2013-04-16 22:48:02

我有一个预提交钩,它可以确保在提交属性时在文件上设置属性,并且将这些属性设置为特定属性。

这将确保属性在提交文件时设置在文件上。--然而,--有几个问题:

文件属性就像文件一样被恢复。如果我在我的文件中设置了CodeReview = Done属性,那么当下一个人将更改提交到Subversion时,它将被设置为CodeReview = Done。不完全是你想要的。

没有一种简单的方法可以查询文件属性来查看哪些属性具有Done的值,哪些没有。

我谦逊地提出建议:你正走向一个充满痛苦的世界。相反,将詹金斯设置为一个持续构建服务器。每次有人在Subversion中提交更改时,Jenkins都会启动一个生成,记录被更改的内容和被谁更改的内容。然后,不将单个文件标记为被检查或未检查,而是验证Jenkins构建是在整个变更集中进行的(这实际上更有意义)。

您可以使用促进构建插件来标记某个特定的构建是否已被评审,以及它是否通过了代码评审。您还可以在每个构建中附加一个注释,说明在代码评审中发现的任何问题。

现在,请原谅我上了肥皂盒.

大多数代码评审都是毫无价值的。代码评审有三个主要方面:

  1. 用户是否遵循公司标准惯例?
  2. 程序中嵌入的逻辑有用吗?
  3. 开发人员犯了一个愚蠢的错误吗?

太多的代码评审集中在第一个问题上,剩下很少的时间用于代码审查,甚至开发。我花了几个小时在代码评审中,开发人员调用变量CustomerServiceResponseCode而不是customerServiceResponseCode。我们甚至争论过是否应该是responseCodeCustomerService。我一生中的几个小时都不会回来做更重要的事情,比如玩“愤怒的小鸟”。

至于第2点:在编写任何代码之前,都应该在中完成。当开发人员花了5个小时的编码时间来告诉您这一切都是错误的时候,已经有点太晚了。

现在,让我们到第三点。

在审查代码之前:

开发者1:嘿,你的程序里有个bug!

开发者2:哇,是的。我忘了在插上之前把verbex装好了。孩子,这是个愚蠢的错误。

结果:一个感到无能和愚蠢的开发人员。

在对代码进行审查之后:

开发者1:我们刚刚得到一份报告,报告说程序中有一个bug!

开发者2:哇,我们在给verbex插上插件之前忘了把verbex设计好了。这是如何在代码评审中溜走的?

结果:一整组感到无能和愚蠢的开发人员。

在批准代码之前,我很少看到真正捕捉到错误的代码评审--甚至是简单的错误。这是其他人的代码,大多数开发人员都有其他的想法。他们快速地看了一眼,看到了整个逻辑看起来正确,然后为了表明他们注意到了,抱怨缩进是不正确的。

该怎么办呢?

  • 作为过程的一部分,在编写代码之前,应该讨论所有新的开发。这不是代码评审,这是问题跟踪系统的一部分。
  • 使用自动化的工具来捕捉事物。在Java中,我们有Check样式(是正确格式化的代码)、Findbug、PMD (两个工具都捕获潜在的bug)、复制/粘贴检测器等。Jenkins可以运行这些程序并构建各种图表。更好的是,它可以是一个持续集成游戏的一部分。在解决Checkstyle和Findbug问题时,您会得到积分,而创建新问题时则会丢失积分。还坚持编译器警告和弃用通知是固定的。同样,Jenkins可以跟踪它们,并给出修复和处理它们的点数。
  • 使用单元测试。当我领导一个项目时,我坚持所有的单元测试都是在创建代码之前编写的。这为开发人员在开发时提供了一个目标,而且代码通常会以较少的bug更好地实现。使用覆盖率工具查看单元测试对代码的覆盖程度。

使用自动化工具通常会捕获比手动代码检查更多的错误。自动测试可以检测代码逻辑何时会出现问题。

这并不意味着代码评审是无用的。它只允许代码评审是对代码的总体审查。例如:

  • 开发人员对编码有什么看法?他们是否发现由于其他地方的设计不佳,实现比应该要复杂吗?
  • 这个程序还可以读懂吗?是否有太多的例外情况和if条款无法解决实现问题?
  • 是否遵循了总体战略?开发人员使用基类/API是否因为实现不好而出现问题?
  • 开发人员是否遵循商定的逻辑?
  • 开发人员是否依赖于一个JSON第三方库,您已经看到了在其余代码中使用的另一个第三方库吗?

不要为了代码评审而进行代码评审。不要在代码评审的实现上浪费太多时间。而且,看在上帝的份上,不要做预提交代码评审。这意味着开发人员在做任何工作之前都要等待批准。

票数 2
EN

Stack Overflow用户

发布于 2013-04-16 21:42:19

您不能使用svn.exe,因为它不支持-t选项。你应该用

代码语言:javascript
运行
复制
svnlook.exe
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16046835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档