在特定日期获取用户活动的svn日志

问题描述:

我怎样才能看到全部我在特定日期做的svn日志?在特定日期获取用户活动的svn日志

我已经在网上搜索了这个,但一直没有找到解决办法。

+0

如果你在Windows上,TortoiseSVN的,您可以通过过滤其日志输出(除其他事项外)的用户名。如果你使用的是Unix,我毫不怀疑有一种方法可以编写一个脚本,用于在'svn log -revision {startdate}:{enddate}中为每个版本号执行'svn log -rNNNNN'。 grep ajitam',尽管我在shell脚本方面做得太弱了。 – sbi 2010-12-10 09:16:53

要显示在第10名的条目:

svn log -r '{2010-12-10}:{2010-12-11}'|sed -n '1p; 2,/^-/d; /username/,/^-/p' 

的SVN命令获取提交在该日期范围

击穿sed命令的:

  • -n - 不要自动打印。
  • 1p - 打印第一行(---标题)。
  • 2,/^-/d; - 删除从第二个到结束---标题的所有内容。这删除了第一个条目,IIRC是在一天开始时的午夜时分的最近一次提交(即,它实际上不在该范围内,并且可能在过去很长)。
  • /username/,/^-/p - 打印一切从用户名开始(一个正则表达式匹配你感兴趣的用户)收盘---头部(这个动作反复)
+1

@pyfunc它为我工作。 'grep'的问题在于你只能得到每个日志的第一行 – ajitam 2010-12-10 09:48:16

+1

谁对此投了票?有用。我知道,因为我(发布前)和ajitam都对它进行了测试。它可能需要GNU sed。 – 2010-12-10 09:50:06

+0

@ajitam:没关系。我的理解是基于你提供的。我相信你不想要一个饼干切割机解决方案。由于你没有提供任何细节。我知道你正在寻找在特定日期提交。这是我提供的。从那里建立就足够了。请参阅AgentConundrum的答案。在提供部分答案时,我得到两个否定的选票。非常有趣。 Matthew Flaschen的回答甚至不适合我。所以我想grep和休息需要专门建立。 AgentConundrum的答案更为通用,符合我的建议。 – pyfunc 2010-12-10 09:53:27

假设你是一个Linux系统上,你可以做这样的事情:

svn log -r {YYYY-MM-DD}:{YYYY-MM-DD} | grep username | cut -d " " -f 1 | tail -n +2 | while read revision; do svn log -r $revision; done

这是什么东西做的是使用svn日志来获得所有日志某一天,然后切割输出,使得它仅仅是一个版本号的列表。 [编辑:添加tail -n +2以截断第一次修订 - 正如@Matthew所述,第一行将是{that_day}之前的最新修订版] while循环然后遍历修订号的每一行,并将其传递到svn log。另外,请记住{YYYY-MM-DD}指的是当天的开始的午夜,因此要运行一整天,您应该运行它以获得{that_day}:{the_following_day}

希望有帮助!

(另外,抱歉的混乱提早了--username。我以前从来没有使用它,因为我的本地的svn只有一个用户(我),它看上去它的工作,当它真不是。)

+0

不幸的是,这与pyfunc的答案有相同的日期问题。它包含* *之前的提交*'that_day'。而且,这样做效率不高,因为每次调用svn日志都需要一个进程,一个网络连接以及一个可能的密码提示。 – 2010-12-10 09:57:29

+0

@Matthew:感谢您指出“最后一次提交”问题。我更新了我的解决方案。你绝对正确的认为,这会吸引网络或者使用未缓存的凭证。 – AgentConundrum 2010-12-10 10:08:12

+0

@Agent,+1,感谢您的更新。你说得对,尽管存在性能问题,但它更具可读性(尤其是如果你不熟悉sed)。 – 2010-12-10 10:13:52

如果你在Linux上的最佳解决方案,让整个日期的日志如下:

svn log -r {start date}:{end date} -v | sed -n ‘/username/,/—–$/ p’ 

如果您想要的用户名的基础上,指定日期范围内,然后与检索SVN日志你需要使用svn log -r {startDate}:{endDate}这是管道sed用户命令我。

svn log --verbose --search user_name --revision {YYYY-MM-DD}:{YYYY-MM-DD} 

任何平台