svn опции за плащане. SVN е централизирана система за контрол на версиите. Отдалечен достъп чрез SSH протокол

Subversion (SVN - система за едновременни версии) е централизирана система за контрол на версиите. Проектиран като заместител на CVS, има същата функционалност, но е лишен от много от недостатъците си. Вижте също: SVN книга .

Настройка на SVN сървър

SVN хранилище, съвсем просто, в този пример, директория, /начало/svn/, трябва да съществува: # svnadmin create --fs-type fsfs /home/svn/project1 Можете да се свържете към хранилището по следните начини:

  • файл://- Директен достъп чрез използване на файловата система SVNклиент. Привилегиите трябва да бъдат правилно конфигурирани в локалната файлова система.
  • svn://или svn+ssh://- Отдалечен достъп до SVNсървър (също според протокола SSH). Изискват се разрешения в локалната файлова система, портът по подразбиране е: 2690/tcp.
  • http://Отдалечен достъп чрез webdavизползвайки апаш. Този метод не изисква локални потребители.
Импортиране и проверка на съществуващ проект през локалната файлова система. Не е необходимо да влизате в работната директория, можете просто да посочите пълния път: # svn import /project1/ file:///home/svn/project1/trunk -m "Първоначално импортиране" # svn checkout file:/// home/svn/project1

Отдалечен достъп чрез SSH протокол

Отдалечен достъп по протокол SSHне изисква никакви допълнителни настройки, просто сменете файл://на svn+ssh/име на хост. Например: # svn checkout svn+ssh://hostname/home/svn/project1 Както при локалния достъп, потребителят трябва да има акаунт за достъп до протокола SSHкъм сървъра и правилно конфигурирани разрешения за четене/запис. Този метод може да бъде подходящ за малки групи потребители, потребителите в групата са собствениците на хранилището, например: # groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /начална/svn

Отдалечен достъп чрез HTTP (apache)

Отдалечен достъп чрез http(HTTPS), подходящо решение за отдалечени потребителски групи. Този метод използва авторизация на уеб сървър Apache(не локални акаунти). Ето типична конфигурация: LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # Само за контрол на достъпа DAV svn # URL "/svn/foo" ще бъде картографиран към пътя на хранилището /home/svn/foo SVNParentPath /home/svn AuthType Basic AuthName "Subversion repository" AuthzSVNAccessFile /etc/apache2/svn.acl AuthUserFile /etc/apache2/svn - passwd Изискване на валиден потребителски сървър Apacheтрябва да има пълен достъп до хранилището: # chown -R www:www /home/svn Създайте потребител с htpasswd: # htpasswd -c /etc/svn-passwd потребител1 #-° ССъздаване на файл

svn.acl пример за контрол на достъпа

# Достъп за четене по подразбиране. "*=" няма да има достъп по подразбиране[/] * = r project1-developers = joe, jack, jane # Дайте разрешения за писане на разработчиците@project1-developers=rw

Някои команди за управление на SVN хранилище

Вижте също Subversion Quick Reference Card. Tortoise SVN, хубав Windows интерфейс.

Импортиране

Можете да импортирате нов проект, съдържащ директории и файлове в хранилището, като използвате командата импортиране. Същата команда се използва и за добавяне на директория с нейното съдържание към съществуващ проект. # svn помогнете за импортиране # Помощ по команда # Добавете нова директория и нейното съдържание към src директорията на project1.# svn import /project1/newdir http://host.url/svn/project1/trunk/src -m "добавяне на newdir"

Типични SVN команди

# svn co http://host.url/svn/project1/trunk # Разгледайте най-новата версия # Тагове и разклонения се създават чрез копиране# svn mkdir http://host.url/svn/project1/tags/ # Създайте директория с етикети# svn copy -m "Етикет rc1 rel." http://host.url/svn/project1/trunk \ http://host.url/svn/project1/tags/1.0rc1 # svn статус [--verbose] # Проверете състоянието на файловете в работната директория# svn добави src/file.h src/file.cpp # Добавете два файла# svn commit -m "Добавен нов клас файл" # Изпратете промените чрез съобщение# svn ls http://host.url/svn/project1/tags/ # Списък на всички тагове# svn преместване foo.c bar.c # Преместване (преименуване) на файлове# svn delete some_old_file # Изтриване на файлове

