Создание git auto-commit - PullRequest
       95

Создание git auto-commit

142 голосов
/ 07 января 2009

Я бы хотел использовать git для записи всех изменений в файл.

Есть ли способ, которым я могу включить git 'commit', чтобы он происходил автоматически каждый раз, когда файл обновляется - так что для каждого изменения файла есть новый коммит?

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

Ответы [ 16 ]

2 голосов
/ 07 января 2009

Если вы знаете имя файла и хотите отслеживать только один (или несколько файлов), вы можете просто вызывать «git commit» каждые несколько минут, чтобы добиться этого. Если файл не изменился, git просто будет жаловаться, и вам придется игнорировать эту ошибку, но кроме этого, не будет никакого повреждения.

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

Например, используйте «AUTOCOMMIT» в качестве сообщения фиксации. Позже вы можете написать инструмент для очистки этих коммитов, используя git log (чтобы узнать ревизии, которые нужно убить), или вы можете попытаться создать ветку AUTOCOMMIT, используя стратегию разрешения столкновений методом грубой силы, чтобы забить «ручные фиксации». *

Другой вариант - использовать низкоуровневые команды git для создания собственного специализированного хранилища.

И, наконец, вы можете скопировать файл под новым именем («$ filename.ac») при выполнении автоматической фиксации, чтобы различать ручную и автоматическую версии.

1 голос
/ 12 июня 2014

Этот сценарий не запускается, когда пользователь изменяет файл, но его можно запустить как задание cron (поместив его в каталог /etc/cron.*), что также является разумным решением.

Этот скрипт будет перебирать ваш каталог / srv / www (изменить его на место, где хранятся все ваши сайты), добавлять, фиксировать и отправлять все файлы, а также записывать все в /var/log/gitlog.txt

now=$(date +"%m.%d.%Y_%T")
logfile='/var/log/gitlog.txt'

for dir in /srv/www/*/
do
echo -e '\n' >> $logfile
echo "autocommit $dir $now" >> $logfile
echo "--------------------------" >> $logfile

cd $dir
git add . >> $logfile
git commit -am "autocommit $now" >> $logfile
git push origin master >> $logfile
done
1 голос
/ 11 марта 2013

Звучит так, будто вы ищете что-то похожее на etckeeper , которое предназначено для автоматической проверки всех ваших изменений в / etc / * в git (или в любом другом VCS, который вы хотите), но я не вижу причина, по которой его нельзя использовать с файлами, отличными от /etc.

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

1 голос
/ 07 января 2009

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

0 голосов
/ 22 января 2019

Если вы не хотите связываться с кодами и командами linux, тогда я хотел бы предложить вам использовать Dropbox для кодирования. Я обнаружил, что Dropbox отлично подходит для кодирования. Я просто установил dropbox на свой компьютер и создал виртуальный хост. Виртуальный хост указывает на мою папку Dropbox. Всякий раз, когда я делаю изменения в любом файле и нажимаю CTRL + S (то есть, сохраняю), он создает новую версию файла. Я просто обожаю эту технологию, вот польза от использования Dropbox для кодирования.

  • Экономия времени: - Больше нет Push and Pull для товарищей по команде. Вы можете сэкономить свое время, если раздражаете, нажимая и вытягивая коды снова и снова.
  • Прекрасно, если вы работаете с группой разработчиков, если вы установили Dropbox на каждом компьютере разработчика, а затем работаете над одной и той же папкой, если есть какой-либо конфликт, он автоматически создаст конфликтующий файл.
  • если вы случайно удалили какой-либо файл, вы можете восстановить его из облачной корзины
  • Контроль версий при каждом сохранении.

наконец-то я не промоутер Dropbox.

0 голосов
/ 01 июля 2009

У меня была такая же проблема, и на Mac launchd предоставляет вам отличное решение. он будет смотреть файл или каталог, и если есть изменения, вы можете запустить приложение или что-нибудь еще ...

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