частные и публичные репозитории git для моего проекта OSS - PullRequest
0 голосов
/ 24 мая 2011

здесь есть похожие вопросы в stackoverflow, но ни один из них не является тем, что я собираюсь задать, по крайней мере, ни один из них я не смог найти.

Я начинаю проект OSS и хочу поделиться импублично на github.Но я также хочу иметь личное удаленное репо на моем сервере.Публичное репо предназначено для публичной версии проекта, а частное репо для внутренней версии, не готовой к выпуску.Очевидно, что публичное репо всегда будет старой версией того, что находится в частном порядке, и вещи в частном порядке не будут переданы в публичный доступ, пока они не будут готовы.

Я искал по сети и нашел некоторых ребяткто придумал рабочий процесс, очень похожий на то, что я хочу.Это ссылка на пост в блоге, где они все объясняют: http://www.braintreepayments.com/devblog/our-git-workflow

Мне нравится все в нем, кроме полностью раздавленных коммитов, которые идут в публичный репозиторий на github.Мне также не нравится та часть, в которой после слияния с публикой им приходится заново объединять все обратно в ветки master и release, хотя, как они положительно утверждают, реальных изменений там нет.

Мой вопрос: действительно ли плохо иметь публичную историю репо, которая представляет собой просто серию раздавленных коммитов, в которой утрачены все детали логических изменений в ней?Это кажется мне неестественным, и я не часто видел это, но, может быть, это не так уж плохо, или же я могу принять этот рабочий процесс без параметра --squash.

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

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

Ответы [ 3 ]

2 голосов
/ 24 мая 2011

Если вы просто не хотите, чтобы невыпущенные изменения были видны до тех пор, пока они не будут выпущены, и не против, чтобы промежуточные коммиты стали видимыми после их выпуска, тогда это довольно просто.Вы можете просто рассматривать вашу частную ветку как ... ну, обычную ветку.Просто убедитесь, что имя частной ветки не существует на github (но существует в частном репо), и настройки push по умолчанию должны позаботиться о вещах.чтобы скрыть историю, ну, в общем, в этом весь рабочий процесс на основе сквоша.В этом случае, если вы объединяете внешние ветви, было бы лучше избегать подавления их коммитов.

2 голосов
/ 24 мая 2011

Вместо того, чтобы идти по этому пути, почему бы вам просто не перенести все ваши изменения в Github, но в ветку, отличную от 'master' - таким образом, люди увидят "безопасную" ветку по умолчанию, но вы не потеряет историю.

Если вы действительно хотите сохранить свою ветку dev в секрете, вы можете делать то, что я описываю, но не нажимайте ветку dev - ветка dev будет локальной только для вашей машины.

1 голос
/ 24 мая 2011

Вы в порядке в своем мышлении. Вам не нужно выдавливать коммиты, если вы не хотите. Что касается вашей частной ветки, вы все равно хотите, чтобы это куда-то отправили, чтобы у вас была резервная копия. Вы можете отправить его к голому клону на USB-накопитель или в другое место, например unfuddle.com, где у вас есть свободное пространство для git-репо. После этого у вас будет настроено 2 пульта: один для Github, а другой - для флешки или USB.

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

Надеюсь, это поможет.

...