svn log — 显示提交日志信息。
Shows log messages from the repository. If no arguments are supplied,
svn log shows the log messages for all files and
directories inside (and including) the current working directory of your
working copy. You can refine the results by specifying a path, one or more
revisions, or any combination of the two. The default revision range for a
local path is BASE:1
.
If you specify a URL alone, it prints log messages for everything the URL
contains. If you add paths past the URL, only messages for those paths
under that URL will be printed. The default revision range for a URL is
HEAD:1
.
With --verbose
(-v
), svn
log will also print all affected paths with each log message.
With --quiet
(-q
), svn
log will not print the log message body itself, this is compatible
with --verbose
(-v
).
Each log message is printed just once, even if more than one of the affected
paths for that revision were explicitly requested. Logs follow copy history
by default. Use --stop-on-copy
to disable this behavior,
which can be useful for determining branch points.
--change (-c) ARG --incremental --limit (-l) NUM --quiet (-q) --revision (-r) REV --stop-on-copy --targets FILENAME --use-merge-history (-g) --verbose (-v) --with-all-revprops --with-no-revprops --with-revprop ARG --xml
You can see the log messages for all the paths that changed in your working
copy by running svn log
from the top:
$ svn log ------------------------------------------------------------------------ r20 | harry | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line Tweak. ------------------------------------------------------------------------ r17 | sally | 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003) | 2 lines …
检验一个特定文件所有的日志信息:
$ svn log foo.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Added defines. ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
如果你手边没有工作副本,你可以查看一个URL的日志:
$ svn log http://svn.red-bean.com/repos/test/foo.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Added defines. ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
如果你希望查看某个URL下面不同的多个路径,你可以使用URL [PATH...]
语法。
$ svn log http://svn.red-bean.com/repos/test/ foo.c bar.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Added defines. ------------------------------------------------------------------------ r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line Added new file bar.c ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
The --verbose
(-v
) option causes
svn log to include information about the paths that were
changed in each displayed revision. These paths appear, one path per line
of output, with action codes that indicate what type of change was made to
the path.
$ svn log -v http://svn.red-bean.com/repos/test/ foo.c bar.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Changed paths: M /foo.c Added defines. ------------------------------------------------------------------------ r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line Changed paths: A /bar.c Added new file bar.c ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
svn log uses just a handful of action codes, and they are similar to the ones the svn update command uses:
A
项目已增加。
D
项目已删除。
M
条目属性改变了,注意开头的空格。
R
在同样的位置,项目被代替。
In addition to the action codes which precede the changed paths,
svn log with the --verbose
(-v
) option will note whether a path was added or replaced
as the result of a copy operation. It does so by printing (from
after such paths.COPY-FROM-PATH
:COPY-FROM-REV
)
When you're concatenating the results of multiple calls to the log command,
you may want to use the --incremental
option. svn
log normally prints out a dashed line at the beginning of a log
message, after each subsequent log message, and following the final log
message. If you ran svn log on a range of two revisions,
you would get this:
$ svn log -r 14:15 ------------------------------------------------------------------------ r14 | … ------------------------------------------------------------------------ r15 | … ------------------------------------------------------------------------
然而,如果你希望收集两个不连续的日志信息到一个文件,你会这样做:
$ svn log -r 14 > mylog $ svn log -r 19 >> mylog $ svn log -r 27 >> mylog $ cat mylog ------------------------------------------------------------------------ r14 | … ------------------------------------------------------------------------ ------------------------------------------------------------------------ r19 | … ------------------------------------------------------------------------ ------------------------------------------------------------------------ r27 | … ------------------------------------------------------------------------
你可以使用incremental选项来避免两行虚线带来的混乱:
$ svn log --incremental -r 14 > mylog $ svn log --incremental -r 19 >> mylog $ svn log --incremental -r 27 >> mylog $ cat mylog ------------------------------------------------------------------------ r14 | … ------------------------------------------------------------------------ r19 | … ------------------------------------------------------------------------ r27 | …
--incremental
选项为--xml
提供了一个相似的输出控制。
$ svn log --xml --incremental -r 1 sandwich.txt <logentry revision="1"> <author>harry</author> <date>2008-06-03T06:35:53.048870Z</date> <msg>Initial Import.</msg> </logentry>
提示 | |
---|---|
Sometimes when you run svn log on a specific path and a specific revision, you see no log information output at all, as in the following: $ svn log -r 20 http://svn.red-bean.com/untouched.txt ------------------------------------------------------------------------ That just means the path wasn't modified in that revision. To get log information for that revision, either run the log operation against the repository's root URL, or specify a path that you happen to know was changed in that revision: $ svn log -r 20 touched.txt ------------------------------------------------------------------------ r20 | sally | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line Made a change. ------------------------------------------------------------------------ |