понедельник, 2 марта 2015 г.

Инструменты для работы с Git – TortoiseGit

Теперь будем рассматривать комплексные утилиты оболочки работы с Git. Начнем TortoiseGit.

Качаем тут.

Скачиваем сам дистриб

TG0001

Я выбрал под свою разрядность вы выбираете под свою.

И если надо там же можно скачать языковый пакет русского языка для TortoiseGit

TG0002

Устанавливаем

TG0003

TG0004

TG0005

TG0006

TG0007

TG0008

Ну и до кучи уж поставим русский язык. В настройках легко можно переключиться на английский.

TG0009

TG0010

Жмем старт и идем в настройки

TG0011

И видим это

TG0012

Далее идем в раздел Git и видим предупреждение на враждебном нам буржуйском языке

TG0013

Что в переводе означает

TG0014

Это нам говорят про это. Ставим галку чтобы нам это больше не показывали. Мы и так про это знаем.

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

TG0015

На скрине ниже я показал этот пункт и весь раскрытый пункт контекстного меню TortoiseGit

TG0016

Ну а теперь кратенько по возможностям программы. По существу все операции с репозиторием Git можно выполнять из графического интерфейса. Глюки в программе есть конечно, но они не сильно страшные.

Из всего этого добра мне понравилось красивый просмотр логов (как раз пункт меню который я оставил):

TG0017

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

И так сравним версии файла из коммита 2 и коммита 4. На коммите 2 делаем правый клик мышью

TG0018

Далее видим скрин что ниже и убираем там все эти нули. Если не убрать то вылетит ошибка и жмем раскрывающийся список RefBrowse

TG0019

TG0020

Далее видим это и выбираем четвертый коммит

TG0021

TG0022

Жмем Compare revisions и видим сравнение файла test.txt из коммитов 2 и 4

TG0023

Так же можно воспользоваться графическим интерфейсом для слияния веток. Но как то оно мне там не очень понравилось. Привычней уже при помощи командной строки это делать и разрешать конфликт уже при помощи графических утилит. Кстати, TortoiseGitMerge можно, так же настроить в Git, как внешние утилиты сравнения и слияния. Что я и сделаю. Об этом читайте в следующем посте.

Цель этого была просто познакомить с TortoiseGit.

Инструменты для работы с Git – ExamDiff Pro

Ну и для полноты картины рассмотрим еще одну программу для сравнения и слияния в Git.
Установка простая, но есть пара пунктиков которые надо отметить. Кратенько по установке:

ED0001

Запоминаем путь установки, его потом будем прописывать в gitconfig

ED0003

Эта прога может сравнивать много чего, включая каталоги, бинарники и т.д. и т.п. Для сравнения некоторых файлов она использует плагины, которые можно посмотреть и скачать тут
http://www.prestosoft.com/edp_plugins.asp

ED0004

ED0006

Чуть чуть донастроим сам ExamDiff. Он может выдавать разные предупреждения. И часто может вылетать вот такое:

ED0008

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

ED0009

И сделаем еще одну настройку, чтобы ExamDiff не создавал .bak файлов в рабочей директории

ED0010

Теперь настраиваем ExamDiff а работу с Git. На сайте ExamDiff есть инструкция как его настраивать, но я немного изменил их вариант, чтобы было так, как удобней мне. Я просто поменял в разделе [difftool "edp"] $REMOTE и $LOCAL местами, относительно того как написано в документации, чтобы файлы из разных коммитов отображались в порядке перечисления коммитов.

В любом случае, если вас не устроят мои настройки вы можете сделать как вам удобнее.
Сразу приведу текстовый вариант настройки:

[diff]
        tool = p4m
        tool = kdiff3
        tool = dm
        tool = dfu
        tool = wm
        tool = ss
        tool = bc4
        tool = araxis
        tool = edp

[difftool "p4m"]
        cmd = "p4merge.exe $LOCAL $REMOTE"

[difftool "kdiff3"]
        path = C:/Program Files/KDiff3/kdiff3.exe

[difftool "dm"]
        cmd = C:/Program\\ Files/DiffMerge/sgdm.exe $LOCAL $REMOTE

[difftool "dfu"]
        cmd = diffusew $LOCAL $REMOTE

[difftool "wm"]
        cmd = winmergeu $LOCAL $REMOTE

[difftool "ss"]
        cmd = smartsynchronize.exe $LOCAL $REMOTE

[difftool "bc4"]
        cmd = bcomp.exe $LOCAL $REMOTE

[difftool "araxis"]
        path = C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe

[difftool "edp"]
        cmd = \"C:/Program Files/ExamDiff Pro/ExamDiff.exe\" \"$LOCAL\" \"$REMOTE\" //nh 


[difftool]
        prompt = false
        keepBackup = false
        trustExitCode = false

[merge]
        tool = p4m
        tool = kdiff3
        tool = dm
        tool = dfu
        tool = ss
        tool = bc4
        tool = araxis
        tool = edp

[mergetool]
        prompt = false
        keepBackup = false
        keepTemporaries = false

[mergetool "p4m"]
        cmd = "p4merge.exe $BASE $LOCAL $REMOTE $MERGED"
        trustExitCode = true
 

[mergetool "kdiff3"]
        path = C:/Program Files/KDiff3/kdiff3.exe

