Открытый и закрытый код в одном Git-репозитории - PullRequest
6 голосов
/ 12 ноября 2011

Исследовательская группа, в которой я участвую, в настоящее время размещает весь свой код в частном репозитории SVN. Мы хотели бы открыть наш код и перенести большую его часть на Github. Проблема в том, что часть кода чувствительна и не должна открываться, но мы все еще хотим, чтобы он находился под контролем версий. На данный момент у нас есть открытый код на Github, а приватный код все еще находится в приватном репозитории SVN. Есть ли хороший способ сделать это в одном репозитории Git?

Ответы [ 4 ]

7 голосов
/ 12 ноября 2011

С одним git-репозиторием нет. Что вы можете сделать, это использовать подмодули git , которые позволяют вам «комбинировать» репозитории. Сохраните ваш публичный код на github, создайте еще один, частный, git-репозиторий для вашего личного кода, который ссылается на публичный код как подмодуль. Изменения, сделанные в общедоступном подмодуле, могут быть переданы в github, а изменения в github могут быть перенесены обратно, но изменения вне подмодуля не будут представлены общедоступному сообществу. Несмотря на то, что деревья кода будут объединены в один корень, вам придется независимо управлять коммитами, подталкиваниями и извлечениями между отдельными модулями, что многие люди считают громоздким и проблематичным, поэтому вам следует поэкспериментировать с рабочим процессом, прежде чем распространять его широко.

0 голосов
/ 23 октября 2015

Да, подмодули git, кажется, решают проблему и для нас.Мы использовали для разработки CMS с открытым исходным кодом и расширений премиум-класса (платные) в той же ветке нашего частного репозитория.Теперь мы решили переключить разработку ядра на публичное репозиторий github и разделить разработку.

Вот как мы идем.

  1. Создайте публичный репозиторий с двумя ветвями.мастер идет на релизы, разработка идет на фактическую разработку.
  2. Мы создали новые репозитории для каждого расширения, которое у нас есть
  3. У нас есть личный репозиторий с основными файлами, куда мы идем в нашей разработке, и добавил всеПремиум расширения как подмодули.Это личное, конечно.Название ветки - dev.

Чтобы объединить изменения, которые мы просто выбираем из нашей ветки dev для разработки, вот и все.В этом случае мы имеем чистую связанную с ядром историю для публичного репозитория, и довольно легко клонировать только один репозиторий, а затем рекурсивно обновлять подмодули.На синхронизацию уходит немного больше времени, в любом случае, оно того стоит.

Приветствия

0 голосов
/ 22 октября 2014

Подмодули Git переместились сюда: http://git -scm.com / book / ru / Git-Tools-Submodules

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

Например:

/private-repository
    /some (private) directory
    /public-repository
        /some (public) directory
    /some other (private) directory

Другой вариантиспользует git-crypt https://www.agwa.name/projects/git-crypt/

0 голосов
/ 12 ноября 2011

Нет.

Если вы не хотите писать git-хуки для шифрования / дешифрования исходного кода, вам придется жить с двумя репозиториями.Когда кто-то клонирует git-репо, он буквально делает его клоном, поэтому невозможно сделать его частным без шифрования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...