Menu

svn_task_2

alykoshin

Получение рабочей версии
Основная версия проекта лежит в подкаталоге проекта trunk
Для того, чтобы получить её, необходимо ввести команду
svn checkout <папка хранилища> <локальная папка>

C:\svn\bin>svn checkout https://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/StudySVN/trunk c:\StudySVN\trunk

Запускать эту команду надо из подпапке bin
В случае успешного выполнения будет выведено сообщение с номером ревизии, например:
Checked out revision 3.

Создание отдельной ветви
Создадим отдельную ветвь проекта, в качестве подпапки указав свой логин
svn copy https://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/
StudySVN/trunk https://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/StudySVN/branches/<имя пользователя> -m "Creating my personal branch"

Параметр -m "Creating my personal branch" определяет комментарий, с которым будут сохранены файлы.

Команды list и cat
С помощью команды list можно посмотреть, какие папки есть на сервере
svn list https://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/
StudySVN/

svn list https://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/StudySVN
branches/
tags/
trunk/

Сравните то, что показывает команда svn list с тем, что видно через веб-интерфейс
http://pasoiu-2011.svn.sourceforge.net/viewvc/pasoiu-2011/

Командой svn cat можно распечатать содержимое файла

Получим свою только что созданную ветвь
svn checkout https://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/StudySVN/branches/<имя пользователя> c:\StudySVN\branch
A C:\StudySVN_branch\test2.txt
A C:\StudySVN_branch\test1.txt
Checked out revision 3.
Теперь у нас на диске есть две версии проекта, - основная и ветвь от нее.
Добавление файла
Добавьте в свою ветвь текстовый файл, имя которого совпадает с вашим логином, и произвольным содержимым.

Команд svn status
Поcмотрим состояние командой svn status
C:\svn\bin>svn status c:\StudySVN\branch
? C:\StudySVN\branch\test3.txt
С параметром -v эта команда выведет состояние всех файлов, не только измененных
C:\svn\bin>svn status c:\StudySVN\branch -v
4 2 alykoshin C:\StudySVN\branch
? C:\StudySVN\branch\test3.txt
4 1 alykoshin C:\StudySVN\branch\test2.txt
4 1 alykoshin C:\StudySVN\branch\test1.txt

Команда svn add
Вопросительный знак в списке выше означает, что файл не учитывается системой контроля версий.
Его необходимо добавить командой svn add
! Без выполнения команды “svn add” данный файл не будет сохраняться на сервере
C:\svn\bin>svn add c:\StudySVN\branch\test3.txt
A C:\StudySVN\branch\test3.txt

"А" означает, что файл был добавлен в локальную копию

Опять посмотрим состояние
C:\svn\bin>svn status c:\StudySVN\branch
C:\svn\bin>svn status c:\StudySVN\branch -v
4 4 alykoshin C:\StudySVN\trunk
4 4 alykoshin C:\StudySVN\trunk\student_list.txt
4 1 alykoshin C:\StudySVN\trunk\test2.txt
4 3 alykoshin C:\StudySVN\trunk\test1.txt

