Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Добрый день.

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

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

Keenetic II 2.06

Опубликовано (изменено)

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

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

Изменено пользователем Ujim
Опубликовано (изменено)
18 минут назад, Ujim сказал:

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

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

 

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

Изменено пользователем zyxmon
Опубликовано
3 hours ago, zyxmon said:

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

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

Quote

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

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

Опубликовано (изменено)

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

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

 

Изменено пользователем Ujim
Опубликовано
36 минут назад, Ujim сказал:

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

 

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

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

 

Опубликовано

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

1 hour ago, Ujim said:

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


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

 

Опубликовано (изменено)
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 не хватает, его к сожалению я не знаю :(

Изменено пользователем Ujim
Опубликовано (изменено)
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, кто может подсказать, что можно попытаться поправить для преодоления проблемы?

Изменено пользователем Ujim
  • 1 месяц спустя...
Опубликовано (изменено)

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 под свои нужды

Изменено пользователем stuhin
Опубликовано
3 hours ago, stuhin said:

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

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

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

  • 1 месяц спустя...
  • 9 месяцев спустя...
Опубликовано
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'

 

Опубликовано
On 13.11.2017 at 12:54 AM, Sergey S said:

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

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

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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.