Создание публичного доступа к подмножеству хранилища с сохранением истории - PullRequest
2 голосов
/ 27 октября 2010

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

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

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

Для полноты я должен добавить, что хранилище изначально было преобразовано из cvs.

Буду благодарен за любые идеи,

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Это не всегда практично, но если публичная часть вашего репо может быть ограничена (или перемещена в) подкаталогом вашего текущего репо, тогда вы можете:

  • extract (с помощью дляНапример, как вы упомянули, hg convert) этот подкаталог в репо своего собственного
  • ссылается на это новое репо как subrepo дляВаш главный репо.

Затем вы управляете двумя репо:

  • одним публичным (только с публичными файлами)
  • одним личным (сссылка на публичные репозитории как подпункт)
0 голосов
/ 27 октября 2010

Если вы можете использовать подпункты, это, вероятно, лучший способ, но использование convert не должно исключать взаимодействия между частями. Если общедоступный и приватный материал полностью не пересекаются, используйте convert, чтобы разделить исходное репо на два полностью непересекающихся подмножества (регенерируя все идентификаторы наборов изменений), а затем воссоздайте свой «суперсет» репо, клонируя один и вытягивая другое (использование --force для преодоления возражений Х.Г. по отношению к не связанным репозиториям). В итоге вы получите немного нетрадиционное репо, в котором есть два ревизора без родителей и две головы. Слейте головы, и вы снова получите единое представление о публичном и частном, а родословная публичного репо эффективно на собственной ветви.

...