yvo*_*yer 256
你可以用这个:
svn log | sed -n '/USERNAME/,/-----$/ p'
Run Code Online (Sandbox Code Playgroud)
它将显示指定用户(USERNAME)所做的每次提交.
UPDATE
正如@bahrep所建议的那样,subversion 1.8附带了一个--search
选项.
Mic*_*ler 95
使用Subversion 1.8或更高版本:
svn log --search johnsmith77 -l 50
Run Code Online (Sandbox Code Playgroud)
除了作者匹配之外,这也将在提交消息中显示包含该用户名的SVN提交,如果您的用户名不是常用词,则不应该发生这种情况.
在-l 50
将搜索范围限制为最新的50个条目.
--search ARG
过滤日志消息以仅显示与搜索模式ARG匹配的消息.
仅当提供的搜索模式与作者,日期,日志消息文本(除非
--quiet
使用)中的任何一个匹配时,或者,如果--verbose
还提供了选项,则显示更改的路径,则仅显示日志消息.如果
--search
提供了多个选项,则会显示与任何提供的搜索模式匹配的日志消息.如果
--limit
使用,则限制搜索的日志消息数,而不是将输出限制为特定数量的匹配日志消息.
http://svnbook.red-bean.com/en/1.8/svn.ref.svn.html#svn.ref.svn.sw.search
Avi*_*Avi 17
svn没有附带内置选项.它有一个svn log --xml
选项,允许您自己解析输出,并获得有趣的部分.
您可以编写一个脚本来解析它,例如,在Python 2.6中:
import sys
from xml.etree.ElementTree import iterparse, dump
author = sys.argv[1]
iparse = iterparse(sys.stdin, ['start', 'end'])
for event, elem in iparse:
if event == 'start' and elem.tag == 'log':
logNode = elem
break
logentries = (elem for event, elem in iparse
if event == 'end' and elem.tag == 'logentry')
for logentry in logentries:
if logentry.find('author').text == author:
dump(logentry)
logNode.remove(logentry)
Run Code Online (Sandbox Code Playgroud)
如果将上述内容保存为svnLogStripByAuthor.py,则可以将其命名为:
svn log --xml other-options | svnLogStripByAuthor.py user
Run Code Online (Sandbox Code Playgroud)
use*_*169 13
因为每个人似乎都倾向于linux(等):这是Windows的等价物:
svn log [SVNPath]|find "USERNAME"
Run Code Online (Sandbox Code Playgroud)
svn log | grep user
Run Code Online (Sandbox Code Playgroud)
在很大程度上起作用.
或者更准确:
svn log | egrep 'r[0-9]+ \| user \|'
Run Code Online (Sandbox Code Playgroud)
虽然yvoyer的解决方案工作正常,但这里有一个利用SVN的XML输出,解析它xmlstarlet
.
svn log --xml | xmlstarlet sel -t -m 'log/logentry' \
--if "author = '<AUTHOR>'" \
-v "concat('Revision ', @revision, ' ', date)" -n -v msg -n -n
Run Code Online (Sandbox Code Playgroud)
从这里开始,您可以进入更高级的XML查询.