Начало работы с контролем версий

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

Учитывая ситуацию, стоит ли мне подождать и посмотреть, кто из них победит? В чем их относительные преимущества?

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

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

Ответов (25)

Решение

Самое важное в управлении версиями:

ПРОСТО НАЧНИТЕ ИСПОЛЬЗОВАТЬ

Не использовать контроль версий - ужасная идея. Если вы не используете контроль версий, прекратите читать прямо сейчас и начните его использовать.

Конвертировать из

cvs<->svn<->git<->hg

Неважно, какой из них вы выберете. Просто выберите самый простой для использования и начните записывать историю своего кода. Вы всегда можете перейти на другую (D) VCS позже.

Если вам нужен простой в использовании графический интерфейс, посмотрите TortoiseSVN (Windows) и Версии (Mac) (предложено codingwithoutcomments )


Редактировать:

pix0r сказал:

В Git есть несколько хороших функций, но вы не сможете оценить их, если уже не использовали что-то более стандартное, например CVS или Subversion.

Этот. Использование git бессмысленно, если вы не знаете, что может сделать для вас система контроля версий.

Изменить 2:

Только что видел эту ссылку на Reddit: Шпаргалка по Subversion . Хороший краткий справочник по командной строке svn.

Если вы работаете в Mac OSX, я обнаружил, что http://www.versionsapp.com/">Versions представляет собой невероятный (бесплатный) интерфейс GUI для SVN.

Если в окне Windows быстрый и грязный шлюз - это CVSNT. Легко использовать, просто настройте и работает очень хорошо.

Я лично предпочитаю SVN, но это хороший вариант для быстрого использования.

Используйте Subversion, он прост в настройке, использовании и содержит множество инструментов. Любая будущая система ревизий будет иметь импорт из SVN, поэтому не похоже, что вы не сможете изменить ее в будущем, если ваши потребности будут расти.

Для дружественного объяснения большинства основных понятий см . Наглядное руководство по управлению версиями . Статья очень удобна для SVN.

Если вы новичок в управлении версиями, прочтите это:
Source Control HOWTO

Просто используйте TortoiseSVN, и вы сможете жить, даже не зная реальных команд Subversion ... Но это плохо. К счастью, всегда будет «отличная возможность» выучить их наизусть - когда ваш бесценный репозиторий впервые будет поврежден.

Да, бывает.

@ superjoe30 Да, абсолютно. Как только вы начнете использовать контроль версий, вы больше никогда не вернетесь. Использую для всего, даже для своей "домашней" папки.

@Orion Edwards Subversion не требует сервера. Вы можете получить доступ к локальному репозиторию напрямую (через клиента, конечно), при этом серверный процесс не задействован.

superjoe30 пишет :

Связанный вопрос (возможно, ответы можно отредактировать, чтобы ответить на этот вопрос):

Как насчет использования системы управления версиями на вашем собственном компьютере, если вы единственный программист? >> Это хорошая практика? Есть ли какие-нибудь советы или хитрости?

Я использую SVN для всех своих личных проектов. Я начал с запуска svn на своем домашнем компьютере, но в конце концов перешел на Dreamhost. Их хостинговые пакеты, включающие Subversion, довольно разумны.

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

Итак, я просто установил SVN Server и Tortoise SVN для клиента и погрузился в глубину, и я не узнал, как их использовать на этом пути.

Мой голос отдан Subversion. Он очень мощный, но простой в использовании, и в нем есть отличные инструменты, такие как TortoiseSVN .

Но, как говорили до меня другие, ПРОСТО НАЧНИ ЭТО ИСПОЛЬЗОВАТЬ. Контроль версий - такая важная часть процесса разработки программного обеспечения. Без него не может быть ни одного «серьезного» программного проекта.

На моей нынешней работе мой предшественник не использовал никакого контроля версий. Есть просто горы папок как минимум в 3 разных местах, где он хранил все свои проекты. Можно ожидать, что любая случайная папка проекта найдет по крайней мере одну папку с именем «проект (СТАРЫЙ)» и одну с именем «проект».

Благодаря контролю версий вам никогда не придется делать копии «безопасных» сборок. Вам действительно не нужно беспокоиться о том, что ваша IDE повредит файл, над которым вы работаете (я смотрю на вас, REALBasic 5.5), потому что так легко фиксировать (читать: сохранять) вашу работу каждый день.

Излишне говорить, что я установил контроль версий на следующий день после того, как узнал о его существовании.

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

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

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

SVN - отличный инструмент, и он должен позаботиться о большинстве ваших потребностей. И с тех пор, как он существует, у него есть много инструментов с графическим интерфейсом (например, TortoiseSVN).

Выбирайте SVN.

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

В Git есть несколько хороших функций, но вы не сможете оценить их, если уже не использовали что-то более стандартное, например CVS или Subversion. Я определенно соглашусь с предыдущими постерами и начну с Subversion.

Начните использовать SVN для своей реальной работы, но постарайтесь найти время, чтобы повозиться с Git и / или Mercurial. SVN достаточно стабилен для производства, но в конечном итоге вы столкнетесь со сценарием, когда вам понадобится распределенная SCM, к тому времени вы будете должным образом вооружены, и новые системы станут достаточно зрелыми.

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

Я использовал RCS, CVS, SCCS, SourceSafe, Vault, perforce, subversion и git.

