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

Якщо для файлу застосовується блокування (як у у випадку з SCCS і RCS в режимі за замовчуванням), Cx Cq може або блокувати файл, або зафіксувати його:

Якщо файл не заблокований, Cx Cq блокує його і робить доступним для запису,

щоб ви могли його змінювати

Якщо файл заблокований вами і містить зміни, Cx Cq фіксує ці зміни Для цього вона спочатку зчитує журнальну запис нової версії Див Розділ 14733 [Буфер журналу], с 119

Якщо файл заблокований вами, але не містить змін відтоді, як ви його блокували, Cx Cq знімає блокування і робить файл знову доступним тільки для читання

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

Ці правила застосовні також, коли ви використовуєте CVS в блокує режимі, за винятком того, що там немає такого поняття, як перехоплення блокування

14732  Основи управління версіями без блокування

Коли блокування немає – за умовчанням в CVS – робочі файли завжди доступні для запису вам не потрібно нічого робити перед тим, як почати редагування Індикатором статусу в рядку режиму служить -, якщо файл не змінено він заметяется на :, як тільки ви зберігаєте будь-які зміни в робочому файлі

Ось що робить Cx Cq при використанні CVS:

Якщо якийсь інший користувач зафіксував свої зміни у майстер-файлі, Emacs запитує вас, чи хочете ви влити ці зміни в ваш робочий файл (див Розділ 14763 [Обєднання], с 124) Ви зобовязані зробити це до того, як зможете зафіксувати свої власні зміни

Якщо у майстер-файлі немає змін, але ви модіфікаціровалі ваш робочий файл, Cx Cq фіксує ваші зміни Для цього вона спочатку зчитує журнальну запис для нової версії Див Розділ 14733 [Буфер журналу], с 119

Якщо файл не змінений, Cx Cq нічого не робить

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

Крім того, навіть у цьому режимі RCS блокування можливо, хоч і необовязково Cx Cq в незміненому файлі блокує цей файл, так само, як з RCS в звичайному (блокирующем) режимі

14733  Буфер журнальної записи

Коли ви фіксуєте зміни, Cx Cq спочатку зчитує журнальну запис Вона піднімає буфер з імям * VC-Log *, в якому ви вводите журнальну запис Коли ви завершили, натисніть Cc Cc в буфері * VC-Log *. Тільки тоді відбувається дійсне фіксування

Щоб перервати фіксування, просто не набирайте Cc Cc в цьому буфері Ви можете перемикати буфери і робити інше редагування Поки ви не намагаєтеся зафіксувати інший файл, запис, яку ви редагували, залишається в буфері * VC-Log *, і ви можете в будь-який час повернутися в цей буфер і завершити фіксування

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

Кожен раз, коли ви фіксуєте файл, буфер журнальної запису поміщається в режим VC Log, що тягне запуск двох пасток: text-mode-hook і vc-log-mode-hook Див Розділ 3123 [Пастки], с 349

1474  Перегляд і порівняння старих версій

Одна із зручних можливостей систем управління версіями – можливість перегляду будь-якої версії файлу або порівняння двох версій

C-x v ~ версія hRETi

Показує задану версію файлу, до якого ви звернулися, в окремому буфері

Cx v = Порівнює поточний зміст буфера з останньою зафіксованої версією цього файлу

C-u C-x v = файл hRETстаравір hRETновавір hRETi

Порівнює дві задані версії файлу

Cx vg Виводить результат команди CVS annotate з використанням різних кольорів

Щоб переглянути стару версію in toto, зверніться до файлу і наберіть Cx v ~ версія hRETi  (Vc-version-other-window) Це помістить текст зазначеної версії у файл з імям імяфайлу ~ версія ~ і звернеться до нього в новому буфері в окремому вікні (В RCS, ви також можете вибрати старий буфер і створити з нього нову гілку Див Розділ 1476 [Гілки], с 123)

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

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

Ви можете задати зафіксовану версію числом порожній введення позначає поточний вміст робочого файлу (воно може відрізнятися від усіх зафіксованих версій) Ви також можете задати замість одного або обох номерів версій імя знімка (див Розділ 1477 [Знімки], с 126)

Ця команда працює шляхом запуску утиліти diff, передаючи їй аргументи із змінної diff-switches Вона показує висновок в особливому буфері в іншому вікні На відміну від команди Mx diff, Cx v = не намагається визначити позиції відмінностей в старій і новій версіях Так робиться, тому що як правило одна чи обидві версії не існують в момент порівняння у вигляді файлів вони існують тільки в записах у майстер-файлі Див Розділ 149 [Порівняння файлів], с 132, для отримання більшої інформації про Mx diff

Для файлів, керованих CVS, ви можете подивитися результат команди CVS annotate з використанням різних кольорів для поліпшення зовнішнього вигляду Використовуйте для цього команду Mx vc-annotate Червоним позначається нове, синім – старе, а проміжні кольори позначають проміжні версії Префіксний аргумент n задає коефіцієнт розтягування по часовій шкалі він говорить, що кожен колір покриває в n разів більший період часу

1475  Другорядні команди VC

Цей розділ пояснює другорядні команди VC ті, що ви могли б використовувати раз на день

14751  Реєстрування файлу для управління версіями

Ви можете помістити будь-який файл під контроль системи управління версіями, просто повернувшись до нього і набравши потім Cx vi (vc-register)

Cx vi Реєструє файл в системі управління версіями

Щоб зареєструвати файл, Emacs повинен вибрати, яку систему управління версіями для нього використовувати Ви можете вказати свій вибір явно, встановлюючи vcdefault-back-end в значення RCS, CVS або SCCS Інакше, якщо є підкаталог з імям

‘RCS, SCCS або CVS, Emacs використовує відповідну систему управління версіями У відсутність будь-яких вказівок, за умовчанням вибирається RCS, якщо в системі встановлена ​​RCS, інакше SCCS

Якщо застосовується блокування, Cx vi залишає файл неблокірованние і забороняє до запису Наберіть Cx Cq, якщо ви хочете почати в ньому редагування Після реєстрування з використанням CVS ви повинні зафіксувати зміни, набравши Cx Cq

Первісною версії знову зареєстрованого файлу присвоюється номер 11, за замовчуванням Ви можете задати інше значення за замовчуванням, встановлюючи змінну vc-default-init-version, або ви можете дати Cx vi числовий аргумент тоді вона зчитує номер версії для цього конкретного файлу в мінібуфер

Якщо vc-initial-comment відмінна від nil, Cx vi зчитує початковий коментар, що описує призначення даного вихідного файлу Початковий коментар зчитується так само, як журнальні записи (див Розділ 14733 [Буфер журналу], с 119)

14752  Команди VC для зясування статусу файлу

Cx vl Показує стан файлу в системі управління версіями і історію вимірюв-

нений

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

14753  Скасування дій над версіями

Cx vu Повертає буфер і його файл до останньої зафіксованої версії

Cx vc Видаляє останнє внесене зміна з майстер-файла для файлу, до якого ви звернулися Це скасовує ваше останнє фіксування

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

Джерело: Річард Столмен, Керівництво по 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>

*

*