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

prefs: null,
startup : function()
    {
        // init prefs
        ...
        this.retrieve_rate();
        var context = this;
        this.intervalID = setInterval(function()
                                      {
                                          context.retrieve_rate();
                                      }, this.INTERVAL);
    },

retrieve_rate : function()
    {
        var ajax = null;
        ajax = new XMLHttpRequest();
        ajax.open('GET', 'http://xyz.com', true);
        var context = this;
        ajax.onload = function()
        {
            // access prefs using context.
            // e.g. context.prefs
        }
    }
143
задан git-noob 7 January 2009 в 12:34
поделиться

6 ответов

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

Редактирование: следующая команда фиксирует file.txt, как только она сохраняется:

inotifywait -q -m -e CLOSE_WRITE --format="git commit -m 'autocommit on change' %w" file.txt | sh
116
ответ дан JesperE 7 January 2009 в 12:34
поделиться

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

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

, Например, используйте "АВТОМАТИЧЕСКУЮ ФИКСАЦИЮ" в качестве сообщения о фиксации. Позже, можно записать инструмент для чистки этих фиксаций с помощью журнала мерзавца (для обнаружения изменений для уничтожения), или можно попытаться создать АВТОМАТИЧЕСКУЮ ФИКСАЦИЮ ответвления использовать стратегию твердости коллизии грубой силы стучать в "ручных фиксациях".

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

Наконец, Вы могли скопировать файл в новое имя (" $filename.ac") при выполнении автоматических фиксаций для различения ручные и автоматические версии.

2
ответ дан Aaron Digulla 7 January 2009 в 12:34
поделиться
  • 1
    dispatch_async делает его так, чтобы сам вызов отправки doesn' t блок, пока блок не закончен. При использовании dispatch_sync сама задача выполняется в любом потоке, в котором находится очередь, но Вы блокируете текущий поток, пока задача не сделана. Я don' t думают that' s, в чем Вы нуждаетесь. – Fernando Mazzon 2 January 2013 в 20:43

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

1
ответ дан Hank Gay 7 January 2009 в 12:34
поделиться

Предыдущий ответ inotifywait отличный, но это не совсем полное решение. Как написано, это однократная фиксация однократного изменения файла. Это не работает в общем случае, когда при редактировании файла создается новый индексный дескриптор с исходным именем. inotifywait -m очевидно следует за файлами по индексу, а не по имени. Кроме того, после изменения файла не выполняется постановка для git commit без git add или git commit -a . Внеся некоторые изменения, вот что я использую в Debian для отслеживания всех изменений в моем файле календаря:

/etc/rc.local:


su -c /home/<username>/bin/gitwait -l <username>

/ home / / bin / gitwait:


#!/bin/bash
#
# gitwait - watch file and git commit all changes as they happen
#

while true; do

  inotifywait -qq -e CLOSE_WRITE ~/.calendar/calendar

  cd ~/.calendar; git commit -a -m 'autocommit on change'

done

Это могло быть обобщенным для ожидания списка файлов и / или каталогов и соответствующих процессов inotifywait ,

48
ответ дан 23 November 2019 в 22:36
поделиться

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

0
ответ дан 23 November 2019 в 22:36
поделиться

git-wip - отличное решение, которое мне подходит. { {1}} «НЗП» означает «незавершенное производство». Каждый раз, когда вы запускаете git wip, изменения переносятся в отдельную ветку. Его можно запустить из командной строки, но есть расширения для vim и emacs, позволяющие автоматически запускать git-wip при каждой записи файла.

16
ответ дан 23 November 2019 в 22:36
поделиться
Другие вопросы по тегам:

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