Я оценил BitKeeper, Dimensions, arch, bazaar, svk, ClearCase, PVCS и Synergy.

Если бы мне пришлось создать новый репозиторий сегодня, я бы выбрал git . Руки вниз.

Это бесплатно, быстро и активно разрабатывается.

И вы можете использовать его как клиент любого репозитория Subversion с помощью git-svn.

Это круто.

@ superjoe30

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

Я считаю, что с git это проще сделать, так как вам не нужен сервер и не нужно беспокоиться о вводе URL-адресов и т. Д. Ваш материал для управления версиями просто живет в .git каталоге внутри вашего проекта, и вы просто продолжаете его использовать.

5-секундное вступление (при условии, что вы его установили)

cd myproject
git init
git add * # add all the files
git commit

В следующий раз, когда вы сделаете некоторые изменения

git add newfile1 newfile2 # if you've made any new files since last time
git commit -a

Пока вы это делаете, git будет вам спиной. Если вы ошиблись, ваш код будет в безопасности в хорошем репозитории git. Это круто

  • Примечание: вам может показаться, что вытащить что-то из git немного сложнее, чем вставить его, но гораздо предпочтительнее иметь эту проблему, чем не иметь файлов вообще!

Я бы определенно предпочел SVN CVS, хотя бы потому, что люди, которые изучили систему управления версиями с помощью CVS, склонны использовать " svn delete " затем " svn add " вместо " svn move ". Это затрудняет поиск всех предыдущих версий конкретного файла. И вы всегда можете перейти на использование git-svn. Я лично считаю, что его легче выучить, чем hg, но на самом деле основная причина использования SVN в том, что он в значительной степени стал де-факто системой контроля версий программного обеспечения с открытым исходным кодом.

Если вы когда-нибудь планируете изучать / использовать D, почти обязательно получить доступ к сторонним репозиториям, таким как DSource .

По личному опыту я бы порекомендовал svn. Вы даже можете использовать такую ​​службу, как Beanstalk, которая предлагает бесплатные учетные записи (очевидно, с ограничениями, но достаточными для любого небольшого проекта), чтобы проверить воду. Но, как говорили другие, git лучше и, вероятно, стоит изучить.

Как уже много раз упоминалось в другом месте, Just Do It. Я быстро смог начать работу с Subversion под Windows с нуля, прочитав краткое руководство в Красной книге. Как только я указал TortoiseSVN на репозиторий, я занялся бизнесом. Мне потребовалось время, чтобы убрать более тонкие моменты, но это были незначительные неровности, которые нужно было преодолеть.

Я бы предложил установить службу Subversion вместо использования URL-адресов file: //, но это в основном личные предпочтения. Для репозитория, хранящегося на вашем компьютере разработчика, file: // работает нормально.

Один из основных советов по упрощению настройки сервера SVN прямо сейчас - использовать виртуальное устройство. То есть виртуальная машина, на которой предварительно установлена ​​и (в основном) предварительно настроена Subversion - в значительной степени вещь plug & play. Вы можете попробовать здесь , здесь и здесь , или просто попробуйте поискать в Google по запросу «виртуальное устройство подрывной деятельности».

Я начал использовать подрывную деятельность после того, как прочитал блог Уила Шипли.

Итак, я начал проверять код, одну машину и учетную запись dreamhost. Затем, после того как я случайно удалил функцию и сохранил свой проект, я знал, что нахожусь в глубоком «дуду», но с помощью Subversion я просто проверил последнюю версию этого файла, и ничего не произошло.

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

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

Тем не менее, вполне возможно, что начать с чистого листа с git будет проще - мой опыт работы с VCS основан на централизованном управлении версиями (CVS, SVN, Perforce ...), а часть моих (текущих!) Трудностей с git связана с понимание последствий распределенной модели. Я бегло взглянул на другие DVCS, такие как Bazaar и Mercurial, и они показались мне более удобными для новичков.

В любом случае, как говорили другие, Subversion - это, вероятно, самый простой способ привыкнуть к системе контроля версий и получить практический опыт использования преимуществ VCS (откат, ветвление, совместная разработка, упрощенный обзор кода и т. Д.).

О, и не начинайте с CVS. Он все еще используется на практике и имеет преимущества, но, IMHO, в нем слишком много исторических причуд и проблем с реализацией (неатомарные коммиты!), Чтобы быть хорошим способом обучения.

Важная причина использовать svn вместо cvs - svn поддерживает двоичные различия. Это может не иметь значения для многих программистов, но если вы вносите серию незначительных изменений в образ размером 10 Мб, наличие уникальной копии каждый раз в вашем репозитории может значительно быстро занять место.

Я использую TortoiseSVN в Windows, но на Mac перешел на коммерческий клиент CornerStone вместо (теперь коммерческого) клиента Versions. Я обнаружил, что у ряда бесплатных клиентов Mac, включая RapidSVN, было достаточно проблем, чтобы заставить меня выложить реальные деньги. Защитная сетка, которую CornerStone предоставляет для перехвата файлов, которые я забыл добавить в репозиторий, стоит мне денег. Я провожу много времени, сотрудничая с клиентом из США, который находится в противоположном часовом поясе, поэтому не могу позволить себе облажаться, забыв добавить файлы!