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

в 15:02, , рубрики: Git, Mercurial, subversion, svn, разработка, метки: , , ,

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

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

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

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 и покажет уведомление на рабочем столе (через библиотеку 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 на гитхабе.

Автор: Nailgun


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js