[mergetool "dm"]
 cmd = C:/Program\\ Files/DiffMerge/sgdm.exe -merge -result=$MERGED $LOCAL $BASE $REMOTE 

[mergetool "dfu"]
        cmd = diffusew $MERGED $LOCAL $BASE $REMOTE

[mergetool "ss"]
        cmd = smartsynchronize.exe $LOCAL $REMOTE $MERGED
        trustExitCode = false

[mergetool "bc4"]
        cmd = bcomp.exe $LOCAL $REMOTE $BASE $MERGED
        trustExitCode = true

[mergetool "araxis"]
        path = C:\\Program Files\\Araxis\\Araxis Merge\\compare.exe

[mergetool "edp"]
        cmd = \"C:/Program Files/ExamDiff Pro/ExamDiff.exe\" //merge \"$REMOTE\" \"$BASE\" \"$LOCAL\" 
//o:\"$MERGED\" //dn1:\"Remote\" //dn2:\"Base\" //dn3:\"Local\" //dno:\"Output\" //nh

Ну и чтобы понятней было с последней строчкой приведу скрин редактора Far manager

ED0011

Ну а теперь испытываем в работе diff. Даем команду

$ git difftool ffd6b37 c258082 --tool=edp --cc test.txt

И получаем всплывшее окно ExamDiff

ED0013

Теперь проверяем слияние командами

$ git merge newbranch
$ git mergetool --tool=edp


ED0015

Получаем всплывшее окно ExamDiff Pro

ED0014

Разрешаем конфликт, сохраняем и выходим из программы.

Все работает.

воскресенье, 1 марта 2015 г.

Установка и настройка сервера Git на Windows Server (20xx)

Тут я, вкратце, опишу один из возможных вариантов установки сервера Git под Windows Server. Хотя эти рекомендации так же можно применить и для установки сервера Git на обычную рабочую станцию под Windows  от XP и выше.

И так скачиваем дистриб от сель. Кстати там же можете почитать и процедуру установки, там все более просто без заморочек на безопасность и обновления Git под винду до текущей версии.

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

И так скачали. Понеслась установка.

G0001

G0002

G0003

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

G0004

G0004

Ну и все устанавливается. У меня на сервере уже стоит Apache, поэтому его надо было потушить, так как этот Git сервер по умолчанию запускается на портах 80 и 443, но это можно поменять.

И так тушим Apache.

G0005

И запускаем GitStack сразу по окончании установки. Просто оставляем галку включённой.

G0006

Запустится ваш браузер по умолчанию и выведет вас сразу на страничку сервера

G0007

Логинимся с учеткой по умочанию

G0008

Сразу же меняем пароль администратора

G0009

G0010

GitStack по умолчанию запускается под системной учетной записью, что не есть гуд для веб сервиса. Поэтом меняем это дело, на локальную учетку.

G0012

G0011

И перезапускаем сервис. Идем опять в админку сервера и меняем порты на которых он будет висеть.

G0013

Так как у меня сервер находится за файрволом, то я оставил оба и HTTP и HTTPS, развесил их на порты на которых у меня не слушает Apache. Вы можете поставить какие вашей душеньке угодно.

После смены портов естественно в адресной строке надо будет указывать уже порт, чтобы дальше рулить админкой. Рестартуем GitStack

G0016

G0017

Ну и я стартовал свой Apache. У вас этого может и не быть. То есть по ходу у меня запущено два веб сервера.

G0018

Заходим по новому порту и донастраиваем чтобы слушал еще и по HTTPS.

G0014

Проверяем работу HTTPS

G0015

Все теперь можно высовывать морду сервера наружу в большой мир. Но осторожно ….

И чтобы большой мир увидел эту морду надо открыть порт на локальном файрволе сервера, так как по умолчанию GitStack открывает порт 80

G0019

Все, теперь уже можно заходить на сервак удаленно через доменное имя, ну или его внешний IP.

Далее создаем пользователя

GS000102

GS00090

Создаем репозиторий

GS000101

И даем пользователю права на репозиторий

GS00091

GS00092

И еще немного настроек безопасности. Если зайти на сервер без указания папки GitStack то увидим такое

GS000107

Это не есть гуд. Правим указанный файлик настроек

GS000108

Рестартуем вебсервис GitStack и видим уже такую картину.

GS000109

Теперь клонируем репозиторий с нашего сервера на локальную машину

GS000103

Настраиваем локально Git и делаем первый локальный коммит

GS000104

И далее заливаем его на сервер. Но делаем это по особенному, так как у нас на сервере само подписанный сертификат.

GS000105

Все залилось

У сервера достаточно приятная и понятная морда для отслеживания коммитов через веб интерфейс

GS000112

Ну и на последок надо заметить что на момент написания статьи в комплекте с GitStack шла не самая последняя версия Git

GS000110

Я установил последнюю версию Git, переписал пути в переменной PATH и все заработало на новой версии

GS000111

Ну и на последок можно сказать что можно вписать в конфиг проекта строку

$ git config --local http.sslVerify false

Чтобы каждый раз не писать в командах отмену проверки валидности сертификата.

P.S. Существует еще несколько вариантов сервера Git под Windows. Но мне этот как то больше приглянулся.