Можете ли вы обновить один проект от другого с помощью Mercurial

80
7

Я постараюсь объяснить мою ситуацию как можно более кратким:


У меня есть проект шаблона, который я использую в качестве шаблона (duh) при запуске нового проекта.
Этот шаблонный проект развивается, и иногда я его обновляю, когда я работаю над другим проектом.


Итак, представьте, что:


    Проект шаблона: template.file
    Проект A: template.file и projectA.file
    Проект B: файл template.file и projectB.file

(все проекты находятся под контролем редакции) Теперь, когда я изменяю template.file в проекте A, я хотел бы, чтобы все другие файлы template.files во всех других проектах обновлялись


Я на окнах, используя tortoisehg, и я относительно новичок в этой игре с версией. Полагаю, я бы сделал это с веткими? Но не будет ли проект project.file и ProjectB.file также добавлен в проект шаблона?

спросил(а) 2011-05-08T20:32:00+04:00 9 лет, 4 месяца назад
1
Решение
70

Вот что вы можете сделать:


Перейдите в проект шаблона и слейте проект A, затем обрезайте все, что вам не нужно, прежде чем совершать. Это довольно трудоемко и требует много времени.


Затем вы можете перейти в проект и вытащить из проекта шаблона и очень тщательно слить.


Я бы не сделал этого по ряду причин. Во-первых, это беспорядочно и подвержено ошибкам. Во-вторых, это приводит к обоим проектам, содержащим все файлы всех других проектов, даже если в версиях подсказок эти файлы считаются удаленными. История все еще есть.


Вот еще одна вещь, которую вы могли бы сделать:


Используйте hg export, чтобы экспортировать изменение, которое изменяет файл шаблона из проекта A. Затем используйте hg import, чтобы импортировать это изменение в ваш проект шаблона.

Затем вытащите из проекта шаблона в проект A и проект B и слейте.


Это требует, чтобы вы дисциплинировали себя при изменении проекта A и всегда внесли изменения в файлы шаблонов самостоятельно.


В качестве альтернативы вы можете вручную изменить экспортированное изменение, чтобы удалить посторонние изменения.


Вот третье, что вы могли бы сделать:


Всегда изменяйте файлы шаблонов только в проекте шаблона. Затем вы можете вытащить из проекта шаблона в проекты A и B и слить.

ответил(а) 2011-05-08T20:38:00+04:00 9 лет, 4 месяца назад
57

В Mercurial нет ничего, что было бы из коробки с этим, чисто.


Вы можете:


    Настройте все внутри одного большого репозитория, просто отделите их на разные каталоги.
    Используйте субрепозитории, что означает, что Project A и Project B будут ссылаться на проект шаблона как на субрепозицию
    Просто сделайте копию файла, о котором идет речь, ко всем другим проектам/репозиториям

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


В первом случае у вас будет 3 разных копии файла template.file, а обновление не будет обновлять два других, и в Mercurial ничего не будет, что поможет вам в этом.

В третьем случае три репозитория полностью различны и раздельны, что означает, что изменения в одном не распространяются на другие.


Однако второй случай может быть выполнен, но если вам нужна копия файла внутри репозиториев проекта A/B, вы вернетесь к третьему случаю.


Однако вы можете сделать проект шаблона субрепозитаром проекта A, а вместо того, чтобы делать копию файла, из проекта шаблона и в проект A, вы ссылаетесь на тот, который у вас есть в подзаголовке, хранилище.


Так Меркуриал справляется с такими вещами.

ответил(а) 2011-05-08T20:38:00+04:00 9 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема