如何列出我今天在SVN中提交的文件?

时间:2013-04-01 06:16:00

标签: svn

我想查看我今天提交的文件

我试过了 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'`

我感到宽松:^(

3 个答案:

答案 0 :(得分:5)

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

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

您应该注意修订“该日期的最新修订版本”,因此第一次修订是在前一天。 (在documentation标题为“提前一天进行Subversion的过程中有一个注释吗?”)因此,上面的例子可以很容易地写成:

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"`}

答案 1 :(得分:2)

  1. 必须阅读 SVN Book,至少Revision Specifiers(不要错过" Subversion是否提前一天?"部分和了解 it)主题和svn help log
  2. 必须学习以回答您的评论问题
  3. 之后(在某些代码行的帮助下,为了获得修订范围,如果你想从#34中排除第一个修订版;轻松尝试"尝试),你可以获得所需的结果。

    可以是:

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

    (差异不包含"噪音",只有/ filelist没有重复b /每个受影响文件的状态指示符)

答案 2 :(得分: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 的过滤是有限的,所以如果您的用户名也出现在文件路径中,您将不得不使用类似 pysvn 的东西来过滤结果。< /p>

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