Давайте посмотрим их аргументы:
- Я сольный разработчик этого проекта.
- Это всего лишь прототип, возможно, мне придется снова переписать с нуля.
- Я не хочу загрязнять систему контроля версий неполными версиями.
Во-первых, третий. Я вижу причину, но она основана на неверном предположении.
На работе мы используем Perforce, централизованную VCS, и на самом деле мы проверяем только тот исходный код, который успешно компилируется и ничего не нарушает (теоретически, конечно!) После экспертной оценки.
Поэтому, когда я начинаю нетривиальное изменение, я чувствую необходимость в посреднических коммитах. Например, недавно я начал вносить некоторые изменения (как-то в одиночку для этой конкретной задачи, поэтому я обращаюсь к пункту 1) в коде Java с использованием JDom (синтаксический анализ XML). Затем я застрял и захотел использовать встроенный в Java 1.6 синтаксический анализ XML. Очевидно, пришло время следить за текущей работой, если моя попытка не удалась и я захочу вернуться. Обратите внимание, что этот случай как-то обращается к точке 2.
Решение, которое я выбрал, простое: я использую альтернативный SCM! Хотя некоторые централизованные VCS, такие как SVN, можно использовать локально (на компьютере разработчика), меня соблазнила распределенная VCS, и после краткого тестирования Mercurial (что хорошо) я обнаружил, что Bazaar лучше подходит для моих потребностей и вкуса.
DVCS хорошо подходит для этой задачи, потому что они легки, гибки, допускают альтернативные ветви, не «загрязняют» исходный каталог (все данные находятся в одном каталоге в корне проекта) и т. Д.
Делая параллельное управление источниками, вы не загрязняете источник других разработчиков, сохраняя возможность вернуться назад или быстро попробовать альтернативные решения.
В конце концов, после передачи окончательной версии официальному SCM, результат тот же, но с дополнительной безопасностью на уровне разработчика.