Как и многие программисты, я склонен к периодическим приступам «вдохновения», когда я внезапно увижу The Light и выполню серьезную операцию над своим кодом. Как правило, это работает хорошо, но бывают случаи, когда позже я обнаруживаю, что - из-за недостатка сна / кофеина или просто несовершенного понимания проблемы - я сделал что-то очень глупое.
Когда это произойдет, следующим шагом будет обратить вспять урон. Проще всего, это означает стек отмены в моем редакторе ... если я не закрыл файл в какой-то момент. Следующим будет контроль версий, но если я сделаю изменения между моим последним коммитом (я обычно не фиксирую код, который нарушает сборку) и моментом вдохновения, они теряются. Этого не было в хранилище, поэтому код никогда не существовал.
Я бы хотел настроить свою рабочую среду таким образом, чтобы мне не пришлось об этом беспокоиться, но я никогда не придумал полностью удовлетворительного решения. В идеале:
- Новая, восстанавливаемая версия будет создаваться каждый раз, когда я сохраняю файл.
- Эти "автоматически сохраненные" версии не будут загромождать основной репозиторий. (Подавляющее большинство из них было бы совершенно бесполезно; я нажимаю Ctrl-S несколько раз в минуту.)
- «Автоматически сохраненные» версии должны храниться локально, чтобы я мог очень быстро их просматривать. Репозиторий с 3-секундным циклом просто не подходит для быстрого сканирования сотен ревизий.
Опции, которые я рассмотрел:
- Просто внесите изменения в основной репозиторий, прежде чем вносить большие изменения, даже если код может быть поврежден. Минусы: когда я "вдохновлен", у меня обычно нет присутствия ума для этого; ломает сборку.
- Локально размещенный репозиторий Subversion с включенным автоматическим контролем версий, смонтированный как «Веб-папка». Минусы: плохо работает с рабочими копиями других репозиториев; монтирование правильных папок WebDAV в Windows в лучшем случае болезненно.
- Как и в предыдущем методе, но вместо этого используется ветвь в главном репозитории и слияние с транком, когда я обычно вручную фиксирую. Минусы: не во всех размещенных репозиториях может быть включено автоматическое управление версиями; не соответствует пунктам 2 и 3 выше; не может безопасно выполнить обратное слияние из магистрали в ветвь.
- Переключитесь на DVCS и «объедините» все мои маленькие коммиты при нажатии. Минусы: я не знаю в первую очередь о DVCS; иногда Subversion - единственный доступный инструмент; Я не знаю, как выполнить пункт 1 выше.
- Хранить рабочую копию в версионной файловой системе. Минусы: существуют ли они для Windows? Если это так, Google не смог указать мне путь.
Кто-нибудь знает инструмент или комбинацию инструментов, которые позволят мне получить то, что я хочу? Или я поставил перед собой противоречивые требования? (Что я довольно сильно подозреваю.)
Обновление: После более тщательного изучения инструментов, которые я уже использую (вздох), оказывается, что мой текстовый редактор имеет очень отличная функция резервного копирования, которая почти идеально соответствует моим потребностям. Он не только имеет возможность хранить все резервные копии в «скрытой» папке (которую затем можно добавить в глобальное игнорирование для VCS), но также позволяет просматривать и даже просматривать резервные копии прямо в редакторе.
Проблема решена. Спасибо за совет, ребята!