Существует ли инструмент, который автоматически сохраняет пошаговые изменения в файлах при кодировании? - PullRequest
5 голосов
/ 16 марта 2010

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

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

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

Ответы [ 6 ]

5 голосов
/ 16 марта 2010

VIM

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

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

3 голосов
/ 24 марта 2010

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

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

1 голос
/ 17 марта 2010

Если вы идете по этой дороге «автокоммит», всегда храните такую ​​историю локально. Как прокомментировал Рассел Стин , автоматические контрольные точки не относятся к каким-либо опубликованным, рекламируемым веткам. Это хорошо, чтобы сохранить для локальных ссылок, но в противном случае это просто неумелый беспорядок, непригодный для публикации.

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

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

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

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

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

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

1 голос
/ 16 марта 2010

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

0 голосов
/ 24 марта 2010

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

Обратите внимание на использование Ruby в Eclipse - http://www.ibm.com/developerworks/opensource/library/os-rubyeclipse/

0 голосов
/ 17 марта 2010

Также 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()

Пример того, как мой *Каталог 1015 * выглядит следующим образом:

$ 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 МБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...