Контроль версий для новичка - PullRequest
22 голосов
/ 29 мая 2009

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

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

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

А потом, как раз на днях я случайно переписал что-то важное даже с этим методом, вероятно, из-за опечатки в именовании.

Излишне говорить, что этот метод отстой.

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

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

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

Спасибо всем.

Ответы [ 21 ]

17 голосов
/ 29 мая 2009

Существует два подхода к этой проблеме:

  1. Управление версиями по требованию . Это модель, используемая subversion, CVS и т. Д. И т. Д. После внесения «значительных» изменений вы решаете сказать системе «сохранить эту версию».
  2. Автоматическое управление версиями . Это модель, используемая некоторыми старыми VAXen, Eclipse, IDEA , каждым вики и несколькими инструментами писателя. Каждый раз, когда вы сохраняете, новая версия создается неявно. При некотором удалении старые версии могут отбраковываться (например, только одна версия сохраняется из работы, выполненной неделю назад, а не при каждом сохранении).

Звучит так, как будто вы предпочли бы №2, потому что это "защита от дурака" - вам никогда не придется идти, "ой, я должен был" проверить "/" сохранить "мою работу, прежде чем вносить это изменение". Вы всегда можете откатиться назад. Недостатком является то, что вам нужно вручную пройтись по старым версиям, чтобы найти что-то, потому что, в отличие от # 1, вы обычно не даете описание каждого изменения.

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

Кроме того, кажется, что вам не нужно 90% функций в стандартной системе SCM - ветвление, маркировка и т. Д. - но вы можете найти применение для них в конце концов. Таким образом, обучение может быть победой в долгосрочной перспективе. Вы можете сделать это с помощью SVN и т. Д., Но это потребует некоторых настроек. Если вы используете редактор сценариев (emacs, vi, TextMate и т. Д.), Вы можете переопределить команду «Сохранить» как «Сохранить и создать новую версию».

13 голосов
/ 29 мая 2009

Subversion более или менее золотой стандарт.

Я бы посоветовал (особенно новичку) проверить BeanStalk (www.Beanstalkapp.com), чтобы запустить ваш сервер Subversion и TortoiseSVN для вашего клиента.

Удачи!

6 голосов
/ 29 мая 2009

Что бы вы ни делали, если кто-то упоминает Visual SourceSafe - бегите как можно быстрее. VSS был создан самим сатаной и передан разработчикам мучений по всему миру.

5 голосов
/ 29 мая 2009

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

Поверьте, это действительно того стоит. Время, потраченное на изучение мерзавца, - это хорошо проведенное время.

4 голосов
/ 29 мая 2009

Если вы не работаете в команде, вы можете использовать что-то вроде функции локальной истории Eclipse. Он хранит версии ваших файлов локально, и вы можете вернуться к предыдущим версиям, когда захотите. Подробнее здесь: http://help.eclipse.org/ganymede/index.jsp (Поиск по "местной истории"). Я уверен, что другие IDE тоже имеют такую ​​функцию.

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

4 голосов
/ 29 мая 2009

В настоящее время я использую Subversion, но мой опыт управления источниками ограничен.

Однако я бы предложил прочитать учебник Эрика Синка.

http://www.ericsink.com/scm/source_control.html

3 голосов
/ 29 мая 2009

Subversion не очень сложная. Если вы используете Windows, TortiseSVN очень поможет, если вы используете Eclipse, плагин subclipse - это круто. (Вы, вероятно, должны использовать Eclipse независимо от :))

Некоторые другие немного сложнее, но вы просто должны знать схему с затмением. Может быть, вы могли бы "попробовать это" с проектом с открытым исходным кодом или каким-либо существующим сервером Subversion.

Цикл будет:

Сначала вы "Зацените" репозиторий. Это заполняет указанный каталог содержимым репозитория.

Если вы делаете это из командной строки - это "svn co" - там достаточно помощи, чтобы выяснить все остальное.

Во-вторых, вы редактируете свои файлы. Вам не нужно блокировать их или что-то еще.

если вы добавляете новый файл, вы используете «svn add filename», как только добавляете его. Это на самом деле не изменит хранилище, пока вы не внесете свои изменения.

Когда группа правок завершена, вы регистрируете их с помощью "svn ci" (также svn commit works). У этого есть НЕКОТОРЫЙ поворот, который вы всегда забудете - каждый коммит нуждается в комментарии. Вам не нужно указывать файлы, которые вы делаете, или что-то еще, но вы должны быть на верхнем уровне вашего проекта (он будет фиксировать все, что находится ниже вашего каталога.

Итак, процедура здесь, перейдите в «корень» дерева вашего проекта и введите:

svn ci -m "comment"

кусок торта.

Наконец, ЕСЛИ кто-то еще проверяет вещи в вещах, становится ЧУЖЕ незнакомым. прежде чем совершить коммит, вы должны «обновить» и получить свои изменения. «svn up» - это все, что нужно, но он может предупредить вас, что произошли слияния. Это происходит только тогда, когда вы оба редактировали один и тот же файл, и в 90% случаев слияния будут проходить нормально. в остальное время в вашем файле появятся маленькие маркеры, которые сообщают вам, что вы изменили и что они изменили. Команда "up" скажет вам, с какими файлами она это сделала. Посмотрите на них и очистите файл, прежде чем проверять файл.

Всегда проверяйте между "svn up" и "svn ci", вы никогда не знаете, были ли их дерьмовые изменения испортили ваш первоначальный код.

Это действительно так. Это настолько просто из CLI, что графические среды вряд ли стоят этого (но subclipse действительно хорош, если вы все равно находитесь в eclipse, потому что он визуально покажет вам измененные файлы, которые необходимо проверить).

Если вы когда-нибудь забудете, справка по командной строке svn чрезвычайно лаконична и полезна, рассказывает вам ТОЛЬКО, что вам нужно знать, и имеет помощь по всем подкомандам и опциям.

3 голосов
/ 29 мая 2009

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

3 голосов
/ 29 мая 2009

Лучше всего научиться использовать существующий инструмент управления версиями «промышленного стандарта», такой как Subversion. Даже если вы новичок в программировании и управлении версиями, SVN не так сложен в изучении и будет хорошо служить вам. Я лично использую и рекомендую VisualSVN Server и TortoiseSVN для Windows. Оба бесплатны и довольно просты в использовании.

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

3 голосов
/ 29 мая 2009

Если вы ищете простую в настройке систему управления версиями для Windows, я настоятельно рекомендую TortoiseHg , простой в использовании Mercurial интерфейс для Windows , Вам не нужно беспокоиться о настройке и отслеживании хранилища отдельно от ваших файлов, но вы всегда можете сделать это, если хотите. Mercurial - отличный инструмент, потому что он может расти вместе с вашими потребностями. Он имеет все обычные функции, такие как простое объединение и т. Д., И, по моему опыту, его немного проще обернуть, чем Git.

...