Екстракт

Svn checkout [-depth ARG] [--ignore-externals] [-r rev] URL ПЪТ

Ако квадратчето е отметнато Пропуснете външния

Ако проверявате конкретна ревизия, посочете я след URL адреса с опцията -r.

Опресняване

svn информация work_copy_url svn update [-r rev] ПЪТ

Актуализирането на множество елементи в момента не е атомарна операция в Subversion. Следователно TortoiseSVN първо намира основната ревизия (HEAD) в хранилището и след това актуализира всички елементи към тази ревизия, за да избегне създаването на работно копие със смесени ревизии.

Ако само един елемент е избран за актуализиране или ако избраните елементи не са от едно и също хранилище, TortoiseSVN просто се актуализира до най-горната версия.

Опциите на командния ред не се използват тук. Актуализация до ревизиясъщо така изпълнява командата update, но предлага повече опции.

Актуализация до ревизия

svn info working_copy_url svn update [-r rev] [-depth ARG] [--ignore-externals] ПЪТ

Елементите от комбинираното поле за дълбочина се отнасят до аргумента -depth.

Ако квадратчето е отметнато Пропуснете външния, използвайте опцията --ignore-externals.

Поправете

В TortoiseSVN диалоговият прозорец за ангажиране използва няколко команди на Subversion. Първият етап е проверката на състоянието, която определя елементите на вашето работно копие, които потенциално могат да бъдат ангажирани. Можете да прегледате този списък, да сравните файловете с тяхната база и да изберете елементите, които искате да включите в ангажимента.

svn статус -v ПЪТ

Ако квадратчето е отметнато

Ако маркирате неверсирани файлове и папки, тези елементи ще бъдат добавени първо към вашето работно копие.

svn добави ПЪТ...

Когато щракнете върху OK, Subversion започва да изпълнява ангажимента. Ако сте оставили всички файлови флагове в тяхното състояние по подразбиране, TortoiseSVN използва едно рекурсивно ангажиране на работно копие. Ако сте демаркирали някои файлове, тогава трябва да се използва нерекурсивен комит (-N) и всеки път трябва да бъде указан индивидуално в командния ред за ангажимент.

Svn commit -m "LogMessage" [-depth ARG] [--no-unlock] ПЪТ...

LogMessage тук е съдържанието на полето за въвеждане на лог съобщение. Може да е празен.

Разлика

svn разл. ПЪТ

Ако използвате командата "Разлики" от главното контекстно меню, вие сравнявате променения файл с основната му версия. Изходът от ICS на горната команда също прави това и произвежда изход в комбинирания формат на разл. TortoiseSVN обаче не използва това. TortoiseSVN използва TortoiseMerge (или diff програма по ваш избор) за графично показване на разликите между текстовите файлове, така че няма пряк еквивалент на ICS.

Можете също така да сравните всеки два файла с TortoiseSVN, независимо дали са под контрол на версиите или не. TortoiseSVN просто захранва тези два файла в избраната програма за разлика и ѝ позволява да определи къде са разликите.

Списание

svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH или svn log -v -r M:N [--stop-on-copy] PATH

По подразбиране TortoiseSVN се опитва да извлече 100 лог съобщения с помощта на метода --limit. Ако инсталациите налагат използването на старите API, тогава втората форма се използва за получаване на съобщения за журнал за 100 ревизии от хранилището.

Ако квадратчето е отметнато Спрете при копиране/преименуване, използвайте опцията --stop-on-copy.

Проверка за промени

svn status -v PATH или svn status -u -v PATH

Първоначалната проверка на състоянието разглежда само вашето работно копие. Ако щракнете върху Проверете съхранението, след това хранилището също се проверява, за да се види какви файлове ще бъдат променени от надстройката и това изисква опцията -u.

Ако квадратчето е отметнато Показване на неверсирани файлове, TortoiseSVN също ще покаже неверсирани файлове и папки в йерархията на работното копие, предвид правилата за игнориране. Това конкретно свойство няма пряк еквивалент в Subversion, тъй като командата svn status не влиза в папки без версии.

Ревизионна графика

Ревизионната графика е функция, предоставена само от TortoiseSVN. В клиента на командния ред няма аналог.

