Просмотр истории SVN


С помощью команд svn можно получать прошлые версии по времени или номеру ревизии, а также просматривать конкретные изменения, внесённые в определённой версии. Для просмотра истории svn можно использовать следующие четыре команды:

  • svn log:Используется для отображения автора ревизии, даты, пути и т. д.

  • svn diff:Используется для отображения подробной информации о конкретных изменениях на уровне строк.

  • svn cat:Извлекает файл определённой ревизии и отображает его на текущем экране.

  • svn list:Отображает каталог или файлы, существующие в определённой ревизии.


1、svn log

Может отображать всю информацию. Если вы хотите просмотреть информацию только между двумя конкретными ревизиями, можно использовать:

root@example:~/svn/example01/trunk# svn log -r 6:8
------------------------------------------------------------------------
r6 | user02 | 2016-11-07 02:01:26 +0800 (Mon, 07 Nov 2016) | 1 line

change HelloWorld.html first.
------------------------------------------------------------------------
r7 | user01 | 2016-11-07 02:23:26 +0800 (Mon, 07 Nov 2016) | 1 line

change HelloWorld.html second
------------------------------------------------------------------------
r8 | user01 | 2016-11-07 02:53:13 +0800 (Mon, 07 Nov 2016) | 1 line

SVN readme.
------------------------------------------------------------------------

Если вы хотите просмотреть информацию об изменениях в ревизии для определённого файла, можно использоватьsvn logпуть к файлу.

root@example:~/svn/example01# svn log trunk/HelloWorld.html 
------------------------------------------------------------------------
r7 | user01 | 2016-11-07 02:23:26 +0800 (Mon, 07 Nov 2016) | 1 line

change HelloWorld.html second
------------------------------------------------------------------------
r6 | user02 | 2016-11-07 02:01:26 +0800 (Mon, 07 Nov 2016) | 1 line

change HelloWorld.html first.
------------------------------------------------------------------------
r5 | user01 | 2016-11-07 01:50:03 +0800 (Mon, 07 Nov 2016) | 1 line


------------------------------------------------------------------------
r4 | user01 | 2016-11-07 01:45:43 +0800 (Mon, 07 Nov 2016) | 1 line

Add function to accept input and to display array contents
------------------------------------------------------------------------
r3 | user01 | 2016-11-07 01:42:35 +0800 (Mon, 07 Nov 2016) | 1 line


------------------------------------------------------------------------
r2 | user01 | 2016-08-23 17:29:02 +0800 (Tue, 23 Aug 2016) | 1 line

first file
------------------------------------------------------------------------

Если вы хотите получить информацию о каталоге, нужно добавить-v。

Если вы хотите отобразить информацию о каталоге, ограниченную N записями, используйтеsvn log -l N -v。

root@example:~/svn/example01/trunk# svn log -l 5 -v 
------------------------------------------------------------------------
r6 | user02 | 2016-11-07 02:01:26 +0800 (Mon, 07 Nov 2016) | 1 line
Changed paths:
   M /trunk/HelloWorld.html

change HelloWorld.html first.
------------------------------------------------------------------------
r5 | user01 | 2016-11-07 01:50:03 +0800 (Mon, 07 Nov 2016) | 1 line
Changed paths:
   M /trunk/HelloWorld.html


------------------------------------------------------------------------
r4 | user01 | 2016-11-07 01:45:43 +0800 (Mon, 07 Nov 2016) | 1 line
Changed paths:
   M /trunk/HelloWorld.html

Add function to accept input and to display array contents
------------------------------------------------------------------------
r3 | user01 | 2016-11-07 01:42:35 +0800 (Mon, 07 Nov 2016) | 1 line
Changed paths:
   A /trunk/HelloWorld.html (from /trunk/helloworld.html:2)
   D /trunk/helloworld.html


------------------------------------------------------------------------
r2 | user01 | 2016-08-23 17:29:02 +0800 (Tue, 23 Aug 2016) | 1 line
Changed paths:
   A /trunk/helloworld.html

first file
------------------------------------------------------------------------

2、svn diff

Используется для проверки подробностей исторических изменений.

  • Проверка локальных изменений
  • Сравнение рабочей копии с репозиторием
  • Сравнение репозитория с репозиторием

(1) Если вы используете svn diff без каких-либо параметров, он сравнит ваши рабочие файлы с «чистой» копией, кэшированной в .svn.

root@example:~/svn/example01/trunk# svn diff
Index: rules.txt
===================================================================
--- rules.txt (revision 3)
+++ rules.txt (working copy)
@@ -1,4 +1,5 @@
Be kind to others
Freedom = Responsibility
Everything in moderation
-Chew with your mouth open

(2) Сравнение рабочей копии и репозитория

Сравните вашу рабочую копию с файлом rule.txt в ревизии 3 в репозитории.

svn diff -r 3 rule.txt

(3) Сравнение репозитория с репозиторием

Передайте два номера ревизий, разделённых двоеточием, через -r (revision), и эти две ревизии будут сравнены.

Сравните изменения этого файла между ревизиями 2 и 3 в рабочей копии svn.

svn diff -r 2:3 rule.txt

3、svn cat

Если вы просто хотите проверить прошлую версию, не просматривая различия, вы можете использовать svn cat

svn cat -r 版本号 rule.txt

Эта команда отобразит содержимое файла на этом номере ревизии.


4、svn list

svn listВы можете просматривать файлы в каталоге, не загружая их в локальный каталог:

$ svn list http://192.168.0.1/example01
README
branches/
clients/
tags/
Другие расширения