Долгое время этот раздел был полезной справкой для моих школьников. Хотя к тому времени уже существовал Гит, но освоение системы контроля версий легче было начинать с SVN. Как-то он проще воспринимался.

Оставляю этот раздел на сайте для истории. А также на его основе будет сделана аналогичная страница по гиту.

SVN. Основные операции

svn checkout https://your.repo/trunk D:/your/working/copy/path ― создать рабочую копию удалённого репозитория.)

svn status ― знать список изменённых, удалённых и добавленных файлов

svn status sub/directory/ ― узнать статус не всего репозитория, а конкретного подкаталога

svn diff ― посмотреть изменения сделанные в рабочей копии. Имеется в виду сравнение текстов файлов, вы видите, конкретно те строчки, которые изменились.

svn diff sub/directory/file.java ― посмотреть изменения конкретного файла.

svn diff > diff.txt ― Если изменений слишком много, то бывает удобно сохранить их все в файл diff.txt, а потом посмотреть при помощи текстового редактора.

svn updatе ― загрузить в рабочую копию изменения произошедшие на сервере. Это следует делать регулярно. Строго обязательно делать апдейт перед коммитом.

svn add sub/directory/file.java ― Добавить новый файл в репозиторий. Если этого не сделать, то в списке статуса файл отображается вопросиком и в репозиторий не коммитится. Если его добавить этой командой, то в статусе он будет отмечен буквой A. Это значит, что файл добавлен и будет закоммичен.

svn add sub/directory/ ― добавить в репозиторий новый каталог со всеми файлами и подкаталогами.

svn add -N sub/directory/ ― добавить в репозиторий новый каталог, но не добавлять его файлы и подкаталоги. Возможно, вы хотите выборочно добавить некоторые из них.

svn revert sub/directory/file.java ― откатить все изменения в файле, файл становится таким же, как в репозитории. Ваши изменения теряются безвозвратно.

svn commit -m ”комментарий/описание того, что вы сделали в коммите” ― сделать комит ваших изменений на сервер. Если на сервере произошли какие-то изменения, то коммит не произойдёт, вас попросят сначала сделать апдейт. После того, как коммит успешно прошёл, результат команды svn status должен быть пустым.

Однако, коммитить нужно только те файлы, которые создал человек. Это могут быть:

  • исходники проекта,
  • скрипты для автоматической сборки,
  • какие-либо картинки.

Нельзя коммитить:

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

Совершенно необходимо делать внятный комментарий к комиту, чтобы даже через полгода, вы могли вспомнить, что в нём было сделано.

svn info ― информация об адресе репозитория и конкретного места в нём, в котором вы находитесь, номер текущей ревизии, номер последней ревизии, в которой были сделаны изменения. Ревизия ― это состояние репозитория. Каждый коммит изменяет состояние репозиторя, создавая новую ревизию. Все ревизии нумеруются целыми числами от 0 до номера последнего коммита.

svn log ― Информация обо всех изменениях репозитория. Иногда становится очень длинной, так что требуется сохранять в файл, а потом смотреть.

Команды info, status, diff, add, revert выполняются локально. Даже подключение к интернету не требуется.

Команды checkout, update, commit, log требуют доступа к репозиторию. Любая из них принимает аргументы вида --username=someuser --password=somepassword. Если пароль опустить, то его спросят в следующей строке. Если опустить имя пользователя, то если вы уже были залогинены, то всё пройдёт без лишних вопросов. Иначе спросят пользователя и пароль.