3

我想检查我今天提交了哪些文件

我努力了 svn log | grep 'name' | grep '2013-04-01'

但它削减了我的评论和我提交的文件

感谢所有答案

我搜索类似的东西svn log -commited_by me

最后我做到了

svn log -v `svn log -q -r {2013-04-01}:{2013-04-02} | grep myname | cut -d"|" -f1 | sed 's/r/\-r/g'`

我觉得很长:^(

4

3 回答 3

6

您可以指定一个日期svn log,这将为您提供该日期的最新修订。您还可以使用范围内的日期,例如,您可以使用:

svn log -r {2013-03-26}:{"2013-03-26 23:59"}

您应该注意修订是“该日期的最新修订”,因此第一个修订是在前一天。(在题为“Subversion a Day Early?”的文档中有一个注释)因此,上面的例子可以很容易地写成:

svn log -r {2013-03-26}:{2013-03-27}

现在您在原始问题中提到“今天”,因此您可以构建一个自动输入日期的命令。现在该date命令可以为您获取今天的日期:

date "+%Y-%m-%d"

和明天的约会

date -v+1d "+%Y-%m-%d"

所以你可以结合这些方法:

svn log -r {`date "+%Y-%m-%d"`}:{`date -v+1d "+%Y-%m-%d"`}
于 2013-04-02T08:54:36.920 回答
2
  1. 必须阅读 SVN Book,至少要阅读Revision Specifiers(不要错过“Is Subversion a Day Early?”部分并理解它)主题和svn help log
  2. 必须学会为您回答评论中的问题

之后(如果您想从“简单尝试”尝试中排除第一个修订版,则借助一些代码行以获得修订版范围)您可以获得所需的结果。

有可能:

  • svn log -q -v -r BEGIN:END
  • svn diff --summarize -r BEGIN:END

(diff 不包含“噪音”,只有 a/ 没有重复的文件列表 b/ 每个受影响文件的状态指示器)

于 2013-04-02T05:51:43.093 回答
0

@borrible 的回答涵盖了日期范围,@Lazy Badger 的回答涵盖了文件列表,所以我将介绍问题的其余部分——将结果限制在您的范围内。

您可以使用以下--search选项进行过滤:

作者、日期、日志消息文本(除非使用 --quiet),或者,如果还提供了 --verbose 选项,则更改路径。

假设你的 svn 用户名是“Jing”,我们可以把所有的答案放在一起得到:

svn log --quiet --verbose --revision {`date "+%Y-%m-%d"`}:{`date -v+1d "+%Y-%m-%d"`} --search Jing path/to/repo/root

在哪里--quiet抑制提交消息--verbose并使文件路径出现。您必须包含存储库根目录的路径(在磁盘或 URL 上)以包含所有更改,而不仅仅是在当前文件夹中。

您将获得如下所示的结果:

------------------------------------------------------------------------
r468951 | Jing | 2021-06-23 13:16:03 -0700 (Wed, 23 Jun 2021)
Changed paths:
   M /project/filter.py
------------------------------------------------------------------------
r468952 | Jing | 2021-06-23 13:19:34 -0700 (Wed, 23 Jun 2021)
Changed paths:
   M /project/filter.py
   M /project/results.py
------------------------------------------------------------------------

要查看唯一文件路径的列表,请添加| grep "^ " | sort -u到命令。

不幸的是svn 的过滤是有限的,所以如果你的用户名也出现在 filepaths 中,你将不得不使用类似pysvn的东西来过滤结果。

另外,请注意,如果您使用本地路径,则只会包含您已同步的结果。如果您想要本地还没有的结果,则需要传递 url。

于 2021-06-25T18:01:04.483 回答