vlzsilver Posted October 6, 2016 Share Posted October 6, 2016 Добрый день. Можно ли добавить git-svn ? Очень давно уже были заведены SVN с несколькими проектами, хотелось бы их синхронить периодически себе на роутер Keenetic II 2.06 Quote Link to comment Share on other sites More sharing options...
Ujim Posted October 9, 2016 Share Posted October 9, 2016 (edited) Тоже интересуюсь данным вопросом. Правда установить "чистый" Git разобрался как, даже работает. А вот при попытке облагородить его пакетами "gitosis" или "gitolite" не получается В первом случае процесс останавливается на ошибке: [Errno 13] Permission denied: '/opt/lib/python2.7/site-packages/test-easy-install-7697.write-test' The installation directory you specified (via --install-dir, --prefix, or the distutils default setting) was: /opt/lib/python2.7/site-packages/ Во втором: sh: gitolite/install: not found гугл подсказал что проблема в том что perl ставится в /opt/bin/perl, во время как должен быть /usr/bin/perl символической ссылкой решить не получается Keenetic Giga II прошивка v2.06 Edited October 9, 2016 by Ujim Quote Link to comment Share on other sites More sharing options...
zyxmon Posted October 9, 2016 Share Posted October 9, 2016 (edited) 18 минут назад, Ujim сказал: гугл подсказал что проблема в том что perl ставится в /opt/bin/perl, во время как должен быть /usr/bin/perl символической ссылкой решить не получается Нужно редактировать скрипты установки, скорее всего. Не забудьте поставить пакет `git-http` Edited October 9, 2016 by zyxmon Quote Link to comment Share on other sites More sharing options...
Ujim Posted October 9, 2016 Share Posted October 9, 2016 3 hours ago, zyxmon said: Нужно редактировать скрипты установки, скорее всего. подскажите что именно Quote Не забудьте поставить пакет `git-http` Это поставил, без него были проблемы с https Quote Link to comment Share on other sites More sharing options...
zyxmon Posted October 9, 2016 Share Posted October 9, 2016 2 минуты назад, Ujim сказал: подскажите что именно Как минимум hardcoded путь к perl, если есть. Quote Link to comment Share on other sites More sharing options...
Ujim Posted October 11, 2016 Share Posted October 11, 2016 (edited) Вот шаги которые позволяют на данный момент мне настроить почти "рабочий" git-репозиторий Данные шаги создают не до кона рабочий репозиторий, буду признателен помощи в дальнейшей настройке Первоначально устанавливаем пакеты которые понадобятся нам в последствии opkg update opkg install git perl perlbase-essential perlbase-getopt perlbase-findbin perlbase-cwd perlbase-config perlbase-file perlbase-data perlbase-bytes perlbase-xsloader openssh-keygen perlbase-fcntl perlbase-io perlbase-symbol perlbase-selectsaver perlbase-errno perlbase-base (Возможно какой либо из пакетов может быть лишним или наоборот что-то недостает, поправьте кто знает) Затем создадим пользователя git, зайдем под ним в консоль, перейдем в домашний каталог и генерируем ssh ключ: adduser git su git cd ssh-keygen Скопируем публичный ключ, переименовав его в git.pub: cp ~/.ssh/id_rsa.pub ~/.ssh/git.pub Скачаем исходники gitolite с репозитория github git clone git://github.com/sitaramc/gitolite Далее требуется отредактировать исходники, заменив в файлах все упоминания /usr/bin/perl на /opt/bin/perl в этом поможет Grep Сначала перейдем в папку cd gitolite и выполним команду grep -I -lr -e '/usr/bin/perl' . | xargs sed -i '/#!/s/usr/opt/g' cd ~ mkdir ~/bin gitolite/install -ln ~/bin ~/bin/gitolite setup -pk ~/.ssh/git.pub Вот тут возникает ошибка:FATAL: could not symlink /opt/home/git/.gitolite/hooks/common/update to gitolite-admin.git/hooks at /opt/home/git/gitolite/src/lib/Gitolite/Conf/Store.pm line 371. Вероятно что-то было упущено или не доделано. Мое решение "косыльное" и предполагаемая автоматизированная работа с созданием репозиториев не работает должным образом, но все же работает. в ручную выполним mkdir repositories/gitolite-admin.git/hooks mkdir repositories/testing.git mkdir repositories/testing.git/hooks и снова ~/bin/gitolite setup -pk ~/.ssh/git.pub Теперь скрипт отработает до конца, но впоследствии при создании новых репозиторием придется заходить в терминал и выполнять команду, делать это нужно после заливки новых настроек mkdir repositories/new_name_repo.git/hooks далее нужно скачать на клиентскую машину ранее созданный id_rsa, создать из него git.ppk запускаем "Putty Key Generator" -> "Import key" -> "Save private key" -> "git.ppk" Этот ключ потребуется для клонирования репозитория gitolite-admin.git Клонируем git@domain.com:gitolite-admin.git в моем случае (git@192.168.1.1:gitolite-admin.git) Теперь можно создать тестовый репозиторий открываем файл "gitolite.conf", скаченный из репозитория, и добавляем в него несколько строк для тестового репозитория repo test RW+ = user Создадим для пользователя "user" ключи Запускаем "Putty Key Generator", выставляем параметры ключа: тип ssh2-rsa, битность 2048. "Save private key" -> "user.ppk" Копируем строку из окна "Putty Key Generator" и сохраняем ее как публичный ключ "user.pub" в папку " /keydir" ранее скаченного репозитория Отправляем изменения на сервер. Как и говорилось ранее. при создании репозитория возникнет ошибка, нужно зайти в терминал и выполнить su git cd ~ mkdir repositories/test.git/hooks Источники:http://notessysadmin.com/ustanovka-git-gitolitehttps://wiki.openwrt.org/doc/howto/gitolite Дополнено: после создания нужно в файле "gitolite.conf" добавить пустую строку, сохраненные изменения отправить После чего пользователь "user" сможет клонировать репозиторий "test" Дополнение 2: Выяснилось что при попытке создания следующего репозитория возникает ошибка: FATAL: W any gitolite-admin user DENIED by fallthru (or you mis-spelled the reponame) fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. Другими словами данные шаги не позволяют создать нормальный репозиторий Дополнение 3: Буду признателен любым подсказкам и исправлениям Edited October 11, 2016 by Ujim Quote Link to comment Share on other sites More sharing options...
zyxmon Posted October 11, 2016 Share Posted October 11, 2016 36 минут назад, Ujim сказал: (Возможно какой либо из пакетов может быть лишним или наоборот что-то недостает, поправьте кто знает) FYI: perl в openwrt (и в Entware) разбит на 100+ маленьких пакетов. Я всегда предлагал тем, кому нужен perl устанавливать все prelbase пакеты одной командой opkg list | grep perlbase- | sed 's/ - .*//' | xargs opkg install Quote Link to comment Share on other sites More sharing options...
Ujim Posted October 11, 2016 Share Posted October 11, 2016 Выложил ключи пользователя на локальной машине в папку "C:\Users\User\.ssh" и теперь Репозитории создаются последовательно в "неограниченном" количестве, но пока что с "финтом" 1 hour ago, Ujim said: Как и говорилось ранее. при создании репозитория возникнет ошибка, нужно зайти в терминал и выполнить su git cd ~ mkdir repositories/test.git/hooks Quote Link to comment Share on other sites More sharing options...
zyxmon Posted October 11, 2016 Share Posted October 11, 2016 su вводить не нужно - по умолчанию Вы и так root. А симлинк не пробовали создать, который установщик не осилил? Quote Link to comment Share on other sites More sharing options...
Ujim Posted October 11, 2016 Share Posted October 11, 2016 (edited) 40 minutes ago, zyxmon said: su вводить не нужно - по умолчанию Вы и так root. А симлинк не пробовали создать, который установщик не осилил? не особо силен в этом. Логинюсь как root, потом переключаюсь на git путем su git. ПОнимаю что все действия можно и рутом делать, так как он е ограничен в правах, но вот с путями побаиваюсь что упущу. что касается симлинк , как я понимаю по ошибке:remote: FATAL: could not symlink /opt/home/git/.gitolite/hooks/common/update to test7.git/hooks remote: at /opt/home/git/gitolite/src/lib/Gitolite/Conf/Store.pm line 371. Для создания симлинка на папку /opt/home/git/.gitolite/hooks/common/update должна существовать папка назначения /opt/home/git/gitolite/test7.git/hooks То есть команда такая ln -s /opt/home/git/.gitolite/hooks/common/update /opt/home/git/gitolite/test7.git/hooks но папки /opt/home/git/gitolite/test7.git/hooks тогда этой папки просто не существует. Сейчас попробую все удалить и снова установить с полным пакетом perl Дополнено: Попробовал, положительного результата не принесло. Более того как писал ранее помимо замены /usr/bin/perl на /opt/bin/perl дополнительно заменил все встречающиеся usr на opt. Какой-то правки в скрипте на perl не хватает, его к сожалению я не знаю Edited October 11, 2016 by Ujim Quote Link to comment Share on other sites More sharing options...
zyxmon Posted October 11, 2016 Share Posted October 11, 2016 11 минуту назад, Ujim сказал: Логинюсь как root, потом переключаюсь на git путем su git. Тогда проще логиниться как git. Quote Link to comment Share on other sites More sharing options...
Ujim Posted October 11, 2016 Share Posted October 11, 2016 (edited) 1 hour ago, zyxmon said: Тогда проще логиниться как git. Да собственно пока не напрягает набрать лишние 6 знаков, а если проблему устранить вовсе, то и логинится не придется А симлинк не пробовали создать, который установщик не осилил? Не верно писал команду для симлинка, ошибка в пути была Проблема такова, для ошибки:FATAL: could not symlink /opt/home/git/.gitolite/hooks/common/update to test.git/hooks at /opt/home/git/gitolite/src/lib/Gitolite/Conf/Store.pm line 371. если пытаться создать симлинк вот так ln -s /opt/home/git/.gitolite/hooks/common/update /opt/home/git/repositories/test.git/hooks симлин как я понимаю - это ссылка, так вот если папка "/opt/home/git/repositories/test.git/hooks" не существует, то создается файл "/opt/home/git/repositories/test.git/@hooks" - и вышеуказанная ошибка остается. Но если сначала создать папку и затем создавать симлинк в ручную mkdir /opt/home/git/repositories/test.git/hooks ln -s /opt/home/git/.gitolite/hooks/common/update /opt/home/git/repositories/test.git/hooks то в папке появляется "/opt/home/git/repositories/test.git/hooks@update" и все нормально работает. Погулял по скриптам gitolite, но решить не смог. Может есть тут кто разбирающийся в perl, кто может подсказать, что можно попытаться поправить для преодоления проблемы? Edited October 11, 2016 by Ujim Quote Link to comment Share on other sites More sharing options...
stuhin Posted November 17, 2016 Share Posted November 17, 2016 (edited) git не ставил, чистый svn стабильно работает на entware-ng и entware-keenetic opkg install subversion-server //создаем папку где будем хранить репозитории mkdir -p /opt/srv/svn //стартуем svnserve -d -r /opt/srv/svn --pid-file /var/run/svnserve.pid //добавляем репозиторий svnadmin create /opt/srv/svn/repotest редактируем файлы srv/svn/repotest/conf/svnserve.conf и srv/svn/repotest/conf/passwd под свои нужды Edited November 17, 2016 by stuhin Quote Link to comment Share on other sites More sharing options...
Ujim Posted November 17, 2016 Share Posted November 17, 2016 3 hours ago, stuhin said: git не ставил, чистый svn стабильно работает на entware-ng и entware-keenetic Спасибо, может кому пригодится. Сам пользуюсь гитом согласно приведенной выше схемы, она конечно не идеальна, но вполне работоспособна. Ну а гит все же, в отношении свн имеет серьезное превосходство. Quote Link to comment Share on other sites More sharing options...
Илларион Posted January 16, 2017 Share Posted January 16, 2017 А есть ли у нашего гита какие средства для автоматической синхронизации с битбукетом? Quote Link to comment Share on other sites More sharing options...
Sergey S Posted November 12, 2017 Share Posted November 12, 2017 On 11.10.2016 at 3:39 PM, Ujim said: Погулял по скриптам gitolite, но решить не смог. Может есть тут кто разбирающийся в perl, кто может подсказать, что можно попытаться поправить для преодоления проблемы? Решил двумя способами: 1. Создать папку перед созданием симлинка. В файле /opt/git/gitolite/src/lib/Gitolite/Common.pm в функции sub ln_sf после unlink "$dstdir/$hook"; добавить строку mkpath("$dstdir"); 2. Так как у меня NTFS прошел слух, что из-за этого могут симлинки не работать потому заменил строку создания симлинка на простое копирование файла cp "$srcdir/$hook", "$dstdir/$hook" or croak "could not copy $srcdir/$hook to $dstdir\n"; Для этого подключил в начале модуль: use File::Copy qw(cp); Сетап прошел успешно и клон репозитория я себе на клиентской машине выполнил. Но не получается теперь запушить комит. Может кто продвинулся дальше? $ git push Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 370 bytes | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) fatal: cannot run hooks/update: No such file or directory remote: error: hook declined to update refs/heads/master To gitolite:gitolite-admin ! [remote rejected] master -> master (hook declined) error: failed to push some refs to 'gitolite:gitolite-admin' Quote Link to comment Share on other sites More sharing options...
Ujim Posted November 14, 2017 Share Posted November 14, 2017 On 13.11.2017 at 12:54 AM, Sergey S said: Сетап прошел успешно и клон репозитория я себе на клиентской машине выполнил. Но не получается теперь запушить комит. Может кто продвинулся дальше? Как писал выше, мне удалось создать и работать с несколькими репозиториями по описанной мною выше схеме. Работал правда не долго, пока флешка от СканДиск на 128 Гб не приказала долго жить, после этого с гитом пока не работал больше Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.