2009-04-17 2 views
8

Я хочу настроить свой компьютер так, чтобы каждые полчаса он автоматически фиксировал программу, над которой я работаю. Я использую репозиторий svn, так что даже если это был только скрипт, который запускал «svn ci» каждые 30 минут, это было бы хорошо. Проблема в том, что я не знаю, как это сделать.Как сделать Subversion (или любую программу) выполнять периодические коммиты?

Может ли кто-нибудь, пожалуйста, рассказать мне или направить меня к чему-то, что позволит мне получить эту периодическую работу?

Заранее спасибо.

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

+0

Вы хотите проверить в вашем коде автоматически каждые 30 минут? Зачем вам это нужно? –

+0

Пояснение. –

+0

Ваши регулярные коммиты также покажут график разработки кода, а также будут содержать полезные комментарии. Если вам просто нужен снимок всего, как только он изменится, просто используйте что-то вроде локальной истории Eclipse или Time Machine на Mac. – Thilo

ответ

5

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

Тогда мое предложение: используйте репозиторий для своего программного обеспечения и еще один для хранения автоматических коммитов. Когда работа выполнена, объедините все автоматические коммиты в основном репозитории только в одном логическом коммите.

С мерзавцем, я хотел бы сделать это:

  1. Repo 'Foo': главный репозиторий
    1. ссылки/главы/...: расположение ваших ветвей разработки
    2. рефов/session/...: местоположение вашей работы с грязными фиксациями.
  2. Ваша рабочая копия:
    1. "мерзавец INIT"
    2. "мерзавец удаленного добавить Foo мерзавец: // Foo/..., мерзавец принести Foo"
  3. создать ветку : "Git Checkout -b бара Foo/мастер"
  4. тег Начальных ветвей: "мерзавец тег barbegin"
  5. активировать скрипт:. «, а правда, делать мерзавец добавить -A, мерзавец совершить -m«autocomm Это'; сделано»
  6. я бы не использовать хрон работу, так что вы можете активировать/деактивировать autocommits легко.
  7. делать свою работу
  8. после того, как вашу работу, отключить скрипт
  9. совершить в ожидании изменения
  10. прямо сейчас , у вас есть много авто совершает в отраслевом баре, и вы отметили первоначальное обязательство филиала с barbegin
  11. опубликовать ваш автомобиль совершает:
    1. «мерзавец тег Barend»
    2. "мерзавец толчок Foo barbegin: ссылки/сессии/ваш идентификатор пользователя/идентификатор сессии/начать"
    3. "GIT толчок Foo Barend: ссылки/сессии/ваш идентификатор пользователя/идентификатор сессии/конец"
  12. теперь вы опубликовали свою работу, и ваш преподаватель может получить доступ к этому
  13. для обновления репозитория Foo:
    1. «мерзавец перебазироваться -i --onto barbegin barbegin» и действуйте, как описан here
    2. Я сквош все комм его: «в конце концов, может быть только один».
    3. "мерзавец толчок Foo бар: мастер" # только один совершить будет выталкиваться
  14. уборка:
    1. "мерзавец тег -d barbegin"
    2. "мерзавец тег -d Barend"
    3. "GIT отделения-бар -d"

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

1

Если вы работаете с ароматом UNIX, подумайте о создании задания cron для запуска команд с регулярным интервалом.

6

Вы можете попробовать задание cron, которое запускает сценарий оболочки. На какой ОС вы работаете?

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

+0

Я запускаю Ubuntu Linux (GNU/Linux), если вы хотите получить придирчивый. И я объяснил в редакции, что именно лектор хочет, чтобы мы видели изменения со временем (хотя он не рекомендовал svn, это была моя идея). Я знаю, что это плохая практика программирования, но я думаю, что она сделает то, что я хочу. Ищу работу cron сейчас. –

+0

Аналогичное примечание: вместо неправильного использования SVN вы также можете просто нажимать все файлы на FTP-сервер через равные промежутки времени. – Joey

+0

Это не неправильное использование подрывной деятельности. Как он увидит изменения со временем, если он использует FTP? –

5

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

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

Совершенно возможно со всеми вкусами make, и я знаю, что Visual Studio имеет события до и после сборки, которые можно настроить так, чтобы сделать что-то подобное. Поэтому я уверен, что большинство современных IDE могут справиться с этим.

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

+0

+! это неопределенное показательное местоимение. Я не думаю, что «cron» - хорошая идея. Трудно сказать, где закончится ваш пост, учитывая порядок сортировки. – ojblass

+0

Я отвечал на вопрос, а не на какие-либо ответы. Но я понимаю, что вы имеете в виду. –

+0

Было разъяснено, почему я хочу этого. Это не хорошая практика кодирования, но это продемонстрировало бы хорошие изменения во времени. –

12

Вопреки очевидному общественному мнению, я считаю, что это большое использование svn в контексте задания.

Инструменты, такие как kdesvn (или даже лучше, tortoisesvn, но это только на окнах), могут дать вам хорошее представление о том, что происходит с их видами журналов, различиями и винами.

Если вы используете ubuntu, запустите этот сценарий bash с консоли, которая отделена от той, над которой вы работаете.

#!/bin/bash 
while [ 1 ] 
do 
     # Do the commit 
     svn ci --message "Automated commit" ~/yourworkingcopy 

     # Wait until next commit time 
     sleep 1800 
done 
+0

+ 1 для скрипта. Спасибо. –

2

Я хотел бы использовать Subversion, но я бы вместо того, чтобы просто войти в привычку работать на холостых изменений и comitting те в хранилище.

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

Смежные вопросы