Робота з файлами – ЧАСТИНА 7

Cx vu також потрібна для розблокування файлу, коли ви блокували його, а потім вирішили не змінювати

Щоб скасувати вже зафіксоване зміна, використовуйте Cx vc (vc-cancelversion) Ця команда скидає всі записи про останню фіксованою версії Cx vc також пропонує повернути ваш робочий файл і буфер до попередньої версії (до тієї, що передувала удаляемой)

Якщо ви відповідаєте no, VC зберігає ваші зміни в буфері і блокує файл Така можливість корисна, коли ви зафіксували зміна, а потім виявили в ньому тривіальну помилку ви можете скасувати фіксування, виправити помилку і знову зафіксувати файл

Коли Cx vc не вертає буфер, вона замість цього згортає всі заголовки версій (див Розділ 14783 [Заголовки версії], с 128) Це робиться з тієї причини, що буфер більше не відповідає ніякої існуючої версії Якщо ви знову зафіксуєте його, заголовки будуть розкриті правильно щодо нового номера версії

Однак, автоматично згорнути заголовок RCS $ Log $ неможливо Якщо ви пишете цей заголовок, ви повинні згорнути його вручну – видаливши входження для версії, яку ви скасували

Будьте обережні при виклику Cx vc, так як при цьому легко втратити багато роботи Щоб допомогти вам не допустити помилки, ця команда завжди вимагає підтвердження з yes Зверніть увагу також на те, що ця команда вимкнена під CVS, оскільки там відміна версій дуже небезпечна і не рекомендується

14754  Dired  під VC

Коли ви працюєте над великою програмою, часто буває корисно дізнатися, які файли були змінені в межах цілого дерева каталогів, або переглянути статус всіх файлів з керуванням версіями одночасно і провести якісь операції над версіями для набору файлів Ви можете використовувати команду Cx vd (vc-directory), щоб створити роздруківку каталогу, який включає тільки файли, що мають відношення до системи управління версіями

Cx vd створює буфер, який використовує режим VC Dired Він виглядає як звичайний буфер Dired (див Глава 28 [Dired], с 291) однак, як правило в ньому показані тільки стоять згадки файли (блоковані або неоновлення) Це називається стиснутим показом Якщо ви встановите змінну vc-dired-terse-display рівний nil, то VC Dired показує всі стосуються справи файли – ті, що знаходяться під контролем системи управління версіями, плюс всі підкаталоги (повний показ) Команда vt в буфері VC Dired перемикає між стислим і повним показом (див Розділ 14755 [Команди VC Dired], с 123)

За замовчуванням VC Dired виробляє рекурсівую роздруківку заслуговують згадки або релевантних файлів в заданому каталозі і нижче Ви можете змінити це, встановлюючи змінну vc-dired-recurse рівний nil тоді VC Dired показує тільки файли поточного каталогу

Рядок для окремого файлу показує стан версії на місці числа жорстких посилань, власника, групу і розмір файлу Якщо файл не змінений, синхронізований з майстер-файлом, статус версії порожній Інакше він складається з тексту в круглих дужках Під RCS і SCCS показується імя користувача, що блокував цей файл під CVS використовується скорочена версія виведення cvs status. Ось приклад з використанням RCS:

/home/jim/project:

-rw-r-r(jim)        Apr   2 23:39  file1

-r-r-r             Apr   5 20:21  file2

Файли file1 і file2 знаходяться під управлеіем RCS, file1 блокував користувач

jim, а file2 неблокірованние

Ось приклад з використанням CVS:

/home/joe/develop:

-rw-r-r(modified) Aug  2   1997 file1c

-rw-r-r               Apr   4 20:09  file2c

-rw-r-r(merge)       Sep 13   1996 file3c

Тут file1c змінений по відношенню до сховища, а file2c не змінений File3c змінений, але в репозиторії були також зафіксовані інші зміни – вам потрібно обєднати їх в робочому файлі перед фіксуванням

Коли VC Dired показує підкаталоги (в режимі повного показу), він опускає деякі з них, які ніколи не можуть містити файлів під контролем системи управління версіями За умовчанням це включає каталоги, створювані цими системами, такі як RCS і CVS; ви можете налаштовувати це, встановлюючи змінну vcdirectory-exclusion-list

Ви можете підібрати відповідний формат VC Dired, набравши Cu Cx vd – як у звичайні-

ном Dired, що дозволяє вам вказувати додаткові ключі для команди ls

14755  Команди VC Dired

Всі звичайні команди Dired працюють як завжди і в режимі VC Dired, за винятком v, яка перевизначена як префікс управління версіями Ви можете викликати команди VC, такі як vc-diff і vc-print-log, набираючи v = або vl і так далі Більшість цих команд застосовуються до імені файлу на поточному рядку

