Як змінити ефект злиття на поляризованих гілках, не вмираючи від агонії?
Ця проблема мучить мене місяцями, і я нарешті здався.
У вас є 1 сховище з 2 іменованими гілками. A і B.
Зміни, що відбуваються з А, неминуче відбудуться на Б
Зміни, які відбуваються безпосередньо на B, НІКОЛИ не повинні відбуватися на A.
У такій конфігурації злиття "B" в "A" створює страшну проблему у сховищі, оскільки всі зміни до B відображаються в A так, ніби вони були зроблені в A.
Єдиним "нормальним" способом виходу з цієї ситуації, здається, є "резервне копіювання" об'єднання, тобто:
hg up -r A
hg backout -r BadMergeRev --parent BadMergerevBeforeOnA
Що виглядає чудово і чудово, поки ви не вирішите об’єднатись пізніше у правильному напрямку, і в кінцевому підсумку у вас трапляються всілякі неприємні речі, і код, який був стертий / прокоментований спеціально для гілки B, раптом не стирається або не коментується.
Наразі цього не було дієвого життєздатного рішення, крім "нехай це зробить свою справу, а потім власноруч виправте всі проблеми", і це, чесно кажучи, трохи непомітно.
Ось зображення, що роз’яснює проблему:
[Оригінальне зображення втрачено]
Файли C & E (або зміни C & E) повинні відображатися лише у гілці b, а не у гілці a. Редакція A9 тут (гілка a, revno 9) є початком проблеми.
Версії A10 та A11 є фазами "Злиття зворотного зв'язку" та "Об'єднання зворотного виходу".
І редакція B12 є ртутною, помилково неодноразово відмовляючись від змін, які не мали на меті відмінити.
Ця дилема викликала багато розчарувань і синього диму, і я хотів би покласти цьому край.
Примітка
Це може бути очевидною відповіддю на спробу заборонити зворотне злиття або за допомогою гачків, або за допомогою політик. Я виявив, що здатність це вимити досить велика, і ймовірність того, що це трапиться настільки ймовірна, що навіть із контрзаходами ви все одно повинні припустимо , що неминуче, це буде відбуватися так , що ви можете вирішити , коли він робить.
Розробити
У моделі я використовував окремі файли. Завдяки цьому проблема звучить просто. Вони просто представляють довільні зміни, які можуть бути окремим рядком.
Крім того, щоб додати образи до травми, відбулися суттєві зміни у гілці A, що залишає постійну проблему. на гілці А замість цього "
Про хитрощі з переписуванням історії:
Проблема всіх цих ретроактивних рішень полягає в наступному:
- У нас 9000 комітів.
- Таким чином клонування свіжо займає півгодини
- Якщо десь існує хоч один невдалий клон сховища , існує можливість, що він повернеться в контакт із початковим сховищем і вдарить його знову.
- Всі вже клонували це сховище, і ось уже минуло кілька днів із поточними комітами.
- Одним з таких клонів є веб-сайт, який працює в режимі реального часу, тому "витираючи його і починаючи з нуля" = "велике ноно"
(Я визнаю, що багато з перерахованого трохи хитрі, але вони поза моїм контролем).
Єдиними рішеннями, які є життєздатними, є ті, які припускають, що люди можуть і будуть робити все неправильно, і що є спосіб „скасувати” цю несправність.