Непрерывный контроль версий - PullRequest
9 голосов
/ 27 марта 2009

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

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

В настоящее время программисты считают управление исходным кодом интегрированием пакетов кода, но почему бы не сделать эти пакеты меньше и непрерывно интегрироваться?

-Adam

Ответы [ 16 ]

13 голосов
/ 27 марта 2009

В настоящее время программисты считают управление исходным кодом интегрированием пакетов кода, но почему бы не сделать эти пакеты меньше и непрерывно интегрироваться?

Я бы сказал, что DVCS уже в основном делают это сейчас, не потому, что они децентрализованы, а потому, что коммиты выполняются намного быстрее. С git я делаю коммит гораздо чаще, чем с SVN. Это также упрощает фиксацию "чанков". "или специфический код (с использованием git add -i или git gui), и, как правило, гораздо больше внимания уделяется отслеживанию строк кода, а не целым файлам (как" традиционные "VCS, такие как Subversion)

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

Что касается инструмента, который выполняет «непрерывный контроль версий», вы можете сделать это довольно просто с помощью сценария оболочки, что-то вроде ..

while [ 1 ]; do
   git add -a && git commit -m "Autocommit at $(date)";
   sleep 10;
done

Существует скрипт, CACM ( github ), который делает что-то похожее

[CACM] наблюдает за конкретным каталогом и фиксирует все изменения в отдельном репозитории Git.

Для использования просто сделайте:

cacm --repo dir_of_git_repo --watch dir_to_watch

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

Кроме того, текстовый редактор "e" имеет интересную особенность, он визуализирует историю отмен с ветвлением. На нем есть сообщение в блоге со скриншотами.

11 голосов
/ 27 марта 2009

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

6 голосов
/ 27 марта 2009

Eclipse имеет функцию под названием «локальная история», которая делает именно это. Он сохранит копию ваших исходных файлов между сохранениями. Он даже отслеживает удаленные папки для вас. Это спасло мою задницу несколько раз. Вы можете видеть Local History как низкоуровневое управление версиями, которое происходит только на вашем локальном компьютере. Недостатком этого является, конечно, когда вы работаете на другой машине, у вас будет другая локальная история.

5 голосов
/ 27 марта 2009

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

4 голосов
/ 27 марта 2009

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

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

В Linux я использую ext3cow для хранения своих репозиториев HG / Git. Это дает мне ту функциональность, которую вы описываете. К сожалению, я не знаю ничего подобного, которое могло бы переноситься за пределы Linux. Может быть, какая-нибудь сумасшедшая команда придумает такую ​​в Python.

Этот вопрос поднимался уже несколько раз (хотя каждый в своем контексте), поэтому, безусловно, необходимость чего-то вроде ext3cow (но переносимого) очевидна. Тем не менее, я не хотел бы, чтобы это раздуло в самой DVCS, особенно на огромных деревьях.

Я думаю, вам действительно нужно запрашивать это у файловой системы, а не у DVCS.

3 голосов
/ 27 марта 2009

Вы не хотите проверять каждые изменения. Вы хотите проверить атомарные наборы изменений, которые могут работать вместе. Вы не хотите добавлять параметр в метод и сохранять его, зарегистрировав его (и запустить сборку CI), а затем прервать сборку, поскольку вы еще не обновили вызовы метода.

3 голосов
/ 27 марта 2009

Вы имеете в виду что-то вроде Subversion autoversioning ?

Отказ от ответственности: я не говорю, что автоверсия это хорошая идея для разработки или что я бы лично это сделал, но технология существует.

2 голосов
/ 09 сентября 2013

Вас может заинтересовать система непрерывного контроля версий, разработанная JetBrains. Это еще не общедоступно, но я показываю некоторые особенности этого в своем выступлении на JetBrainsDay в Мальме: http://new.livestream.com/jetbrains/jetbrainsday1/videos/29348962

2 голосов
/ 08 ноября 2009

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

В то же время верно, что вы не хотите вносить тысячи мелких изменений каждый день в свой репозиторий.

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

Вот и все. Я использую History Explorer , так как я помог его разработать, но есть и другие.

2 голосов
/ 27 марта 2009

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

...