Как выбрать правильную ветвь / ветвь для использования, посмотрев на график сети github?
Мне нужно использовать сторонний код, который доступен публично на github. Я смотрю на сетевой график github этого кода и вижу, что на других форках есть некоторые коммиты, которые не объединены в исходном репозитории.
Как решить, какая из веток / вилок мне подходит?
Пожалуйста, укажите ваши соображения, когда сталкиваетесь с такой проблемой.
По предложению Джона Феминеллы, всегда следует использовать (как правило, стабильные) "выпущенные версии проекта".
Я, конечно, согласен с этим, но этот вопрос по-прежнему актуален в одном из следующих случаев:
- Первоначальный автор больше не поддерживает этот код.
- Мне нужна особенность, которая не реализована в оригинале, но реализована по-разному в более чем одном форке
- Код все еще находится в стадии разработки, каждый форк имеет некоторые отличия от оригинала (либо в функциях, либо в решениях по разработке и реализации)
Я сталкивался с таким случаем много раз, в настоящее время автор по-прежнему пытается сохранить репо, но кажется, что ему не хватает времени, другие вилки более активны. Ни одна из вил не заявлена как достаточно стабильная для производственного использования. В прошлый раз, когда я сталкивался с таким случаем, в исходном хранилище также не было функции, которая была важна для меня.
Поэтому в таких случаях мне нужно будет выбрать наиболее стабильный форк, попробовать использовать его в своем коде, тщательно протестировать и, возможно, внести некоторые улучшения, чтобы сделать его стабильным.
2 ответа
Обновление: ОП уточнил свой первоначальный вопрос, чтобы указать, что рассматриваемый проект мертв.
Учитывая, что проект мертв и что у него есть N вилок, обычная стратегия выбора "лучшего форка" зависит от ряда факторов:
Кто-нибудь объявил, что они берут на себя обслуживание проекта? Ищите новости в списках рассылки, общественных форумах и так далее (не только на GitHub). Если так, начните следовать за той вилкой.
Есть ли на графе сети разветвления, в которых есть коммиты, поступающие с другого форка (а не, скажем,
master
)? Если это так, это означает, что поддержка объединяется вокруг этой другой вилки в качестве возможной замены мертвого проекта.Если что-то из этого не работает, сделайте еще кое-что: есть ли варианты проекта, которые откололись некоторое время назад и вокруг какой поддержки сейчас организуется поддержка? Если так, возможно, этот другой проект подойдет вашим потребностям.
В противном случае, иногда проекты просто не имеют поддержки, чтобы продолжать работу. Если это так, возможно, пришло время почесать свой собственный зуд!
Оригинальный ответ:
Несколько комментариев по этому поводу:
В общем, вы должны использовать выпущенные версии проекта, а не выбирать конкретную ветвь или ветку. Если вы этого не сделаете, ваши зависимости будут меняться каждый раз, когда проект обновляется с новым коммитом, что может привести к трудным для поиска ошибкам в вашем собственном коде.
Если вы решили, что вам всегда нужна последняя версия, и вы согласны с рисками, то воспользуйтесь
master
филиал, потому что это официальный. Это будет ветка по умолчанию, которую вы просматриваете, когда посещаете главную страницу репозитория.Люди обычно открывают репозитории для получения и получения отзывов о каких-либо модификациях исходной кодовой базы.
Таким образом, если вы не сотрудничаете над этой модификацией или если у вас нет особого интереса в получении раннего доступа к этой конкретной модификации, вам не нужно беспокоиться о других вилках.
В редких случаях официальная ветка разработки основного проекта будет называться как-то иначе, чем master
, В этом случае вы должны проконсультироваться с README, чтобы увидеть, на какую ветку вам следует обратить внимание.
Чтобы завершить ответ Джона.
Я использую http://gitpop.heroku.com/ который полезен для поиска самых популярных и активных вилок. Это довольно элементарно, но это делает работу.
Изменить: Как и в марте 2014 года, GitPop не работает, поэтому я написал свой собственный, потому что это было полезно для меня. http://gitpop2.herokuapp.com/