Какво прави TortoiseSVN:

svn информация work_copy_url svn log -v URL

където е url коренсъхранение и след това анализира върнатите данни.

Storage Explorer

svn информация work_copy_url svn списък [-r rev] -v URL

Можете да използвате svn информация, за да определите корена на хранилището: това е най-горното ниво, показано в браузъра на хранилището. Не можете да преминете над това ниво. Освен това тази команда връща цялата информация за заключване, показана в браузъра на хранилището.

Извикването на svn list ще изведе съдържанието на папката за посочения URL адрес и ревизия.

Редактиране на конфликти

Тази команда няма еквивалент в X. Той извиква TortoiseMerge или външен трипосочен инструмент за разлика/сливане, за да разгледа файловете, включени в конфликта, и да избере редовете, които трябва да се използват.

Уредено

svn разреши PATH

Преименуване

Svn преименува CURRENT_PATH NEW_PATH

Изтрий

svn изтриване на PATH

Премахване на промените

svn статус -v ПЪТ

Първият етап е проверка на състоянието, която идентифицира елементи във вашето работно копие, които потенциално биха могли да бъдат изтеглени. Можете да видите списъка, да сравните файловете с базата и да изберете елементите, в които искате да премахнете промените.

Когато щракнете върху OK, Subversion ще премахне промените. Ако сте оставили всички флагове за избор на файл в тяхното състояние по подразбиране, TortoiseSVN използва едно рекурсивно (-R) връщане към работното копие. Ако демаркирате някои файлове, всеки път трябва да бъде посочен поотделно в командния ред, за да премахнете промените.

Svn revert [-R] ПЪТ...

почистване

svn почистване PATH

блок

svn статус -v ПЪТ

Първият етап е проверка на състоянието, която идентифицира файлове във вашето работно копие, които потенциално биха могли да бъдат заключени. Можете да изберете елементите, които искате да блокирате.

Svn lock -m "LockMessage" [--force] ПЪТ...

LockMessage е съдържанието на полето lockmessage. Може да е празен.

Ако квадратчето е отметнато Прихващащи ключалки, използвайте опцията --force.

Отключи

svn отключи PATH

Клон/етикет

Svn copy -m "LogMessage" URL URL или svn copy -m "LogMessage" или svn copy -m "LogMessage" URL ПЪТ

Диалоговият прозорец Клон/Етикет извършва копиране в хранилището. Има 3 бутона за превключване:

  • Главна ревизия в хранилището (HEAD)
  • Посочената версия в хранилището
  • работно копие

които съответстват на трите опции на командния ред по-горе.

Тази поредица от статии е посветена на въведението в употребата SVN, от гледна точка на обикновен потребител. Статията е написана, за да помогне на моите колеги бързо да научат и използват SVN. Така че нека започнем с основите.

Въведение

подривна дейност ( SVN) е безплатна система за контрол на версиите с отворен код. SVNви позволява да управлявате файлове и директории, както и промени, направени в тях с течение на времето. SVNпредоставя следните опции:

  1. Контрол на промяната на директория. SVNизползва "виртуална" файлова система с възможности за управление на версии, която е в състояние да проследява промените във времето на цели структури на директории
  2. Реална история на версиите. SVNдава възможност за добавяне, изтриване, копиране и преименуване на файлове и директории. В същото време всеки новодобавен файл започва живота си от нулата, запазвайки собствената си история на промените.
  3. Атомен ангажимент. Всеки набор от промени или отива в хранилището изцяло, или изобщо не отива там. Тези. ако е възникнала грешка при обработката на файла при извършване на промени в проекта, тогава промените в целия проект няма да бъдат ангажирани
  4. версионни метаданни. Всеки файл и директория има свой собствен набор от свойства, представени като име и стойност. Можете да създадете и запазите всяка двойка имена на свойства и стойности, от които се нуждаете. Свойствата на файла са точно толкова версионни, колкото и тяхното съдържание.
  5. Един от начините за работа с данни. SVNоткрива разликите между файловете с помощта на специален двоичен алгоритъм, който работи еднакво както с текстови, така и с двоични файлове. Файловете се записват в хранилището в компресиран вид, независимо от техния тип, а разликите между отделните версии могат да се прехвърлят по мрежата и в двете посоки
  6. Ефективни разклонения и тагове. SVNсъздава разклонения и тагове чрез просто копиране на проекта, използвайки механизъм, подобен на твърдите връзки във файловите системи. Благодарение на това операциите по създаване на разклонения и етикети отнемат малко време.


