Если у вас есть mq-патчи, и вы потянете, будет ли поврежден ваш репозиторий?
Ответ нет . Когда вы тянете, вы добавляете больше наборов изменений в свою локальную историю. Примененные патчи MQ также используются в виде набора изменений на графике набора изменений, но это не опасно, и вы не потеряете данные.
То, что может произойти, это то, что вы применили несколько патчей:
.... a --- b --- p1 --- p2 --- p3
Затем вы отправляете исправления в вышестоящий список рассылки для включения. Кто-то просматривает исправления, фиксирует их и отправляет наборы изменений в главный репозиторий. Другие изменения вступают в силу позже, и в следующий раз, когда вы потянете, вы получите:
.... a --- b --- p1 --- p2 --- p3 --- c --- d
Наборы изменений p1
до p3
все еще являются исправлениями MQ в вашем хранилище, но теперь у них есть non-MQ дочерних элементов! Попытка выскочить их приводит к (с Mercurial 2.1.1):
$ hg qpop
abort: popping would remove a revision not managed by this patch queue
Это что-то вроде тупика. Это раздражает, но не опасно. Чтобы решить эту проблему, вы должны заставить MQ понять, что p1
- p3
больше не управляются MQ. Вы делаете это, удаляя строки для этих наборов изменений из .hg/patches/status
. MQ, вероятно, должен в конечном итоге удалить эти строки самостоятельно, когда это произойдет, но это случается довольно редко, поэтому никто еще не написал этот патч.