Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4.doc
Скачиваний:
29
Добавлен:
02.04.2015
Размер:
713 Кб
Скачать
☆

2.6.3 Svn diff

Еще один механизм для анализа изменений — это команда svn diff. Запустив svn diff без аргументов, можно увидеть, какие именно изменения вы внесли, в результате будут выведены изменения файлов в едином формате представления различий:[9]

$ svn diff

Index: bar.c

===================================================================

--- bar.c (revision 3)

+++ bar.c (working copy)

@@ -1,7 +1,12 @@

+#include <sys/types.h>

+#include <sys/stat.h>

+#include <unistd.h>

+

+#include <stdio.h>

int main(void) {

- printf("Sixty-four slices of American Cheese...\n");

+ printf("Sixty-five slices of American Cheese...\n");

return 0;

}

Index: README

===================================================================

--- README (revision 3)

+++ README (working copy)

@@ -193,3 +193,4 @@

+Note to self: pick up laundry.

Index: stuff/fish.c

===================================================================

--- stuff/fish.c (revision 1)

+++ stuff/fish.c (working copy)

-Welcome to the file known as 'fish'.

-Information on fish will be here soon.

Index: stuff/things/bloo.h

===================================================================

--- stuff/things/bloo.h (revision 8)

+++ stuff/things/bloo.h (working copy)

+Here is a new file to describe

+things about bloo.

Команда svn diff формирует свой вывод, сравнивая ваши рабочие файлы с кэшированными «нетронутыми» копиями из .svn. Весь текст запланированных для добавления файлов показывается как добавленный, а весь текст запланированных для удаления файлов показывается как удаленный.

Вывод происходит в едином формате представления различий. При этом удаленные строки предваряются знаком -, а добавленные — знаком +. Кроме этого svn diff печатает имена файлов и информацию о сдвиге информации, которая необходима программе patch, и, следовательно, вы можете получать«патчи», перенаправив вывод различий в файл:

$ svn diff > patchfile

Вы можете, например, отправить по электронной почте файл патча другому разработчику для ознакомления или тестирования перед фиксацией.

2.6.4 Svn revert

Теперь предположим, что, просмотрев вывод команды diff, вы обнаружили, что изменения в README ошибочны — к примеру, потому, что в своем редакторе вы случайно набрали текст, предназначавшийся для другого файла.

В такой ситуации как нельзя кстати окажется команда svn revert.

$ svn revert README

Reverted 'README'

Subversion возвращает файл в состояние, предшествующее модификации, путем замены файла его кэшированной «первоначальной» копией из .svn-области. Кроме того, обратите внимание, что svn revert может отменить любые запланированные операции — например, вы можете прийти к решению всё-таки не добавлять новый файл:

$ svn status foo

? foo

$ svn add foo

A foo

$ svn revert foo

Reverted 'foo'

$ svn status foo

? foo

Замечание

svn revert ITEM будет иметь точно такой же эффект, как и удаление ITEM из вашей рабочей копии, а затем выполнениеsvn update -r BASE ITEM. Однако, если вы отменяете изменения для файла, svn revert будет иметь одно значительное отличие — для восстановления файла не происходит соединения с хранилищем.

Или, допустим, вы ошибочно удалили файл из-под контроля версий:

$ svn status README

README

$ svn delete README

D README

$ svn revert README

Reverted 'README'

$ svn status README

README

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]