Команда vv (vc-next-action) обробляє всі помічені файли, так що ви можете заблокувати або зафіксувати кілька файлів одночасно Якщо вона працює більш ніж з одним файлом, то обробляє кожен файл у відповідності з його статусом таким чином, вона може блокувати один файл, але зафіксувати інший Можливо, це збентежить вас але ви вільні уникнути плутанини, позначаючи набір файлів з одним і тим же статусом

Якщо який-небудь файл вимагає фіксування, vv зчитує єдину журнальну запис і використовує її для всіх фіксованих файлів Це зручно для одночасного реєстрування або фіксування декількох файлів як частин одного зміни

Ви можете в будь-який час перемикатися між стисненим показом (тільки блоковані або неоновлення файли) і повним показом, набираючи vt vc-dired-toggle-tersemode Є також особлива команда * l (vc-dired-mark-locked), яка позначає всі заблоковані в даний момент файли (або, для CVS, все неоновлення) Таким чином, набір * ltk – це інший спосіб видалити з буфера всі файли, крім тих, що зараз заблоковані

1476  Безліч гілок файлу

Одне із застосувань управління версіями – супровід кількох поточних версій файлу Наприклад, у вас могло б бути кілька різних версій програми, в якій ви поступово додавали різні незавершені нові можливості Кожна незалежна лінія розробки називається гілкою VC дозволяє вам створювати гілки, перемикатися між різними гілками і вливати зміни з однієї гілки в іншу Будь ласка, зауважте однак, що такі гілки на даний момент підтримуються тільки для RCS

Головна лінія розвитку файлу зазвичай називається стволом Версії стовбура звичайно нумеруються як 11, 12, 13, etc На будь-якій з цих версій ви можете почати незалежну гілку Галузь, що починається на версії 12 мала б номер 1211, а наступні версії цієї гілки мали б номера 1212, 1213, 1214 і так далі Якщо є друга гілка, також починається на версії 12, вона складалася б з версій 1221, 1222, 1223, etc

Якщо ви опускаєте останній компонент в номері версії, це називається номером гілки Він посилається на саму верхню існуючу версію цієї гілки – її головний версію Гілки в прикладі вище мають номери 121 і 122

14761  Перемикання між гілками

Щоб переключитися між гілками, введіть Cu Cx Cq і вкажіть номер версії, який ви хочете вибрати Тоді до цієї версії робиться звернення до неблокірованние (захищеному від запису) режимі, так що ви можете переглянути її перед блокуванням Перемикання гілок таким способом допускається тільки тоді, коли файл блокований

Ви можете опустити номер другорядної версії, задаючи таким чином тільки номер гілки це переносить вас до головного версії обраної гілки Якщо ви наберете просто hRETi, Emacs переходить до самої верхньої версії стовбура

Після перемикання на будь-яку гілку (включаючи головну), ви залишаєтеся в ній з точки зору всіх наступних команд VC, поки явно не виберете якусь іншу гілку

14762  Створення нових гілок

Щоб створити нову гілку з головної версії (останньої у своїй гілки), спочатку виберіть цю версію, якщо необхідно, заблокуйте її командою Cx Cq і робіть потрібні вам зміни Потім, коли ви фіксуєте зміни, використовуйте Cu Cx Cq Це дозволить вам задати номер для нової версії Ви повинні задати відповідний номер для гілки, що відходить від поточної версії Наприклад, якщо поточна версія – 25, то номер гілки повинен бути 251, 252 і так далі залежно від номерів існуючих гілок в цій точці

Щоб створити нову гілку від більш старої версії (тієї, що вже не є головним в гілки), спочатку виберіть цю версію (див Розділ 14761 [Перемикання гілок], с 124), потім заблокуйте її за допомогою C-x C-q Коли ви блокуєте стару версію, вас попросять підтвердити, що ви дійсно мали на увазі створення нової гілки, – якщо ви відповісте ні, вам нададуть можливість блокувати замість цього останню версію

Потім вносите ваші зміни і знову наберіть Cx Cq, щоб зафіксувати нову версію Це автоматично створить нову гілку від обраної версії Вам не потрібно спеціально запитувати створення нової гілки, оскільки це єдиний спосіб додати нову версію в точці, яка вже не знаходиться в голові гілки

Після того як гілка створена, ви залишаєтеся в ній Це означає, що подальші фіксування створюють нові версії в цієї гілки Щоб покинути гілку, ви повинні явно вибрати іншу версію за допомогою Cu C-x C-q Щоб перенести зміни з однієї гілки в іншу, використовуйте команду обєднання, описану в наступному розділі

14763  Обєднання гілок

Коли ви закінчили зміни в конкретної гілки, вам часто буде потрібно внести їх в головну лінію розробки файлу (ствол) Це нетривіальна процедура, тому що в стовбурі теж могло йти розвиток, тому ви повинні обєднати зміни з файлом, який вже був змінений інакше VC дозволяє вам зробити це (та інші речі) за допомогою команди vc-merge

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*