Изменение файла
Изменим содержимое файла test1.txt (например, добавим строку с произвольным текстом.
Сохраним локальные изменения командой svn commit
C:\svn\bin>svn commit c:\StudySVN\branch -m "added test3.txt"
Adding StudySVN\branch\test3.txt
Transmitting file data ..
Committed revision 5.

Посмотрим состояние
C:\svn\bin>svn status c:\StudySVN\branch
M C:\StudySVN\branch\test2.txt

Команда svn diff
Командой svn diff можно посмотреть различия между файлами
C:\svn\bin>svn diff c:\StudySVN\branch
Index: C:/StudySVN/branch/test2.txt
===================================================================
--- C:/StudySVN/branch/test2.txt (revision 4)
+++ C:/StudySVN/branch/test2.txt (working copy)
@@ -9,3 +9,5 @@
This is line 09 of file test2.txt
This is line 10 of file test2.txt

+
+aaaa
\ No newline at end of file

Сохраним локальные изменения,сделав svn commit
C:\svn\bin>svn commit c:\StudySVN\branch -m "modified test2.txt"
Sending StudySVN\branch\test2.txt
Transmitting file data ..
Committed revision 5.

Отмена локальных изменений командой svn revert
Отменить изменения (до того, как файл был сохранен в хранилище)
C:\svn\bin>svn revert c:\StudySVN\v1\test2.txt
Reverted 'C:\StudySVN\v1\test2.txt'

Команда svn log
Командой svn log можно посмотреть полный список изменений файла

Обновление локальной копии с сервера командой svn update
Мы получили копию с сервера только один раз, в самом начале. Если кто-то вносил изменения в нашу ветвь, локально у нас их нет
Обновите локальную копию командой svn update
Удаление файла.
Удалите файл test2.txt вашей ветви из файловой системы командой
Посмотрите статус, попробуйте сделать svn commit
Восстановите файл командой svn update

Команда svn delete
Для удаления файла воспользуйтесь командой svn delete
Посмотрите статус, сделайте svn commit
Выполните команду svn update для синхронизации рабочей копии с сервером

Обратите внимание, что в веб-интерфейсе его по-прежнему видно, но только под предыдущей ревизией
Работа с конкретными ревизиями
Параметр -r задает ревизию.
Попробуйте получить ту ревизию, в которой файл еще существует с помощью команды svn update –r <номер ревизии>
Разрешение конфликтов
Создадим на диске две копии проекта
C:\svn\bin>svn checkout http://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/StudySVN/trunk c:\StudySVN\v1
A C:\StudySVN\v1\student_list.txt
A C:\StudySVN\v1\test2.txt
A C:\StudySVN\v1\test1.txt
Checked out revision 23.

C:\svn\bin>svn checkout http://pasoiu-2011.svn.sourceforge.net/svnroot/pasoiu-2011/StudySVN/trunk c:\StudySVN\v2
A C:\StudySVN\v2\student_list.txt
A C:\StudySVN\v2\test2.txt
A C:\StudySVN\v2\test1.txt
Checked out revision 23.

Внесем изменения в один и то же файл в разных копиях проекта и посмотрим состояние:
C:\svn\bin>svn status c:\StudySVN\v1
M C:\StudySVN\v1\test1.txt
C:\svn\bin>svn status c:\StudySVN\v2
M C:\StudySVN\v2\test1.txt

Один и тот же файл помечен как измененный в двух разных копиях
Сохраним изменения первой версии, затем второй
C:\svn\bin>svn commit c:\StudySVN\v1 -m "test1.txt changed at both versions. commiting 1st of them"
Authentication realm: http://pasoiu-2011.svn.sourceforge.net:80 SourceForge Subversion area
Password for 'alykoshin': **
Sending StudySVN\v1\test1.txt
Transmitting file data .
Committed revision 24.

C:\svn\bin>svn commit c:\StudySVN\v2 -m "test1.txt changed at both versions. commiting 2n"
Sending StudySVN\v2\test1.txt
svn: Commit failed (details follow):
svn: File or directory 'test1.txt' is out of date; try updating
svn: resource out of date; try updating

C:\svn\bin>svn update c:\StudySVN\v2
Conflict discovered in 'C:/StudySVN/v2/test1.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:

Если ввести команду “p” (postpone, отложить), на диске добавится три файла:
test1.txt
test1.txt.mine
test1.txt.r23
test1.txt.r24
Посмотрите их содержимое. Один из них – файл, образованный слиянием первой и второй копии, другой – наша версия (из второй копии) и две версии из хранилища, - та, которая была основой для этого файла(второй копии), и та, в которую внесены изменения (первая копия)
При этом сохранить копию 2 в хранилище мы по-прежнему не можем
C:\svn\bin>svn commit c:\studysvn\v2
svn: Commit failed (details follow):
svn: Aborting commit: 'C:\StudySVN\v2\test1.txt' remains in conflict

Хотя команда svn update продолжает работать (но не для этого файла):
C:\svn\bin>svn update c:\StudySVN\v2
At revision 24.

Теперь необходимо отредактировать файл test1.txt так, чтобы в нем содержались корректные данные.
После этого необходимо выполнить команду svn resolve
C:\svn\bin>svn resolve --accept=working c:\StudySVN\v2\test1.txt
Resolved conflicted state of 'C:\StudySVN\v2\test1.txt'

C:\svn\bin>svn status c:\StudySVN\v2\test1.txt
C C:\StudySVN\v2\test1.txt

C:\svn\bin>svn commit c:\studysvn\v2 -m "resolved test1.txt"
Sending StudySVN\v2\test1.txt
Transmitting file data .
Committed revision 25.

C:\svn\bin>svn status c:\StudySVN\v2
C:\svn\bin>

И завершим обновлением локальной версии версией хранилища (на случай, если какие-либо другие файлы были кем-то изменены)
C:\svn\bin>svn update c:\StudySVN\v2
At revision 25.

Конфликт разрешен.


MongoDB Logo MongoDB