gpt4 book ai didi

svn - 如何使 'svn log'忽略属性更改?

转载 作者:行者123 更新时间:2023-12-01 19:21:04 24 4
gpt4 key购买 nike

“svn log”显示以下日志:1) 内容发生改变的文件和/或2) 属性发生改变的文件。

有没有办法只显示适用情况 1 的文件?

最佳答案

'svn log' shows the log of: 1) files whose content has changed AND/OR 2) files whose properties have changed.

如您所知,svn log 的输出是按提交日志消息而不是按文件组织的。如果您使用详细模式 (-v),它将显示与每个日志条目关联的文件(“路径”)。但是,其中一些路径可能位于请求的目标之外(默认:当前目录)。您是否希望结果也包含这些外部路径?我想从表面上看你的问题,你只是要求过滤,所以是的,如果这些外部路径代表文件的内容更改,你会想要这些路径。

这里有一个解决方案。它可能很慢,但我测试过它并且它可以在 Windows 7 上的 cygwin 中运行。(不要忘记,确保您的脚本具有unixy行结尾!如果需要,请使用dos2unix)

除了外部 sed 脚本(真正的黑客可以将其放在命令行上,但搞乱命令行转义的生命是短暂的)之外,实际上只有一行长线:

#!/bin/sh

# These paths are set up for cygwin
SED=/bin/sed
SORT=/bin/sort
UNIQ=/bin/uniq
XARGS=/bin/xargs
GREP=/bin/grep
SVN=svn

# Add desired log options here
LOG_OPTIONS=-v
SINCE_REV=10800
SED_SCRIPT=/cygdrive/c/temp/get-paths.sed
# Make sure you edit the sed script referenced above
# to set the base URL of your repository.

# 1) generate the list of log messages, including affected paths (svn log -v)
# 2) process out those paths (sed)
# 3) eliminate duplicates (sort | uniq)
# 4) get the change history for each of those paths (svn diff)
# 5) filter out the ones that involve only property changes (sed)
# 6) eliminate duplicates again (sort | uniq)
$SVN log $LOG_OPTIONS | $SED -n -f $SED_SCRIPT | $SORT | $UNIQ \
| $XARGS -n20 -I PATHS $SVN diff -r $SINCE_REV --summarize PATHS 2> error.log \
| $SED -n 's/^[^ ].... *//p' | $SORT | $UNIQ

这是外部 sed 脚本。请务必将 svn 存储库基本 URL 更改为存储库的正确基本 URL。 IE。 svn URL 的开头部分,不是 svn log -v 输出的。

 # sed script to output all lines between
# /^Changed paths:$/ and /^$/, exclusive.
# Also removes first 5 columns (status) and replaces them with svn repository base url.

/^Changed paths:$/,/^$/ {
/^Changed paths:$/b
/^$/b
s|^.....|https://svn.myrepo.org/prefix|
s/ (from .*)$//
p
}

该脚本将向 error.log 输出一些错误消息,主要是“找不到路径”,我认为这是针对存储库中曾经存在但已被移动(重命名)或删除的文件的。

这满足您的要求吗?

感谢 Michael Augustin,地址:this page有关 grep svn diff 的输出以删除仅属性更改的想法。

附注This other page似乎问了同样的问题,但没有完整的答案。

P.P.S。编辑上面的 bash 脚本以添加额外的 |排序| uniq 到管道的末尾,因为我看到那里有重复的内容。虽然我不明白为什么会发生。

关于svn - 如何使 'svn log'忽略属性更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3438270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com