Jump to content
vlzsilver

git-svn нету

Recommended Posts

Добрый день.

Можно ли добавить git-svn ?

Очень давно уже были заведены SVN с несколькими проектами, хотелось бы их синхронить периодически себе на роутер

Keenetic II 2.06

Share this post


Link to post
Share on other sites

Тоже интересуюсь данным вопросом.

Правда установить "чистый" 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 by Ujim

Share this post


Link to post
Share on other sites
18 минут назад, Ujim сказал:

гугл подсказал что проблема в том что perl ставится в /opt/bin/perl, во время как должен быть /usr/bin/perl
символической ссылкой решить не получается

Нужно редактировать скрипты установки, скорее всего.

 

Не забудьте поставить пакет `git-http`

Edited by zyxmon

Share this post


Link to post
Share on other sites
3 hours ago, zyxmon said:

Нужно редактировать скрипты установки, скорее всего.

подскажите что именно
 

Quote

Не забудьте поставить пакет `git-http`

Это поставил, без него были проблемы с https

Share this post


Link to post
Share on other sites
2 минуты назад, Ujim сказал:

подскажите что именно

Как минимум hardcoded путь к perl, если есть.

Share this post


Link to post
Share on other sites

Вот шаги которые позволяют на данный момент мне настроить почти "рабочий" 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-gitolite
https://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 by Ujim

Share this post


Link to post
Share on other sites
36 минут назад, Ujim сказал:

(Возможно какой либо из пакетов может быть лишним или наоборот что-то недостает, поправьте кто знает)

 

FYI: perl в openwrt (и в Entware) разбит на 100+ маленьких пакетов. Я всегда предлагал тем, кому нужен perl устанавливать все prelbase пакеты одной командой

opkg list | grep perlbase- | sed 's/ - .*//' | xargs opkg install

 

Share this post


Link to post
Share on other sites

Выложил ключи пользователя на локальной машине в папку "C:\Users\User\.ssh" и теперь 
Репозитории создаются последовательно в "неограниченном" количестве, но пока что с "финтом"

1 hour ago, Ujim said:

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


su git
cd ~
mkdir repositories/test.git/hooks

 

Share this post


Link to post
Share on other sites

su вводить не нужно - по умолчанию Вы и так root. А симлинк не пробовали создать, который установщик не осилил?

Share this post


Link to post
Share on other sites
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 by Ujim

Share this post


Link to post
Share on other sites
11 минуту назад, Ujim сказал:

Логинюсь как root, потом переключаюсь на git путем su git.

Тогда проще логиниться как git.

Share this post


Link to post
Share on other sites
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 by Ujim

Share this post


Link to post
Share on other sites

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 by stuhin

Share this post


Link to post
Share on other sites
3 hours ago, stuhin said:

git не ставил, чистый svn стабильно работает на entware-ng и entware-keenetic

Спасибо, может кому пригодится.

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

Share this post


Link to post
Share on other sites

А есть ли у нашего гита какие средства для автоматической синхронизации с битбукетом?

Share this post


Link to post
Share on other sites
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'

 

Share this post


Link to post
Share on other sites
On 13.11.2017 at 12:54 AM, Sergey S said:

Сетап прошел успешно и клон репозитория я себе на клиентской машине выполнил.

Но не получается теперь запушить комит. Может кто продвинулся дальше?

Как писал выше, мне удалось создать и работать с несколькими репозиториями по описанной мною выше схеме.
Работал правда не долго, пока флешка от СканДиск на 128 Гб не приказала долго жить, после этого с гитом пока не работал больше

Share this post


Link to post
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...