Подвижное расположение репозитория для нескольких [закрытых] ответвлений

Хм, Arraylist может использоваться в случаях, любят, следует, я предполагаю:

  1. Вы не уверены, сколько элементов будет существующих
  2. , но необходимо получить доступ ко всем элементам случайным образом посредством индексации

Для, например, необходимо импортировать и доступ все элементы в списке контактов (размер которого неизвестен Вам)

15
задан Vadim Kotov 22 February 2018 в 12:24
поделиться

1 ответ

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

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

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

  1. Обновите заголовок ветви, в которую вы хотите скопировать файл: hg update -C project1
  2. Слияние в ветке, из которой вы хотите скопировать файл: HGMERGE = / bin / false hg merge -r project2
  3. Вернуться к заголовку ветви, в которую вы хотите скопировать файл: hg revert -a --no-backup -r project1
  4. Вернуть конкретный файл вы хотите скопировать из головной ревизии объединенной ветки: hg revert --no-backup -r project2 path / to / file / in / project2.txt
  5. Переместите файл на его место в ветке вы хотите скопировать его в: hg mv path / to / file / in / project2.txt project1 / file / path / project2.txt
  6. Отметьте слияние как разрешенное: hg resolve -am
  7. И, наконец, зафиксируйте результат: hg commit -m «Слияние для копирования project2.txt в project1.»

Как я уже сказал, очень уродливо. И это может хорошо работать только в hg 1.3, поскольку я знаю, что некоторые важные ошибки во взаимодействии возврата, слияния и разрешения были исправлены совсем недавно. (IMHO, я подозреваю, что Ubuntu намеренно отстает от версий систем управления версиями, отличных от bzr.)

Как часто вы действительно ожидаете копирования файлов между проектами? Почему это случилось? Вы уверены, что потерять историю - это так плохо?

Я проделал нечто подобное в Subversion для пары собственных проектов, но, по моему опыту, мое первоначальное представление о том, к какому проекту действительно принадлежит что-то, было обычно правильно, а когда это не сохраняло историю, не так ли?

10
ответ дан 1 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: