Вопросы контроля версий - PullRequest
       28

Вопросы контроля версий

2 голосов
/ 01 февраля 2011

У меня есть несколько вопросов контроля версий. Я и еще один веб-разработчик присоединились к компании, которая занялась разработкой программного обеспечения для старых и будущих проектов. Компания не имеет контроля над исходным кодом, так как старые проекты разрабатывались внешними подрядчиками с собственными системами контроля версий. Я хочу одну настройку как можно скорее, но у меня есть несколько вопросов о двух популярных вариантах, на которые я тоже не смог найти ответы, так что это не просто еще одна тема о GitHub против Subversion.

Некоторая справка о проектах, которые будут сохранены. Есть несколько старых проектов, в основном драйвер / прошивка. Мои новые проекты будут больше основаны на .Net / Java, и веб-разработчик захочет хранить контент сайта.

Из того, что я прочитал и попробовал, я предпочитаю Github, но веб-разработчик становится более непреклонным в использовании Subversion. Еще одно соображение, возможно, я на Windows-машине, а веб-разработчик на Mac, поэтому доступные клиенты будут отличаться. Я надеюсь, что мы оба можем использовать один и тот же источник контроля, а не идти разными путями. Первым источником контроля, который я использовал, был сервер Team Foundation, где у нас было одно хранилище и подкаталоги для каждого проекта из корня.

Q1. Что касается GitHub, базовый пакет позволит разместить 10 репозиториев. Учитывая, что уже есть 5 веб-сайтов, дюжина старых программных проектов, 3 новых проекта и еще больше, я чувствую, что мы будем ограничены в количестве проектов, которые мы можем разместить, даже если правок мало, и между проектами становится все меньше , При использовании Git вы, кажется, клонируете / извлекаете весь репозиторий. Буду ли я прав, предполагая, что не может хранить несколько проектов в одном репозитории, просто в разных подкаталогах.

SoftwareRepo / Project1 / Код

SoftwareRepo / Проект2 / Код

SoftwareRepo / Project3 / Код

SoftwareRepo / проекта4 / Код

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

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

Для клиентов я обнаружил, что SmartGit очень полезен для управления созданными мной тестовыми репозиториями на фоне командной строки, которую я изначально пытался использовать.

Q2. Если мы используем SubVersion, мы можем разместить его самостоятельно. У меня есть i7 с 6 ГБ оперативной памяти, поэтому мне предложили запустить виртуальную машину, но веб-разработчик недоволен тем, что я, возможно, ухожу из офиса, чтобы сервер subversion отключился, и они также не довольны моей машиной, работающей 24/7, как сервер. У нас есть бизнес-сервер, но сторонний администратор крайне раздражен в работе процессов, поэтому мы не можем использовать и Subversion. Жесткий диск сервера по крайней мере ежедневно копируется. Можно ли хранить файлы репозитория на нашем бизнес-сервере и просто использовать клиенты для доступа к файлам Subversion, или это процесс сервера Subversion, необходимый для доступа клиентов к файлам репозитория. Веб-разработчик рассматривает возможность запуска сервера SVN в облаке Amazon E2C, но у меня нет опыта работы с ним, поэтому я не могу комментировать. Моя проблема с Subversion заключается в том, что я использовал его раньше, и у меня были очень странные сообщения об ошибках с TortiseSVN, из-за которых я удалял свою извлеченную папку и перезагружал исходный код из хранилища из-за конфликтов (которые, казалось, не существовали), прежде чем я смог проверить любой код.

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

EDIT

Неутешительно, мы пошли с SVN в конце концов. Не мой личный выбор, но у нас были невероятные трудности при попытке настроить Git на компьютере с Windows и запустить его в качестве сервера. Требуется множество дополнительных установок, настройка SHH и управление через командную строку. Как показано в этом руководстве - http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/ SVN, с другой стороны, мы использовали VisualSVN Server, указали на сетевой диск для хранения репозиториев, и мы были в пути. Единый установщик и простая в использовании консоль управления. Если бы Git можно было сделать как единый установщик с графическим интерфейсом управления, мы бы использовали его, так как я думаю, что он более гибкий и надежный, учитывая, что у нас уже есть сообщения об ошибках SVN (поврежденные файлы / файлы не существуют / не выполняются очистка и т. Д.)

Ответы [ 4 ]

4 голосов
/ 01 февраля 2011

Я думаю, что вы немного упустили момент в Git.Со страницы руководства: «Git изначально поддерживает протоколы ssh, git, http, https, ftp, ftps и rsync».Это не только означает, что вы можете самостоятельно разместить его на своем i7, но если ваш «бизнес-сервер» уже настроил один из них, вы можете использовать его, не требуя sysadmin для установки чего-либо еще.распределенная природа git означает, что вам не нужно иметь только один центральный репозиторий, и вам не нужно, чтобы все ваши репозитории были всегда онлайн.До тех пор, пока вы регулярно находитесь в сети, чтобы обмениваться изменениями друг с другом, каждый из вас может размещать свой собственный git-репозиторий в любом месте, проверяя изменения самостоятельно и извлекая изменения из других при необходимости.Такая гибкость звучит идеально для вашей ситуации.

1 голос
/ 01 февраля 2011

Чтобы удовлетворить требования вашего svn-дружественного веб-разработчика, вы можете сделать svn своим центральным репозиторием, а также использовать git на локальном компьютере и общаться с svn-сервером, используя git-svn.

При использовании Git вы, похоже, клонируете / извлекаете весь репозиторий.

Не обязательно быть полным клоном из ревизии 1. Вы можете клонировать из определенной ревизии.

Q2. Если мы используем SubVersion, мы можем разместить его самостоятельно. У меня есть i7 с 6 ГБ оперативной памяти, поэтому мне предложили запустить виртуальную машину, но веб-разработчик недоволен тем, что я, возможно, ухожу из офиса, чтобы сервер subversion отключился, и они также не довольны моей машиной, работающей 24/7, как сервер.

Если это возможно, попросите вашего клиента получить NAS и настроить там svn-репо. Вы можете работать с вашим личным (git) клоном, даже если вы не в офисе. Веб-разработчик также может счастливо работать с SVN.

1 голос
/ 01 февраля 2011

GitHub - это не система контроля версий, это хостинг для git.Git может быть размещен локально очень легко.(См., Например, gitolite для размещения нескольких репозиториев git с использованием ssh.)

Я настоятельно рекомендую использовать одну и ту же программу, будь то Subversion или Git, для вас обоих.Лично я бы порекомендовал Git с отдельными репозиториями для каждого проекта и использовать локально размещенный сервер, такой как gitolite, хотя это не так привлекательно, как GitHub.Я настоятельно предпочитаю не полагаться на третьи стороны в предоставлении доступа к такому важному ресурсу, как мой исходный код.

1 голос
/ 01 февраля 2011

На вашем месте, конечно, у меня было бы отдельное git-репо для каждого несвязанного проекта. Я называю два проекта «несвязанными», когда вам обычно не нужно вносить согласованные изменения в оба, вам не нужно делать коммит для обоих одновременно. Возможно, у вас не так много не связанных между собой проектов, и вам нужно всего лишь 3-4 репо. Я работаю над огромным проектом, выпускающим несколько независимых продуктов, и у нас есть только 3 репозитория git.

Да, сервер Subversion - это процесс, который необходимо запустить, чтобы позволить svn-клиентам взаимодействовать с ним. Обратите внимание, что svn хостинг также широко доступен .

Вы также можете заставить SVN-репо следовать вашему git-репо , чтобы у каждого из вас был свой предпочтительный интерфейс. Исследуйте это когда-нибудь.

Если вы используете git, вы также можете самостоятельно разместить его: [1] , [2] и т. Д. Это может быть не так сексуально, как github, но вы действительно нужны все эти функции? Однако, если вы сделаете это, то 20 репо стоят 22 доллара в месяц, а 10 репо - 10 долларов в месяц. или так. Amazon EC2, вероятно, выставит вам счет аналогичным образом.

Но если вы не очень финансово напряжены, я полагаю, что вы покупаете коммерческий SVN и git-хостинг, а также снимаете с себя администрирование, резервное копирование и т. Д. С git у вас есть полная копия репозитория на каждом компьютере, так как он защищает от ряда сбоев.

...