Списък на основните термини

  1. хранилище(хранилище) е централизирано хранилище на изходни кодове, работни материали и документация. Всеки брой клиенти се свързват към хранилището и четат или записват тези файлове
  2. работно копие/работно копие(WC) е обикновено дърво на директории на компютър, съдържащо набор от файлове за работа по проект. Промените в работното копие не са достъпни за други потребители на хранилището, докато не бъдат ангажирани.
  3. Багажник— основната посока на развитие
  4. клон(„Клон“) – посока на развитие, която съществува независимо от друга посока, но има обща история с нея. Един клон винаги започва като копие на нещо и се движи от тази точка, създавайки своя собствена история.
  5. Етикет(""Етикет"") - версията на файловете на проекта към определен момент от време, изрично избрана чрез създаване на отделна папка.
  6. ревизия— номер на ревизия на хранилището, в рамките на хранилището номерът на ревизията е уникална стойност
  7. Разгледайте- команда, която извършва първоначалното изтегляне на проект от хранилище в WC.
  8. Ангажирайте се- команда, която извършва промени във файловете на проекта в WC към хранилището.
  9. актуализация- команда, която актуализира файловете на проекта в WC от хранилището
  10. Връщане- команда, която отменя всички промени във файловете на проекта в WC въз основа на номера на ревизията на хранилището.
  11. Обединяване- команда, която обединява файлове от различни клонове на проекта и поставя резултата от обединяването в WC.
  12. Конфликт- ситуация, която възниква при извършване на промени, когато едни и същи файлове са променени от няколко разработчици.
  13. Разрешете- набор от правила за разрешаване на възникващи конфликти.
  14. Импортиране- команда за бързо копиране на дърво от файлове в хранилището.
  15. Експортиране- командата за експортиране на проект се различава от проверката по това, че не създава служебна информация в папките на проекта.
  16. превключвател- команда, която превключва WC към друг развойен клон.
  17. Създавайте, Добавете, Изтрий, копие, ход, Преименуване- команди за управление на файлове и папки в хранилище или WC.

Софтуер

Работа с хранилището SVNпрегледани въз основа на софтуер TortoiseSVN

Въведение

Помощната функция на Subversion ( svn помощ) предоставя обобщение на наличните команди. По-подробна информация можете да намерите в онлайн книгата на Subversion на http://svnbook.red-bean.com/en/1.2/index.html. Глава 3 е особено полезна.

Следното е основен набор от команди, които всички редактори ще използват често. Някои команди имат две форми, дълга и кратка. И двете са посочени в описанието.

svn разл. Това е полезно за две различни цели. Първо, тези, които нямат достъп за запис до BLFS SVN сървъра, могат да го използват, за да генерират корекции, които да изпращат до пощенския списък на BLFS-Dev. За да направите това, просто редактирайте файловете в локалната пясъчна кутия, след което стартирайте svn diff > FILE.patch от корена на вашата BLFS директория. След това можете да прикачите този файл към съобщение в пощенския списък на BLFS-Dev, където някой с права за редактиране може да го вземе и приложи към книгата. Втората употреба е да разберете какво се е променило между две ревизии, като използвате: svn diff -r ревизия1:ревизия2 ИМЕ НА ФАЙЛ . Например: svn diff -r 168:169 index.xml ще изведе разлика, показваща промените между ревизии 168 и 169 на index.xml.

add - Добавя файлове, директории и символни връзки, като ги маркира за по-късно включване в хранилището. Веднъж маркирани, те се изтеглят и добавят към хранилището при първото извършване на промените. Ако сте добавили нещо, но след това сте променили решението си, преди да го залепите, тогава можете да премахнете знака за добавяне с подкомандата svn revert.
svn добави ПЪТ...
$ svn добавете testdir

blame (praise, annotate, ann) – Показва автора и редакцията ред по ред за посочените файлове или URL адреси. Всеки ред от текста започва с името на автора (потребителското име) и номера на редакцията. Така се посочва кой и кога е променил този ред последния път.
svn обвинява TARGET[@REV]...
$ svn blame http://svn.red-bean.com/repos/test/readme.txt

