Автоматический импорт репозитория Mercurial (например, SVN Externals) - PullRequest
1 голос
/ 27 декабря 2010

У меня есть проект, который я разрабатываю на основе CodeIgniter.Основная часть проекта - это частная система, которую я создаю, но я хочу добавить ее в систему контроля версий, чтобы получить все связанные с ней вкусности.Теперь я использую Mercurial, поэтому я выполнил весь бит hg init, поэтому я настроил репозиторий.

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

Для тех, кто не знаком с разработкой библиотеки CodeIgniter, вот ссылка:

application
  /config <- configuration files
  /libraries <- library logic in here

Теперь я, вероятно, разработаюеще несколько библиотек в ходе этого проекта, поэтому я не могу просто сбросить репо в папку приложения, не сложив их все вместе.

Я сделал следующее:

dev/ci/library <- library here
dev/project <- project here

Теперь в обеих этих папках я сделал репозиторий.Я хочу, чтобы репозиторий проекта автоматически ссылался на репозиторий библиотеки, чтобы я мог иметь закрытый и общедоступный репозиторий, как я объяснил ранее.

Основной способ сделать это, я прочитал, этоиспользовать вложенные репозитории, но я могу найти только примеры на вложенных (которые, во всяком случае, неясны).Как мне сделать так, чтобы он ссылался на другой репозиторий, такой как svn: externals?

Ответы [ 2 ]

3 голосов
/ 27 декабря 2010

Вы правы, подответы в Mercurial (или подмодули в Git) основаны на вложенной организации .
Но в вашем конкретном случае вам нужно:

  • twoотдельные репо,
  • не вложенные

Один из способов согласования обеих организаций (вашей и вложенной "субрепорации") состоит в том, чтобы иметь три репо

  • родительское репо (частное, как in, может быть передано в частное репо)
  • проект (частное, как in может быть передано в частное репо)
  • библиотека (общедоступное)., как в может быть передан в публичное репо)

Это даст следующее:

/dev
  .hg (private repo)
  .hgsubs (declare the two nested repos 'project' and 'ci/library')
  project
    .hg (private repo for your project)
    config
    .hgignore (for ignoring anyhting from libraries)
    libraries (private directory, not version)
      (symlink to /dev/ci/library)
  ci
    library
      .hg (public repo 

Таким образом, вы сохраните:

  • ваши два репо отделяются, как вы хотите
  • связь между двумя, чтобы иметь возможность вернуть эти два репо по точной ссылке, которую вы оставили им (т.е. вы в последний раз толкнули каждое из этих репо).
0 голосов
/ 27 декабря 2010

Реализовано в Mercurial 1.3, вот инструкции .

...