Существует ли инструмент, который автоматически сохраняет возрастающие изменения в файлах при кодировании?

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

Существует ли инструмент с эквивалентной функцией кодера Ruby, работающего на Mac OS (или UNIX)?

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

5
задан Bob. 16 March 2010 в 20:42
поделиться

6 ответов

IDE Netbeans имеет локальную историю , которая по умолчанию включена. Каждый раз, когда вы сохраняете файл (ctrl-s), запись добавляется в историю файла. Что касается других поддерживаемых VCS, вы можете просмотреть историю, увидеть различия и вернуться к предыдущему состоянию.

Кроме того, Netbeans известен своей действительно хорошей поддержкой разработки Ruby.

3
ответ дан 13 December 2019 в 22:05
поделиться

VIM

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

Чтобы узнать, насколько расширяем VIM, посмотрите этот пост: Как я могу написать сценарий vim для запуска perltidy на буфере?

5
ответ дан 13 December 2019 в 22:05
поделиться

RubyMine автоматически сохраняет текст по мере ввода и автоматически сохраняет историю локальных изменений. Насколько я знаю, он не будет автоматически фиксировать изменения в Git, но он интегрируется с Git. RubyMine отлично работает на Mac OS X.

1
ответ дан 13 December 2019 в 22:05
поделиться

Также Vim :) Но то, что я использую, сильно отличается от того, что написал kzh .

Я не использую систему контроля версий для моих файлов автоматического резервного копирования, я скорее хочу видеть все версии всех файлов в моем ~ / vim_backup каталоге . (Примечание: конечно, я использую git для контроля версий моих исходных файлов, но теперь мы говорим об автоматическом резервном копировании.) Следующие строки в моем .vimrc сделают Vim создает резервную копию файла каждый раз при его сохранении. Имя файла резервной копии - это имя обычного файла плюс текущая дата и время.

В моем файле .vimrc есть следующие строки:

if v:version >= 700
    " If I have a ~/vim_backup directory, let that be the backup          "
    " directory; otherwise do not back up.                                "
    " (Vim version earlier than 7.0 do not have the finddir function.)    "
    if finddir("~/vim_backup") != ""
        set bdir=~/vim_backup/
        set backup
    else
        set nobackup
    endif
endif

" We set the 'backupext' option to contain the current date and time, so  "
" that the name of the backup file will be the concatenation of the name  "
" of the normal file and the current date and time.                       "
function! HRefreshBackup()
    execute ":set backupext=" . strftime(".%y%m%d_%H%M")
    " You may want to have %H%M%S instead of %H%M if you want to have the "
    " possibility of having multiple backups in a minute.                 "
endfunction

" Refresh the backup file name before each "save"                         "
au BufWritePre * call HRefreshBackup()

Пример того, как выглядит мой каталог ~ / vim_backup :

$ ls -ltr ~/vim_backup | head                                  
total 105692                                                
-rwx--x--x 1 hcs hcs     252 2009-12-19 06:49 Sync_flash.091222_0902
-rwxr-xr-x 1 hcs hcs     819 2009-12-19 06:49 hk.091229_1637        
-rwxr-xr-x 1 hcs hcs     507 2009-12-19 06:49 FOLLOW_LINK.091220_0802
-rwx--x--x 1 hcs hcs     212 2009-12-19 06:49 Cut.091230_2113        
-rwxr-xr-x 1 hcs hcs  275320 2009-12-19 06:51 margitka.100116_1949   
-rw-r--r-- 1 hcs hcs      80 2009-12-19 06:51 localrc_dorsu.vim.100101_1112
-rwx--x--x 1 hcs hcs   10335 2009-12-19 06:51 Video.091222_1754            
-rwxr-xr-x 1 hcs hcs    1255 2009-12-19 06:51 Update.091222_1754           
-rwxr-xr-x 1 hcs hcs     716 2009-12-19 06:51 SshMaker.091222_1754  

Это тратит немного места на диске, так как все версии всех файлов сохраняются . Так что, возможно, стоит периодически их архивировать и сжимать. Я попробовал несколько инструментов для сжатия набора файлов резервных копий, и "rar" с параметром "-s" был лучшим. 100 мегабайт файлов резервных копий были созданы за последние три месяца, и "rar -s" сжали их до 3 МБ.

0
ответ дан 13 December 2019 в 22:05
поделиться

Если вы пойдете по этому пути "автокоммита", всегда убеждайтесь, что такая история локальна. Как Russell Steen прокомментировал, автоматические контрольные точки - это не то, чему место в любой опубликованной, рекламируемой ветке. Ее можно сохранить для локальных ссылок, но в противном случае это просто неухоженный беспорядок, непригодный для публикации.

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

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

В частности, там упоминается другой скрипт, который не "крадет текущую ветку" и лучше использует команды plumbing (но необъяснимым образом все еще использует git add вместо git ls-files и git update-index).

В целом, написать сценарий, который будет делать то, что вы хотите, не так уж и сложно. Сделать это правильно (используя plumbing, не топчась на активной ветке (что легко при использовании plumbing) и т.д.) - немного больше усилий, но это стоит того ради тех знаний о Git, которые вы получите в процессе работы.

Вы даже можете использовать старую shell-реализацию git-commit в качестве отправной точки (и хорошего примера сантехники и того, как ее использовать).

Чтобы получать контрольную точку на регулярной основе, просто вставьте скрипт, подобный этому, в crontab.

1
ответ дан 13 December 2019 в 22:05
поделиться

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

Взгляните на это для использования Ruby в Eclipse - http://www.ibm.com/developerworks/opensource/library/os-rubyeclipse/

0
ответ дан 13 December 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: