【问题标题】:How to find out when each user's last commit was to subversion?如何找出每个用户的最后一次提交是什么时候颠覆?
【发布时间】:2011-02-13 22:50:24
【问题描述】:

我有一个运行 subversion 的存储库。一些用户没有定期提交。我想每周向上周没有承诺的人发送提醒。有没有办法确定每个用户上次提交日期是什么时候?

【问题讨论】:

  • 我确信有办法做到这一点(其他人将能够建议如何),但听到“人们没有承诺,他们应该更频繁地这样做,这让我感到紧张。”我可以理解你不希望他们偷懒,但是很多编程都是关于思考和理解问题。他们可能也有分支,所以他们在那里提交而不是主干。我想我只是说要小心做这样的事情的原因。程序员也喜欢被信任。
  • 如果这是每周一次,那就不会了。也许每周太多了。每月怎么样?

标签: svn version-control release release-management


【解决方案1】:

在不尝试解决您是否应该这样做的情况下,以下将为您提供在DATE1 和DATE2 之间提交的唯一用户列表

svn log -r'{DATE1}:{DATE2}' | grep -E '\|' | cut -f2 -d'|' | sort | uniq

其中DATE1 和DATE2 的格式为yyyymmdd。

我认为,一旦您获得了提交的用户列表,您就会知道谁没有提交,因为您可以将其与完整列表(例如 diff committed_users.txt all_users.txt)进行比较。

【讨论】:

    【解决方案2】:

    当心你测量的东西,因为你会收到它。

    两种技术是可能的。您可以编写一个小程序来调用“svn log”并提取相关的开发人员姓名和最后提交时间。您可以将脚本添加到适当的提交后挂钩,该挂钩可以从每周重新生成的电子邮件列表中删除开发人员,或者在稍后处理的文件中替换开发人员的最后提交时间。

    主要问题是通过衡量提交,您将获得更多提交。那些玩弄系统的人会大大降低提交的质量。我预计评论只会提交,或者在不久的将来会提交最琐碎的提交。

    【讨论】:

    • 虽然我大体上同意您不希望过于虔诚地跟踪提交或强制提交错误(甚至有问题)代码的想法,但我知道我参与过很多开发人员的项目花了数周时间既没有提交也没有更新他们的代码,在测试截止日期之前提交,结果在关键时间造成了广泛的痛苦集成失败。所以我也很同情至少需要注意哪些开发人员没有提交,以便开发经理可以找出他们没有提交的原因。
    • 这不适用于每周的唠叨电子邮件。这更适用于 Jim 讨论过的情况,冲突和非承诺性问题经常发生,并试图想办法解决问题。
    • 在这种情况下,听起来你需要明确表示不赞成打破头部,再加上“svn blame”的健康使用。这不是一个万无一失的解决方案,但它将不大量签到的负担转移到了那些很少签到的人的肩上。如果他们可以继续不受惩罚地破坏头部/分支,那么您还有其他问题。
    猜你喜欢
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2015-01-31
    • 2016-07-05
    相关资源
    最近更新 更多