Про системы контроля версий
Oct. 23rd, 2013 09:13 pmКогда-то давно существовала система контроля версий cvs.
Вся она состояла из одного бинарника размером меньше мегабайта (под виндой чуть меньше, под линуксом чуть больше) и фактически не имела внешних зависимостей (один zlib. который недолго и статически вкомпилить).
Потом появилась subversion. Как сейчас помню как лет пять назад собирал эту самую subversion для разных солярисов. Тогда у нас уже была полиси не использовать пакетов с sunfreeware и blastwave, потому что они там без объявления войны меняют библиотеку на несовместимую и при попытке обновиться (что может быть необходимым для установки чего-то нового) ломается уже установленный софт. Поэтому всё: чего нет на software companion мы собирали в пакеты сами. (ну мы - это Мы. Великий и Могучий Утес далее по тексту). Не помню чтобы
filin хотя бы один пакет для Solaris-а тогда собрал.
Так вот subversion уже требовала немерянноо количества всяких достаточно сложных в сборке библиотек - libneon. которая тащит openssl, sqlite etc. Под восьмой солярис-спарк я возился чуть ли не сутки.
С тех пор subversion еще немного подросла и, оказывается черепаховый svn под windows носит с собой собственный plink.
Теперь вот попробовал поставить на винду git. И обнаружил что он тащит с собой как бы не полную msys включая bash и perl. А также ssh. (Кстати вот msys-овский rsync надо пощупать). Правда: у git продвинутый инсталлятор - он находит в системе уже имеющийся plink от черепахи. Нашел бы наверное и от putty, если бы тот был в PATH.
Всё-таки работа в GNU системе развращает. Привыкаешь что под рукой есть куча разнообразных инструментов. И то что в других системах их наличие тебе никто не гарантирует оказывается несколько неожиданным. Приходится с собой таскать.
И это я еще не рассматривал почти полностью скриптовый mercurial.
Вся она состояла из одного бинарника размером меньше мегабайта (под виндой чуть меньше, под линуксом чуть больше) и фактически не имела внешних зависимостей (один zlib. который недолго и статически вкомпилить).
Потом появилась subversion. Как сейчас помню как лет пять назад собирал эту самую subversion для разных солярисов. Тогда у нас уже была полиси не использовать пакетов с sunfreeware и blastwave, потому что они там без объявления войны меняют библиотеку на несовместимую и при попытке обновиться (что может быть необходимым для установки чего-то нового) ломается уже установленный софт. Поэтому всё: чего нет на software companion мы собирали в пакеты сами. (ну мы - это Мы. Великий и Могучий Утес далее по тексту). Не помню чтобы
Так вот subversion уже требовала немерянноо количества всяких достаточно сложных в сборке библиотек - libneon. которая тащит openssl, sqlite etc. Под восьмой солярис-спарк я возился чуть ли не сутки.
С тех пор subversion еще немного подросла и, оказывается черепаховый svn под windows носит с собой собственный plink.
Теперь вот попробовал поставить на винду git. И обнаружил что он тащит с собой как бы не полную msys включая bash и perl. А также ssh. (Кстати вот msys-овский rsync надо пощупать). Правда: у git продвинутый инсталлятор - он находит в системе уже имеющийся plink от черепахи. Нашел бы наверное и от putty, если бы тот был в PATH.
Всё-таки работа в GNU системе развращает. Привыкаешь что под рукой есть куча разнообразных инструментов. И то что в других системах их наличие тебе никто не гарантирует оказывается несколько неожиданным. Приходится с собой таскать.
И это я еще не рассматривал почти полностью скриптовый mercurial.
no subject
Date: 2013-10-24 10:15 am (UTC)git мне не понравился ужасно, а вот mercurial я полюбил и держу свои мелочи в нем, и на https://bitbucket.org/victor_sudakov вместо гитхаба.
http://victor-sudakov.dreamwidth.org/172181.html
no subject
Date: 2013-10-24 01:37 pm (UTC)Вообще же всегда можно вписать нужное в переменную окружения GIT_SSH.
Кроме того, у стандартного plink.exe есть (спорная, надо отметить) проблема: все вопросы типа "доверять ли серверу вот с таким отпечатком ключа?" при первом подключении к оному серверу эта программа задаёт строго на той консоли, с которой запущена -- или на своём stdin, если она запущена Git'ом, и тогда никто этот вопрос никогда не увидит. TortoiseSvn (и, вероятно, TortoiseGit) включают свой патченый plink.exe, который умеет подобный вопрос задавать при помощи GUI окна, "вылезающего из ниоткуда" (и поэтому автор PuTTY не хочет реализовывать такое в своём plink.exe). Так что если установлено TortoiseНечто, можно использовать его собственный TortoisePlink.exe в GIT_SSH.
А по поводу систем управления версиями, реализованных в виде одной программы, следует посмотреть на фоссиль: http://http://www.fossil-scm.org/ -- она полностью self-hosting, включая web UI и сервер (тоже с web UI). К сожалению, по возможностям до Git ей очень далеко, но есть сильные стороны. Собрать руками можно как полностью статическую версию (под Linux -- глупо, из за DNS-резолвера) или с зависимостью только от libc, libc + libz или libc + libz + libssl.
no subject
Date: 2013-10-25 03:59 am (UTC)Да. это правильно что plink при попытке запустить неинтерактивную сессию с сервером, ключ которого сменился, нафиг обломает.
Потому что смена ключа сервера или попытка прийти на сервер с неизвестным ключом - это ну не то чтобы ужас-ужас, но ситуация требующая принятия отвественного решения.
no subject
Date: 2013-10-23 05:38 pm (UTC)no subject
Date: 2013-12-13 11:02 am (UTC)Ггг
no subject
Date: 2013-10-23 05:43 pm (UTC)Не, это на самом деле хорошо, что поддержка Windows XP заканчивается. Потому что у меня у самого не хватит силы воли перейти с привычной системы на что-нибудь другое. Зато, если уж всё равно переходить, то на седьмой Дебиан проще, чем на седьмую Windows. :-)
... Отсутствие убеждений - не самая надёжная защита ...
no subject
Date: 2013-10-23 05:47 pm (UTC)no subject
Date: 2013-10-23 06:13 pm (UTC)(no subject)
From:no subject
Date: 2013-10-24 11:21 am (UTC)Поясню: cygwin намерянно сделан полностью несовместимым с идеологией винды. Извините ребята, если бы мне нужен был *nix я бы на нем и сидел. А так мне нужны просто GNU утилиты, но совместимые с виндой, без проблем с путями, кодировками, устройствами и т.д. В этом плане GnuWIN32 на порядок юзабельнее.
ЗЫ Я сам иногда использую cygwin, но только когда нет альтернативы.
(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-10-23 05:56 pm (UTC)no subject
Date: 2013-10-23 06:12 pm (UTC)Меркуриал с собой носит питон и кучу его либ, 32 мега на винде занимает.
no subject
Date: 2013-10-23 06:24 pm (UTC)"Здесь так принято".
no subject
Date: 2013-10-24 06:03 am (UTC)(no subject)
From:no subject
Date: 2013-10-23 06:27 pm (UTC)no subject
Date: 2013-10-23 06:47 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-10-23 06:57 pm (UTC)no subject
Date: 2013-10-23 08:27 pm (UTC)требующий "системной" установки
(no subject)
From:(no subject)
From:no subject
Date: 2013-10-23 06:57 pm (UTC)no subject
Date: 2013-10-23 06:59 pm (UTC)no subject
Date: 2013-10-23 07:30 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-10-23 08:11 pm (UTC)no subject
Date: 2013-10-23 08:26 pm (UTC)Абсолютно лучшая на сегодня для малых - до средних проектов,
интегрировано все (3 "продукта") в один небольшой бинарник,
кроссплатформенная и т.д и т.д
(no subject)
From:(no subject)
From:no subject
Date: 2013-10-23 08:16 pm (UTC)no subject
Date: 2013-10-24 02:18 am (UTC)no subject
Date: 2013-10-23 08:24 pm (UTC)(a) сделана автором sqlite, т.е. качетвенный код
(б) один executable мегабайта в 1-1.5
(в) кроссплатформенна (т.е. бинарник делается
без проблем под любую ОС - или скачивается, если вы ленивы)
(г) в нее интегрирован мини-вебсервер, и она представляет вебн-
интерфейс для:
-- графического дерева версий
-- интегрированную систему квиточков для багов и вики
Также может показывать статические документы из-под веб сервера
-- временной шкалы всех commits, tickets, wiki entries and edits
-- диффы side-by=side
(д) очень, очень проста в употреблении. On-line help (командная строка)
(e) сильная криптография держит всю историю, которую невозможно поменять
задним числом
(ж) по-настоящему распределенная система контроля версий
Можете с друзьями ее использовать в виде распределенного мини-блога, если угодно.
Обновлять можно ее заставить ходить скриптом. Хотя не годится по скорости,
захлебнется после сотни-другой друзей.
Но как Distributed Version Control System - лучшая на сегодня.
Гит перетягивает только в быстродействии и возможности работать с
по-настоящему большими проектами.
Но Гит поразительно нелогичен и громоздок в своих командах, так что
я помню писал файл с aliases -тобы переназвать команды Git'а
логичным образом.
no subject
Date: 2013-10-24 04:01 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-10-24 07:53 am (UTC)no subject
Date: 2013-10-25 11:41 am (UTC)... У врагов могут быть нужные вещи ...
(no subject)
From:no subject
Date: 2013-10-24 09:50 am (UTC)msysgit порт не от команды разработчиков git ?
no subject
Date: 2013-10-24 11:27 am (UTC)Речь идет о дистрибутиве, раздаваемом на http://git-scm.com - куда уж официальнее?
no subject
Date: 2013-10-24 11:42 am (UTC)Вот текст который я думал запостить в https://github.com/msysgit/git/issues
================gitbash.md=================
Git Bash incompatible with Windows command prompt?
It is possible to include in msysgit package new version of Bash?
Currently version is:
```
sh --version
```
>GNU bash, version 3.1.0(1)-release (i686-pc-msys)
>Copyright (C) 2005 Free Software Foundation, Inc.
In this issue i compare this version of bash with port from Cygwin
```
\cygwin\bin\sh --version
```
>GNU bash, version 4.1.10(4)-release (i686-pc-cygwin)
>Copyright (C) 2009 Free Software Foundation, Inc.
Problem overview
================
As i see, Git Bash not properly parse its command line. In windows environment
it must first strip down double quotes from command line arguments. Consider next example:
(All examples runs from Windows command prompt, not Bash!)
```
\git\bin\sh -xc "echo "$@"" "A" "B" "C"
```
>+ 'echo "B"' '"C"'
>"A": echo "B": command not found
As you can see double quotes not stripped and command was fail.
Compare with:
```
\cygwin\bin\sh -xc "echo "$@"" "A" "B" "C"
```
>+ echo B C
>B C
All works as suspected!
What does that mean for msysGit?
================================
It's mean that any subcommand with arguments that git run using 'sh' will fail. I'm novice in Git
and currently take only two pitfalls that related to this bug:
1. Cloning of local repository fail
```
D:\Git>git init --bare Test
```
>Initialized empty Git repository in D:/Git/Test/
```
D:\Git>git clone --no-hardlinks Test/ Dev1
```
>Cloning into 'Dev1'...
>"git-upload-pack 'D:/Git/Test/'": git-upload-pack 'D:/Git/Test/': No such file or directory
>fatal: Could not read from remote repository.
>
>Please make sure you have the correct access rights
>and the repository exists.
2. Credential helpers not worked
```
git config --global credential.helper wincred
git credential fill
```
>"git credential-wincred get": git credential-wincred get: command not found
When i manually replace shell (by copying sh.exe and related dlls from Cygwin) then problems disappear.
==========================================
У кого-нибудь подобные симптомы были? Возможно я криворукий, но два поставленных пакета gitextensions на разных машинах по разными виндами (XP и 7) дали одинаковый результат :(
no subject
Date: 2013-10-25 11:43 am (UTC)А ведь если подумать, какова ирония! Естественно, в любой нормальной системе должно быть можно просто
набрать lsоткрыть .docx :-)... Random (or maybe Merlin) cookie ...
no subject
Date: 2013-11-01 10:28 am (UTC)no subject
Date: 2013-11-01 11:22 am (UTC)Скорее жизнеспособным вариантом является держать винду в виртуалке или на физически соседней машине, а разработку вести кросс-средствами.