Оновіть елемент до редакції проти повернутися до редакції


161

Я почав використовувати Subversion з TortoiseSVN. Якщо я відкриваю журнал і клацаю правою кнопкою миші на старій редакції, я бачу два варіанти, які звучать так, ніби вони повертаються до старій версії: "Оновити елемент до редакції" та "Повернутись до цієї редакції".

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

Отже, скажіть, що версія HEAD дорівнює 100, а я повертаю назад до 95. Це поверне мою робочу копію назад до 95. Тоді я можу здійснити цю зміну у сховищі, яка б створила версію 101 правильною? Чим це відрізняється, якщо я оновлювався до версії 95? Хіба це все ще просто не змінить зміни від останніх версій? Мене бентежить те, як відрізняється стан моєї робочої копії після повернення чи оновлення до попередньої версії.

Відповіді:


205

Оновлення до редакції оновить лише файли вашої робочої копії до обраної версії. Але ви не можете продовжувати працювати над цією редакцією, оскільки SVN скаржиться на те, що ваша робоча копія застаріла .

повернення до цієї редакції скасує всі зміни у вашій робочій копії, які були внесені після обраної редакції (у вашому прикладі rev. 96,97,98,99,100) Ваша робоча копія зараз перебуває у зміненому стані .

Вміст файлу обох сценаріїв однаковий, однак у першому випадку у вас є незмінена робоча копія, і ви не можете вносити свої зміни (оскільки ваша робоча копія не вказує на HEAD rev 100), у другому випадку у вас є змінена робоча копія, що вказує на голову та ви можете продовжувати працювати і робити зобов’язання


1
Добре, скажімо, я оновлюю до редакції, і моя робоча копія не має даних. Ніщо не заважає мені змінювати файли. Що робити, якщо я зміняю один з файлів і спробую вчинити його. Я здогадуюсь, що підривник побачить конфлікт і змусить мене об'єднати останню версію в сховищі до моєї модифікованої робочої копії, перш ніж я її надсилаю.
Ерік Анастас

5
Якщо ви спробуєте скористатись предметом зі старшою версією BASE-версії, ніж HEAD, ви отримаєте "фіксацію не вдалося: ваша робоча копія ймовірно застаріла"
Пітер Паркер

як поводитися з місцевими змінами (неспроможними змінами) update toі як їх revert to/fromставити
BaltoStar

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

31

Щоб зрозуміти, як стан вашої робочої копії відрізняється в обох сценаріях, ви повинні зрозуміти концепцію перегляду BASE :

БАЗА

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

Ваша робоча копія містить знімок кожного файлу (прихований у папці .svn) у цій версії BASE, тобто таким, як він був останній раз, отриманий із сховища . Це пояснює, чому робочі копії займають 2 рази місця та як можливо, ви можете вивчити та навіть відновити локальні модифікації без мережевого з'єднання.

Елемент оновлення до редакції змінює цю базову редакцію, роблячи BASE застарілим. Коли ви намагаєтеся здійснити локальні модифікації, SVN помітить, що ваша БАЗА не відповідає HEAD-сховищу. У фіксації буде відмовлено, поки ви не зробите оновлення (і, можливо, злиття), щоб виправити це.

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


З прийнятої відповіді "Вміст файлу обох сценаріїв однаковий". Так навіщо турбуватися? Ця відповідь пояснює остаточну різницю та пояснює, чому "оновлення" проти "повернення" викликає різну поведінку при спробі вчинення.
radarbob

як поводитися з місцевими змінами (неспроможними змінами) update toі як їх revert to/fromставити
BaltoStar

5

Файли у вашій робочій копії можуть виглядати абсолютно однаково після, але вони все ще відрізняються різними діями - сховище знаходиться в абсолютно іншому стані, і у вас будуть доступні інші варіанти після відновлення, ніж "оновлення" до старої редакції .

Якщо коротко, "оновлення до" впливає лише на вашу робочу копію, але "зворотне злиття та введення" вплине на сховище.

Якщо ви "оновите" стару версію, то сховище не змінилося: у вашому прикладі редакція HEAD все ще є 100. Вам нічого не потрібно робити, оскільки ви просто псуєте свою робочу копію. Якщо ви внесете зміни до своєї робочої копії та спробуєте зробити їх, вам скажуть, що ваша робоча копія застаріла, і вам потрібно буде оновити її, перш ніж ви зможете зробити її. Якщо хтось, хто працює в тому ж сховищі, виконує "оновлення", або якщо ви перевірите другу робочу копію, це буде r100.

Однак якщо ви "зворотно об'єднали" стару версію, то ваша робоча копія все ще базується на HEAD (припускаючи, що ви оновлені) - але ви створюєте нову редакцію, щоб замінити небажані зміни. Ви повинні здійснити ці зміни, оскільки ви змінюєте сховище. Після завершення будь-яких оновлень або нових робочих копій на базі HEAD відображатиметься r101, із вмістом, який ви тільки що зробили.


5

Оновіть свою робочу копію до вибраної версії. Корисно, якщо ви хочете, щоб ваша робоча копія відображала час у минулому, або якщо в сховищі були додаткові зобов’язання, і ви хочете оновлювати свою робочу копію покроково. Найкраще оновлювати цілий каталог у вашій робочій копії, а не лише один файл, інакше ваша робоча копія може бути непослідовною. Це використовується для тестування конкретної цілі оборотів, якщо ваш тест виконаний, ви можете скористатися цією командою для тестування іншого обороту або використання оновлення SVN для отримання HEAD

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

- від довідки TSVN док

Якщо ви оновите свою робочу копію до попередньої версії, це стосується лише вашої власної робочої копії, після того, як ви внесете деякі зміни та захочете здійснити помилку, ви не зможете. до обороту, ви можете взяти на себе зобов’язання repository.everyone повернеться до ревізії після оновлення.


2

Текст із посилання на Черепаха:

Елемент оновлення до версії Оновіть робочу копію до вибраної версії. Корисно, якщо ви хочете, щоб ваша робоча копія відображала час у минулому, або якщо в сховищі були додаткові зобов’язання, і ви хочете оновлювати свою робочу копію покроково. Найкраще оновлювати цілий каталог у вашій робочій копії, а не лише один файл, інакше ваша робоча копія може бути непослідовною.

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

Повернутися до цієї версії Повернутися до попередньої версії. Якщо ви внесли кілька змін, а потім вирішите, що дійсно хочете повернутися до того, як все було в редакції N, це команда, яка вам потрібна. Зміни скасовуються у вашій робочій копії, тому ця операція не впливає на сховище, поки ви не скористаєтесь змінами. Зауважте, що це скасує всі зміни, внесені після обраної версії, замінивши файл / папку на попередню версію.

Якщо ваша робоча копія знаходиться в немодифікованому стані, після виконання цієї дії ваша робоча копія відображатиметься як змінена. Якщо у вас вже є локальні зміни, ця команда об'єднає зміни скасування у вашу робочу копію.

Все, що відбувається внутрішньо, - це те, що Subversion здійснює зворотне злиття всіх змін, внесених після обраної редакції, скасовуючи ефект цих попередніх зобов'язань.

Якщо після виконання цієї дії ви вирішите скасувати скасування скасування та повернути свою робочу копію до попереднього немодифікованого стану, вам слід скористатися TortoiseSVN → Повернутися з Windows Explorer, який відкине локальні модифікації, здійснені цією зворотною дією злиття.

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.