cat - Показва съдържанието на посочените файлове или URL адреси. Използвайте svn list за изброяване на съдържанието на директории.
svn cat TARGET[@REV]...
$ svn cat http://svn.red-bean.com/repos/test/readme.txt

checkout (co) - Създава работно копие на базата на данните в хранилището. Ако PATH е пропуснат, основното име на URL ще се използва като име за директорията на работното копие. Ако са дадени множество URL адреси, съответните копия ще бъдат направени в поддиректорията PATH, всяко в собствена директория, формирана от основното име на URL адреса.
svn плащане URL [@REV]...
svn проверка svn://svn.ru2web.ru/ru2web/branches/www-01/ /usr/home/vasia/ru2web.ru/app/

почистване - Почиства работното копие рекурсивно, като премахва заключванията, останали от чакащи операции. Веднага щом срещнете грешка „работното копие е заключено“, изпълнете тази подкоманда, за да премахнете старите заключвания и да върнете работното си копие обратно в здраво състояние.

Ако по някаква причина операцията на командата svn update е неуспешна поради проблеми с работещата външна програма за разлика (например нещо е натиснато в нея или е имало мрежова грешка), трябва да посочите опцията –diff3-cmd, за да разрешите чистото копие за завършване на всички съединявания с помощта на външна програма за разл. Можете също така да посочите конфигурационна директория с опцията --config-dir, но се опитайте да не прекалявате с тези опции.

commit (ci) - Изпраща промените, които сте направили в работното копие, в хранилището, за да бъдат запазени там. Ако не използвате опцията --file или --message, svn ще стартира външен редактор, за да състави коментара. Прочетете описанието на опцията editor-cmd в "Конфигурация".
svn commit ще изпрати всички рекурсивно намерени маркировки за заключване в хранилището и ще отключи ресурсите, съответстващи на тези маркировки, освен ако не е зададена опцията --no-unlock. „Областта на търсене“ се определя чрез указване на PATH.
svn ангажирам

копие (cp) - Копира файл в работното копие или трезора. SRC и DST могат да бъдат или пътища в работното копие, или URL адреси в хранилището.
svn копие SRC DST

изтриване (del, remove, rm) - Премахване на елемент от работното копие или хранилище.
svn изтриване на ПЪТ...
svn изтриване на url...

diff (di) - Показва разликите между работното копие и хранилището.
$ svn diff http://svn.collab.net/repos/svn/trunk/ [имейл защитен] http://svn.collab.net/repos/svn/trunk/ [имейл защитен]

експортиране - Експортирайте чисто дърво на директории (без .svn папки).

помощ (?, з) - Помощ.

импортиране - Включете неверсиран файл или дърво в хранилището.
URL за импортиране на svn

информация - Показване на информация за локалния или отдалечения елемент.
svninfo

list (ls) - Списък на директориите в хранилището.
svnlist ...]
$ svn списък http://svn.red-bean.com/repos/test/support

заключване - Заключете работното копие в хранилището, така че никой друг потребител да не може да прави промени в дадения път.
svn заключване TARGET...
$ svn заключване дърво.jpg къща.jpg

log - Показване на съобщения в журнала.
svnlog
svnlog URL
$ svnlog

сливане - Прилагане на разлики между два източника.
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch

mkdir - Създаване на директория в хранилище с версии.
$ svn mkdir нов каталог

move (mv, rename, ren) - Преместване на файл или директория.
svn преместете SRC DST

propdel (pdel, pd) - Премахване на свойства от файлове, директории или ревизии.
svn propdel PROPNAME
svn propdel PROPNAME --revprop -r REV

propedit (pedit, pe)
пропгет (pget, pg)
proplist (plist,pl)
пропсет (pset, ps)

разрешено - Премахнете "конфликтите" в работното копие на файлове или директории.
svn разрешен ПЪТ...

revert - Връща всички локални промени.
$ svn върне myprj.phtml

status (stat, st) - Статусът на работното копие на файловете или директориите.
$ svn статус wc

switch (sw) - Актуализирайте работното копие до различен URL.

unlock - Отключете работното копие.

update (up) - Актуализирайте вашето работно копие.