Как стать автором
Обновить

Контроль изменений в рабочих директориях

Разработка веб-сайтов
Вероятно, у каждого разработчика есть рабочая папка с чекаутами (svn) и клонами (git, hg) разных проектов. Называют ее по разному: workspace, work, src и т.д.

Бывает ли такое, что Вы забываете закоммитить или запушить изменения в рабочих директориях? Даже если ответ — не часто, но бывает, то Вам стоит познакомиться с утилитой unpushed. Она помогает поддерживать рабочую папку с проектами всегда в чистом и консистентном состоянии.

Например, у меня в папке ~/workspace около 20-ти проектов от разных репозиториев. По каким-либо причинам я хочу этот workspace удалить. Перед этим нужно проверить, точно ли все закоммичено. В ручную сделать это не очень то и быстро. Так и родился этот скрипт.

Под катом краткий обзор программы.

unpushed — это Python программа. Устанавливается с помощью pip или easy_install:
$ sudo pip install unpushed
или
$ pip install --user unpushed

Используется очень просто. Чтобы вывести список всех незакоммиченых и незапушеных изменений в рабочей папке ~/workspace:
$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)

В настоящий момент поддерживаются следующие VCS:
  • Mercurial
  • Git
  • Subversion

По-умолчанию unpushed использует locate(1) для поиска репозиториев в рабочей папке с проектами. Также можно использовать простой find(1), если у Вас не работает locate:
$ unpushed -w ~/workspace
О других ключах командной строки можно узнать, вызвав утилиту с опцией --help.

Desktop уведомления

$ unpushed-notify ~/workspace
вызовет unpushed и покажет уведомление на рабочем столе (в Linux через библиотеку libnotify), если есть изменения. Удобно делать вызов этой утилиты по расписанию. Для этого запустите редактор crontab для Вашего(!) пользователя:
$ crontab -e
и добавьте строку, типа этой:
*/10 18-20 * * * unpushed-notify ~/workspace
После этого, Ваша рабочая папка будет сканироваться каждые 10 минут в конце рабочего дня. Если будут обнаружены незакоммиченые изменения, то будет выводиться сообщение на рабочий стол.

Ограничения

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

Desktop уведомления работают только под Linux с использованием библиотеки pynotify, т.е. на всех современных дистрибутивах.

Disclaimer

Это форк проекта uncommited. Добавил поддержку незапушеных веток и Desktop уведомлений. Реализовал для себя, лишь потом подумал, что возможно это еще кому-нибудь пригодится. Поэтому утилита ограничена в основном использованием под Linux для Git.

Если у кого-нибудь возникнет желание добавить поддержку уведомлений для других ОС или поддержку веток в Hg — велкам. Приму ваш pull request на гитхабе.
Теги:githgmercurialsvnsubversionunpushed
Хабы: Разработка веб-сайтов
Всего голосов 15: ↑11 и ↓4 +7
Просмотры1.3K

Похожие публикации

Веб-дизайнер
от 40 000 ₽Территория РостаМожно удаленно
Веб-разработчик
от 50 000 до 60 000 ₽CharltonsМожно удаленно
Веб-дизайнер
от 80 000 ₽Синергия-ИнфоМоскваМожно удаленно
Веб-дизайнер
до 150 000 ₽ITSOFTМоскваМожно удаленно
Разработчик Unity
от 150 000 ₽ArcaniteМожно удаленно

Лучшие публикации за сутки