【问题标题】:Tortoise SVN logging without committingTortoise SVN 日志记录而不提交
【发布时间】:2010-12-14 01:45:07
【问题描述】:

我通常对我的源代码进行多次小的编辑,但我还不想提交,因为这些更改相当微不足道。我现在使用的当前方法是将更改记录在文本文件中,然后在提交时将内容复制到日志中。

是否可以在使用 Tortoise SVN(或任何其他 SVN 工具)将日志消息附加到我当前正在编辑的副本中,然后在提交时,日志消息会自动附加到提交中,所以我不必记住到目前为止我所做的所有更改?

【问题讨论】:

  • 有趣的问题。我不认为这是可能的。可能有一种解决方法,使用元属性和预提交钩子将它们变成提交消息,不过

标签: svn logging tortoisesvn


【解决方案1】:

当您进行提交但失败时,tortoiseSVN 会存储提交消息以供您在重试时将其显示出来。找到那个文件并附加到它是我的建议。

vanilla svn 是 commit.tmp,这可能是一个很好的起点。

编辑:

编辑编辑:您使用的是乌龟,这意味着窗户。所以,你可能需要在 Windows 上工作的东西。自从我不擅长 cmd 脚本以来,我很快就用 python 重写了它

或者,创建一个名为 logs 的目录,将所有笔记存储在其中,然后为提交脚本执行类似的操作

for i in `ls logs`; do
    echo -n "$i: "
    cat logs/$i >> commitFile
done
svn commit -F commitFile

或者在python中

#!/usr/bin/python
import os
dirlisting = os.listdir('logs')
commitFile = open("commitfile.tmp", "w")
for i in dirlisting:
    log = open(i, 'r')
    commitFile.write(log.read())
    log.close()
os.execlp("svn", "svn", "commit", "-F", "commitfile.tmp")

你需要修复最后一行来做一些调用乌龟的事情。这些脚本我都没有测试过。

显然你想稍微清理一下,让它更聪明一点,但你可以看到我在说什么。

【讨论】:

  • 您不必进行提交,如果您取消提交,日志消息将保留在 TortoiseSVN 历史记录中。但我认为这并不能(完全)解决问题,因为每个历史项目都需要合并。
  • 我建议您可以将其用作存储笔记的地方。
  • @Si:我测试了 vanilla svn,它忽略了我创建的 svn-commit.tmp 并使其成为自己的 svn-commit.2.tmp 我已经在我的答案中添加了一个脚本,可能是他在寻找什么。
  • 当然,我同意它会起作用,除了您必须将历史消息组合在一起以进行提交。
  • Si:看看我写的两个脚本。他们从名为 logs 的目录中提取消息。
【解决方案2】:

使用差异工具并在提交前查看您的更改有什么问题?

如果您不记得更改的原因,或者无法从代码中找出原因,那么这不是您需要更频繁地提交的线索吗?提交既便宜又快捷,如果更改在逻辑上与修订相关,那么恢复和合并(将来)会容易得多。

【讨论】:

  • 对此+1,我承诺了很多。我将相关更改分组(并确保如果更改相互依赖,则它们包含在单个提交中!)但没有看到大量提交的问题。
【解决方案3】:

有趣的问题。

这个答案可能与上下文无关,但如果您可以灵活地转向另一个版本控制系统,我建议您转向Git(允许您进行本地提交)。我并不是说任何反对 SVN 的东西,它很棒,只是 Git 可能会根据用例更适合你。

【讨论】:

  • Mercurial (mercurial.selenic.com) 做一些类似于 Git 的事情。带有与其相关联的消息的本地副本。然后用你所有的笔记大力推动。
  • -1 我并没有反对 Git,我确信它很棒,只是问题是关于 SVN ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-03
  • 2020-11-03
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多