Ярлыки

понедельник, 17 января 2011 г.

Subversion

link

Базовые команды

Извлекаем проекты

Вам необходимо знать URL компонентов, которые вы хотите извлечь. После этого Вы сможете сделать одно из следующих действий
svn checkout url
svn co url
Эти команды позволяют всё извлечь в директорию с именем по умолчанию. Например
svn checkout http://code.djangoproject.com/svn/django/trunk
Эта комманда извлечет django в директорию с названием trunk в текущей директории.
Вы так же можете указать название директории, в которую будeт извлечены файлы:
svn checkout http://code.djangoproject.com/svn/django/trunk django
Таким способом Вы извлечеты всё в директорию django

Svn Update и Revert

Svn update сливает изменения в репозитории и локальные изменения в коде, или показывает места, где возникли конфликты (конфликты показаны буквой C напротив файлов, который вы пытались обновить). Если кто-то другой закоммитил изменения в репозиторий и это не привело к конфликту с Вашей текущей версией, то svn update покажет G вместо C. Как бороться с конфликтами будет рассказано чуть ниже.
  • Чтобы обновить локальные файлы с изменениями, произведенными в репозитории, сделайте «svn update»
    svn update    ... 
    
  • Чтобы перезаписать локальные файлы файлами из репозитория, сделайте «svn revert» – это может быть нужно, если Вы хотите вернуться к версии файлов, лежащих в репозитории, при этом вы потеряете все изменения, которые Вы внесли в него с момента последнего коммита
    svn revert    ... 
    
Вы можете обновить всю директорию целиком, включая поддиректории, перейдя в нужную директорию и набрав:
svn update

Svn Diff

Заметьте, что diff не подключается к репозиторию! Он сравнивает ваши файлы с файлами, которые вы скачали, а не теми, что сейчас находятся в репозитории!
Чтобы узнать какие изменения вы делали с файлами наберите:
cd <Нужная директория>
svn diff 

Svn commit

Запустите svn diff чтобы увидеть какие изменения вы вносили в файл с момента последнего апдейта. Потом обновите файл svn up, запустите svn diff , и svn commit с сообщением:
svn diff 
Покажет вам изменения с последнего обновления.
svn update 
Эта комманда сольет изменения, внесенные в файл в репозитории с теми что внесли Вы. Ваши изменения имеют приоритет. Но могут возникнуть конфликты, если строки которые вы правили на Вашей машине были изменены в репозитории с вашего последнего апдейта.
svn diff 
diff покажет отличия между файлами: Вашим и тем что в репозитории. Убедитесь в том, что только новый код, который вы добавили это совокупность различий.
svn commit -m'Message' 
Message – это сообщение, которое пояснит какие правки вы вносили.
Чтобы производить действия над несколькими файлами, отделите их пробелами:
svn diff   
svn update   
svn diff   
svn commit - m "message"   

Добавляем новый файл в репозиторий

Как добавить новый файл в svn репозиторий
svn add 
svn commit -m "This new file will do something useful" 
Вы можете добавить несколько файлов
svn add   
svn commit -m "These new files work together to add some extra functionality"   

Удаляем файлы из репозитория

Чтобы удалить файл из репозитория, если вы не находитесь в рабочей копии
svn remove -m "I deleted this file for a reason" http://svn.greenstone.org/....../thefile.ext
Алиасы для svn remove : svn delete , svn rm. Вы не можете удалить несколько файлов из репозитория за 1 раз в одну строку

Полезные команды svn

svn info
svn switch
svn status
Если вы делаете svn status в директории, он рекурсивно выдаст список всех Модифицированных (M), Удаленных (D) и добавленных (A) файлов. Так же он покажет и список конфликтных файлов (C) и тех, о которых svn не имеет понятия (?). Чтобы увидеть изменения в каждом отдельном файле наберите
svn diff 
svn help
svn help [item]
svn help status
svn help commit

Конфликты svn и пути их решения

  • Когда вы делаете «svn status» в директории, в которой есть файлы помеченные C, это значит, что файлы конфликтуют с версиями в репозитории
  • svn update тоже может показать, что файлы конфликтуют. Если вы произвели svn up и один или несколько файлов имеют статус С – у Вас конфликт. Это значит, что пока вы работали над определенными строками(меняли их), кто-то уже успел внести изменения в эти же строки и сохранить их в репозитории. svn update не смог объединить код тк строки не совпали: строки конфликтуют.
Если Вы столкнулись с конфликтом и откроете конфликтующий файл в тестовом редакторе, то вы увидите, что конфликтующие линии помечены «=====» и «>>>>» Обе группы изменений, которые сделали Вы и те, что были внесены в репозитории будут встроены в файл со специальными маркерами. Если Вы сделали svn update с файлами, которые оказались конфликтующими ,то svn создаст несколько дополнительных файлов: conflict-filename.mine и confolict-filename. Первый -это Ваша локальная версия, содержащая все изменения, которые Вы внесли. Второй – Файл из репозитория.

Чтобы разрешить конфликт в файле, помеченном C

  1. Откройте конфликтный файл в редакторе
  2. Ищите вхождения «>>>>» или «====». Каждое такое вхождение указывает на конфликтную секцию, которую нужно решить.
  3. Разберитесь что делать с различающимися частями – какую оставить, какую убрать или как совместить их.
  4. Как только закончите редактирование, нужно поставить статус разрешенного конфликта!
svn resolved 
Если попробуете ещё раз набрать svn update, конфликта больше быть не должно.
 источник

Комментариев нет:

Отправить комментарий