Използване на SVN
Страницата е създадена на:23 декември 2019 и редактирана на:21 март 2021
Съдържание
Изчерпателен източник на информация за SVN, както за начинаещи, така и за напреднали е книгата: Version Control with Subversion (http://svnbook.red-bean.com). От посочената страница може да изтеглите книгата в различни формати или да я четете на самия сайт. Макар, че тя се отнася за официалния svn клиент, който се управлява с команди, в нея подробно са изяснени всички срещащи се в практиката ситуации и са предложени начини за справяне с тях.
При първи опит да импортирате с Qt Creator кода на Qt проект, публикуван във SVN хранилище, ще стигнете до страница за конфигуриране на Qt Creator за работа с този тип хранилища. За да извършите успешно конфигуриране, вижте следващите бележки.
Инсталиране на софтуер за SVN
В Windows
Най-удобната програма SVN клиент за Windows е TortoiseSVN, която се изтегля от страницата:
http://tortoisesvn.net/downloads
Изтеглете съответния инсталационен пакет за 32 или 64 битов Windows и щракнете двойно върху изтегления файл. Внимавайте, когато инсталаторът покаже прозорец, в който да изберете какво да се инсталира, да включите инсталирането и на команден SVN клиент (Command line client tools), който е необходим на Qt Creator за да можете да работите със SVN хранилища директно от Qt Creator.
За да конфигурирате Qt Creator за работа със SVN хранилища, щракнете в менюто: Tools -> Options и в прозореца за настройки щракнете върху Version Control – Subversion. Щракнете бутона Browse срещу полето Subversion Command и посочете изпълнимия файл на командния SVN клиент. За TortoiseSVN, той е:
C:\Program Files\TortoiseSVN\bin\svn.exe
В контекстното меню на Windows Explorer, което се показва при щракване на десния бутон на мишката в прозореца с файлове и директории, ще видите нови команди, за работа с TortoiseSVN.
В Mac OS X
Отворете Terminal и с команда svn --version
проверете дали има инсталирана версия на команден SVN клиент. Ако отговорът бъде: command not found: svn
, трябва да инсталирате, например, с: brew install svn
.
В Linux
Предполагам, че във всички дистрибуции на Linux има команден svn клиент и едва ли ще е необходимо специално да инсталирате такъв.
Получаване на помощ
За да отворите help файла на TortoiseSVN щракнете десен бутон на мишката и изберете от менюто TortoiseSVN – Help. В Help файла ще намерите информация за всички действия при работа със SVN.
Ако използвате команден svn клиент подайте команда:
svn help
ще видите списък на всички svn команди. За да видите обяснение относно конкретна команда, подайте команда:
svn help command
където вместо command трябва да напишете името на командата, която искате да проучите.
Изтегляне на файлове от хранилище
С Qt Creator
Ако ще работите върху проект, до хранилището на който имате право за запис, е по-добре да го изтеглите с друг SVN клиент и после в Qt Creator да отворите неговия .pro файл, за да започнете работа върху него. Едва след като се убедите, че и качването на файлове с друг SVN клиент става успешно, можете да започнете да извършвате и от Qt Creator обмена на файлове с хранилището.
Иначе, ако не целите да качите в хранилището на проекта, направени от Вас промени, за да изтеглите файловете на проекта с Qt Creator, изберете команда: File -> New File or Project..., изберете тип проект Import Project и тип на хранилището Subversion Checkout и щракнете бутон Choose.
В поле Repository напишете или поставете (Paste) адреса на хранилището, както сте го видели при преглеждане на хранилището онлайн. Например: svn://svn.code.sf.net/p/readthebible/code/trunk (адреса на проект Компютърна Библия).
В поле Path ще видите изписан пътя до директорията, в която ще се създаде нова поддиректория за файловете от проекта. Можете да щракнете бутона Choose и да изберете друга директория.
В поле Directory напишете име на директория, която ще се създаде в директория Path и в нея ще се изтегли кода на проекта.
Щракнете бутона Continue, за да започне изтеглянето на файловете.
С друг SVN клиент
Създайте на своя компютър директорията, в който смятате да съхранявате локалното копие на кода.
Ако сте на Windows с TortoiseSVN отворете с Windows Explorer папката, която сте предвидили за съхранение на локалното копие. Щракнете десния бутон на мишката и изберете командата SVN Checkout... В полето URL of repository напишете адреса на хранилището. (За хранилището на sourceforge.net за да можете и да качвате файлове, трябва да използвате svn+ssh: или https: протокол в адреса на хранилището.) В полето Checkout directory автоматично се изписва пътя до текущата директория и име на нова директория, най-вероятно: code, в която ще се запишат изтеглените от хранилището файлове. Може да промените автоматично предложеното име code на новата директория с друго, предпочитано от Вас. Щракнете бутон OK за да започне изтеглянето на файлове.
Ако сте на Mac OS X или Linux, подайте командата svn, както е показана на страницата за преглеждане на кода онлайн. (За хранилището на sourceforge.net за да можете и да качвате файлове, трябва да използвате svn+ssh: или https: протокол в адреса на хранилището.)
Ако ви интересува не целия проект, а само определена директория от него (например: trunk/bgoffice) след адреса на хранилището добавете пътя до интересуващата ви директория. (за посочения пример: svn://svn.code.sf.net/p/bgoffice/code/trunk/bgoffice
).
Изтеглените по този начин файлове ще се намират под наблюдение от системата за контрол на версиите SVN. Т.е. във всеки момент, щом решите можете да проверите дали тези файлове се различават от файловете в хранилището. Командата за проверка с TortoiseSVN е Check for modifications.
Качване на файлове в хранилище
Можете да качвате файлове, които сте изтеглили от хранилището и сте променили (commit), или директории и файлове от други места на компютъра, които не се намират под наблюдение от системата за контрол на версиите (import).
С Qt Creator
Ако сте изтеглили файлове на проект от SVN хранилище с Qt Creator. След като сте направили промени в тези файлове, за да ги качите в хранилището, изберете команда:
Tools -> Subversion -> Commit Project "ИмеНаПроекта".
В полето Description напишете кратко описание на промените.
Щракнете бутона Commite X/X File(s).
...
С друг SVN клиент
Ако сте стартирали свой собствен проект, в хранилището на който още няма файлове, може да качите файловете от своя компютър в хранилището с import. Първо пренесете в отделна директория, само директориите с файловете, които искате да се качат в хранилището.
Ако сте на Windows с TortoiseSVN, отворете с Windows Explorer приготвената директория, щракнете десният бутон на мишката между иконите в нея и изберете от контекстното меню: TortoiseSVN – Import... В полето URL to repository напишете адреса на хранилището, или го изберете от падащия списък, ако този адрес е вече използван. В полето Import message напишете съобщение относно файловете, които искате да качите – за какво се отнасят или др. подобно. Старайте се да пишете кратки, но съдържателни съобщения и не качвайте файлове без съобщения. Последното е лош маниер, който няма да се хареса на програмистите, които биха искали да ви партнират по проекта. За да се извърши качването, щракнете ОК бутона.
Ако използвате svn клиент, управляван с команди, подайте команда:
svn import path url -m "текст на съобщение"
в която path е името на директорията, която искате да се качи в хранилището, а url - адреса на хранилището. Ако искате да се качи текущата директория вместо path напишете точка . или пропуснете този параметър.
При изпълнение на Import ще бъдете запитани за потребителското име и паролата, които ви дават право да правите промени в хранилището.
След качване с Import файловете на вашия компютъра остават и не се се поставят под наблюдение от системата за контрол на версиите. За да имате локално копие на проекта, което се намира под наблюдение от системата за контрол на версиите, изтеглете файлове от хранилището, както беше описано.
Ако сте променяли файлове от локално копие и искате да качите промените в хранилището, трябва да изпълните svn командата commit.
В Windows с TortoisеSVN трябва да отворите директорията с локално копие, да щракнете десния бутон на мишката и да изберете SVN Commit... В диалога, който се показва трябва да попълните съобщение относно промените, които сте направили и да щракнете OK бутона.
Ако за първи път изпълнявате Commit ще бъдете запитани за потребителско име и парола.
С управляван с команди svn клиент, подайте команда:
svn commit -m "Текст на съобщение"
Обновяване на локално копие
Ако междувременно други програмисти са качили промени в хранилището, вие може да актуализирате своето работно копие със svn командата Update.
Ако и вие сте направили промени системата за контрол на версиите няма да унищожи вашите промени, ако те са по-нови от тези в хранилището.
На Windows с TortoiseSVN тази команда се изпълнява с щракване на десния бутон на мишката в директорията с локалното копие и избиране на SVN Update.
С управляван с команди клиент се подава команда:
svn update
Игнориране на файлове от системата за контрол на версиите
Във всяко локално копие се появяват файлове, които не е необходимо да се качват в хранилището. Например: Makefile, файлове с обектен код и др., които се генерират автоматично от програмите, с които обработваме изходния код. За да не се появяват излишни съобщения за промени в тези файлове те се добавят в списъци за игнориране.
Ако се използва команден svn клиент, за да се види дали за дадена директория има списък за игнориране се влиза в тази директория и се подава команда:
svn proplist
Ако отговорът на тази команда покаже списък за игнориране svn:ignore, значи такъв списък вече има и той трябва да се редактира. Ако не се покаже svn:ignore, трябва ва се създаде.
За създаване на файл със списък за игнориране и добяне в списъка, например, на файла Makefile се подава команда:
svn propset svn:ignore Makefile
Този пример се отнася за добавяне в списъка за игнониране за текущата директория, която е означена с една точка, за друга директория на мястото на точката, трябва да се сложи името на директорията.
Редактиране на файла със списъка за игнориране с помощтта на външен редактор (напримар, в Mac OS X, редактора TextEdit.app) се извършва с команда:
svn propedit svn:ignore trunk --editor-cmd /Applications/TextEdit.app/Contents/MacOS/TextEdit
Тук trunk е името на директорията, за която се отнася списъка; --editor-cmd е опция на svn командата propedit (редактиране на свойство), след която се посочва името на програмата редактор.
Списъкът за игнориране съдържа редове с имена на файлове, които трябва да се игнорират от системата за контрол на версиите. Тези имена могат да съдържат символи ? и *, които означават съответно "произволен символ" и "произволна група символи". Например: ред moc_* в списъка за игнориране, означава игнориране на всички файлове, чиито имена започват с moc_.
Разрешаване на конфликти
...
Предишна страница: CVS (Concurrent Versions System)
Следваща страница: Използване на Git за реализирани с Qt проекти