Tag Archives: Git

Git auto-complete for Mac

If you faced with problem that out-of-the-box Git under Mac has no auto-complete functionality you can go this way:

curl https://github.com/git/git/raw/master/contrib/completion/git-completion.bash -OL

Copy it to, for example,

cp git-completion.bash ~/.git-completion.bash

Then open your ~/.bash_profile or ~/.profile and append next string

source ~/.git-completion.bash

Thats’s it 🙂

Guitr – the ease of git usage with multi-git-repo-project structure v0.0.6

Today new version 0.0.6 of the Guitr gem was released with following enhancements:

  • git related operations should be silent to not spam if there is nothing to display
  • options resolving logic was rewritten with OptionParser
  • –exec – a new operation allows to invoke commands against repository directory. For example, you can run guitr –exec ‘git status’ command git status will be invoked against repository directory. It will be helpful if you need to perform similar operations against each repository directory but guitr does not support it. Also the command can be any system command.

For now that’s it.

Enjoy playing Guitr 😉

Guitr – the ease of git usage with multi-git-repo-project structure v0.0.4

Recently new version of the guitr ruby gem was pushed and ready to use.

There are following changes were made since my first post about this gem:

  • –unpushed operation – helps to check what was commited but havn’t pushed yet
  • –pull operation was refactored to a standard git pull command
  • –status operation was refactored to a standard git status command as well
  • git operation error stops guitr invocation bug was fixed
  • spec coverage was enhanced

What’s next.

In the future time I’m going to implement push operation and integrate with http://optionparser.rubyforge.org/ to handle command line arguments.

And in the far future time commits, think it can help to have one message for commits across several repositories related to one feature/user story.

That’s it, thanks for your time.

Enjoy playing guitr 😉

Guitr – the ease of git usage with multi-git-per-project structure

Today I’ve pushed a gem to ease of git pull/status actions on multi-modules projects with git repository per project.

What I mean about multi-modules projects – this is a case when you have some modules/projects with separate git repositories. To avoid manually entering into each directory to perform pulling or checking the status you can install guitr and relax a bit 😉

To install guitr use following command:

[sudo] gem install guitr

To check status use following command:

guitr --status [path_to_repo]  #path is optional argument and if not specified guitr will use current directory as a base directory to start walk from.
guitr --pull [path_to_repo] #Invokes git pull per each git working directory

Fow this time that’s it what guitr can do.

Stay up-to-date here http://webdizz.name/posts/guitr.

Enjoy playing guitr 😉

Git colorizing

Доброго времени суток!
Хочу поделиться небольшим, так называемым tips-and-tricks, в использовании Git, а именно в настройке цветовой схемы.
Некоторое время назад я решился поставить на своем лаптопе Kubuntu, что далось мне не так уж и легко, будучи поколнником FreeBSD, но легкость и доступность актуальных версии приложений все таки сделало свое дело. Недостатком в FreeBSD для меня было отсутсвие новых сборок Eclipse, Google Chrome и т.д. Так как работать на Windows уже немного поднаскучило и в виду того, что разработка на работе ведется на Pair Station, то решил и поставил.
Собственно вышеперечисленное вводная предыстория на этом будет завершена.
Для своих “проектиков” я использую Git в качестве системы контроля версий, а именно его консольный вариант. На Windows я использую MsysGit, который мен вполне устраивает, но установив оригинальный Git для Linux, я столкнулся с нехваткой некоторых настроек, а именно цветовой схемы.
Решение было очень простым и как может показаться из этого поста малобуквенным;)
vi ~/.gitconfig
Далее необходимо добавить следующие строки.
[color]
        ui = auto
Этого же эффекта можно достигнуть с помошью следующей комманды.
git config --global color.ui auto
Теперь вы можете наслаждаться цветным выводом всех комманд.
Удачи

Git with Subversion in one place

Доброго времени суток.

Недавно столкнулся с необходимостью настроить новый проект для использования Git в качестве системы контроля версий. Задача была следующей, необходимо иметь дополнительный RSA ключ к основному и обеспечить работу с двумя разными удаленными репозиториями на одной машине, так же нужно учесть что до того как возникла текущая задача исходники проекта хостились в Subersion и нужно так же иметь и его поддрежку для тех, кто еще не перешел на Git.

Опять же как обычно Google рулит 😉 Погуглив, нашел статейку, которая очень помогла. Далее привожу последовательность моих действий.

Предполагается, что у вас уже имеется MsysGit и уже имеется небольшой опыт испоьзования Git.

Первоначально нужно создать RSA ключ для нового Git репозитория это делается следующим образом.

ssh-keygen -t rsa -C "ваш комментарий тут"

И на этом шаге нужно указать другой путь для ключа, например ~/.ssh/project2_id_rsa.

Затем делаем импорт исходников из Subersion в локальный Git репозиторий.

git svn clone http://svn.repo.hostname/trunk local_git_repo

Процесс клона должен пройти, пока он будет вытягивать все исходники мы можем приступить к настройке SSH. Нужно открыть файл в домащней директории пользователя, для Linux это ~/.ssh/config, для Windows – C:\Doc..and Settings\username\.ssh\config. Дописываем в этот файл следующие строчки

Host    project-git-repo-dev
          Hostname=remote-git-repo-host.com
          IdentityFile=~/.ssh/project2_id_rsa

Далее, после того как исходники импортятся в локальный Git репозиторий, нужно открыть файл в директории local_git_repo/.git/config и исправить имя хости удаленного Git репозитория на указанный в SSH конфиге.

[remote "origin"]
       #url = ssh://remote-git-repo-host.com/repo.git
       url = ssh://project-git-repo-dev/repo.git
       fetch = +refs/heads/*:refs/remotes/origin/*

Теперь у вас есть ключ для новогоGit репозитория, мирно существующий со старым.

Далее при изменениях в Subersion репозитории нужно будет выполнить следующие команды.

git svn rebase
git push

При изменениях в локальном Git

git add .
git commit -m "Some nice functionality was added"
git push
git svn rebase
git push
git svn dcommit #эта комманда создать ревизию для каждого комита в Git

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

git stash 
git svn dcommit
git stash apply

На этом все, успехов.