Как получить фабрикатор для наблюдения за локальным git-хранилищем - PullRequest
0 голосов
/ 18 мая 2018

Я сталкиваюсь с ошибкой при попытке увидеть локальный репозиторий git в phabricator.Репозиторий находится на той же машине, на которой запущен фабрикатор, и я считаю, что у него есть все необходимые разрешения, но фаб не может распознать путь.Кто-нибудь еще сталкивался с подобной проблемой?Как вы решили?Заранее благодарю за любые рекомендации.

Основная ошибка:

phabricator-ssh-exec: Unrecognized repository path "/var/repos/git/test". Expected a path like "/diffusion/X/", "/diffusion/123/", or "/source/thaumaturgy".

Шаги, которые я предпринял для настройки наблюдаемого хранилища:

Created a new repository in phabricator

Set the following (all) default URIs to "read only"
    ssh://git@phabricator.localhost.com:2222/diffusion/1/test Read Only Hidden
    ssh://git@phabricator.localhost.com:2222/source/test  Read Only Visible
    ssh://git@phabricator.localhost.com:2222/diffusion/TEST/test  Read Only Hidden

Created a 4th URI and set it to observe:
    ssh://git@phabricator.localhost.com:2222/var/repos/git/test Observe Hidden 

Set up credentials for that URI successfully

Activated respository

Полная ошибка фабрикатора:

Raw Error
Error updating working copy: Command failed with error #128!
COMMAND
git ls-remote '********'

STDOUT
( empty)

STDERR
Warning: Permanently added '[phabricator.localhost.com]:2222' (ECDSA) to the list of known hosts.
phabricator-ssh-exec: Unrecognized repository path "/var/repos/git/test". Expected a path like "/diffusion/X/", "/diffusion/123/", or "/source/thaumaturgy".
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Краткое резюме:

Я тоже пытался использовать test.git.Каталог / var / repos / git / test существует и равен 775 (чтение, запись, выполнение) по группе wdev, членами которой являются myuser и git

Я не могу понять, где phabricator ищет эти каталоги,Я ожидал от корня моего сервера, но / diffusion / X наиболее точно не находится в корне моего сервера.Я делаю неправильное предположение?

Я попытался 3 других URI, все из которых не удалось с той же ошибкой.Я предоставил дополнительную информацию ниже.

tl; dr

Дополнительные шаги, приводящие к той же ошибке:

1.  Changed URI to ssh://git@phabricator.localhost.com:2222/var/repos/git/test.git
2.  Changed URI to ssh://git@phabricator.localhost.com:2222/home/myuser/local-repos/git/test.git
3.  Changed URI to ssh://git@phabricator.localhost.com:2222/home/myuser/local-repos/git/test

Мой фабрикаторПользователь SSH:

[myuser@localhost ~]$ cat /etc/passwd |grep git
git:x:1002:1003::/var/repos/git:/bin/bash

[myuser@localhost ~]$ cat /etc/group |grep wdev
wdev:x:1001:myuser,apache,phd,git

[myuser@localhost ~]$ sudo cat /etc/shadow |grep git
git:NP:17669:0:99999:7:::

[myuser@localhost ~]$ sudo cat /etc/sudoers.d/phabricator-sudoers
git All=(phd) SETENV: NOPASSWD: /usr/bin/ls, /usr/bin/git, /usr/bin/git-upload-pack, /usr/bin/git-receive-pack, /usr/bin/ssh
apache All=(phd) SETENV: NOPASSWD: /usr/bin/git, /usr/bin/git-http-backend
myuser All=(phd) SETENV: NOPASSWD: /var/www/phabricator/phabricator/bin/phd

Phabricator Пользователь SSH может ssh:

[myuser@localhost ~]$ echo {} | ssh -p 2222  git@phabricator.localhost.com conduit conduit.ping
{"result":"localhost.localdomain","error_code":null,"error_info":null}

Разрешения на путь к тестовому хранилищу

[myuser@localhost apache2-php7-postgres]$ cd /var

[myuser@localhost var]$ ls -ltrh |grep repos
drwxrwxr-x.  3 myuser wdev   4.0K May  2 16:21 repos

[myuser@localhost var]$ cd repos

[myuser@localhost repos]$ ls -ltrh |grep git
drwxrwxr-x. 4 myuser wdev 4.0K May 18 08:00 git

[myuser@localhost repos]$ cd git

[myuser@localhost git]$ ls -ltrh
total 4.0K
drwxrwxr-x. 7 myuser wdev 4.0K May  2 16:47 test

[myuser@localhost git]$ cd test

[myuser@localhost test]$ ls -alrh
total 40K
drwxrwxr-x. 4 myuser wdev 4.0K May  2 16:47 refs
drwxrwxr-x. 7 myuser wdev 4.0K May  2 16:47 objects
drwxrwxr-x. 2 myuser wdev 4.0K May  2 16:47 info
drwxrwxr-x. 2 myuser wdev 4.0K May  2 16:47 hooks
-rw-rw-r--. 1 myuser wdev   23 May  2 16:47 HEAD
-rw-rw-r--. 1 myuser wdev   73 May  2 16:47 description
-rw-rw-r--. 1 myuser wdev   66 May  2 16:47 config
drwxrwxr-x. 2 myuser wdev 4.0K May  2 16:47 branches
drwxrwxr-x. 4 myuser wdev 4.0K May 18 08:00 ..
drwxrwxr-x. 7 myuser wdev 4.0K May  2 16:47 .

[myuser@localhost test]$ pwd
/var/repos/git/test

Затем я клонировал тестовое хранилище, запустив

cd /home/myuser/local-repos/git/
git clone /var/repos/git/test

Я изменил URI для использования / home / myuser / local-repos / git / test

Каталог разрешений и содержимого клона

[myuser@localhost home]$ ls -ltrh |grep myuser
drwx------. 25 myuser myuser 4.0K May 18 08:10 myuser

[myuser@localhost home]$ cd myuser/

[myuser@localhost ~]$ ls -ltrh |grep local-repos
drwxrwxr-x. 3 myuser wdev     4.0K May  2 16:13 local-repos

[myuser@localhost ~]$ cd local-repos/

[myuser@localhost local-repos]$ ls -altrh
total 12K
drwxrwxr-x.  3 myuser wdev     4.0K May  2 16:13 .
drwxrwxr-x.  3 myuser wdev     4.0K May 18 08:00 git
drwx------. 25 myuser myuser 4.0K May 18 08:10 ..

[myuser@localhost local-repos]$ cd git

[myuser@localhost git]$ ls -altrh
total 12K
drwxrwxr-x. 3 myuser wdev 4.0K May  2 16:13 ..
drwxrwxr-x. 3 myuser wdev 4.0K May  2 16:47 test
drwxrwxr-x. 3 myuser wdev 4.0K May 18 08:00 .

[myuser@localhost git]$ cd test

[myuser@localhost test]$ ls -altrh
total 16K
-rw-rw-r--. 1 myuser wdev    3 May  2 16:47 init.txt
drwxrwxr-x. 3 myuser wdev 4.0K May  2 16:47 .
drwxrwxr-x. 8 myuser wdev 4.0K May  2 16:47 .git
drwxrwxr-x. 3 myuser wdev 4.0K May 18 08:00 ..

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Получил работу для моей установки.

Я использовал моего пользователя phabricator ssh (git) для этого нового ssh URI и оказалось, что пользователь не может наблюдать за репо, который уже существует в локальной файловой системе.Я изменил URI для использования обычного ssh на порту 22 (не ssh от phabricator, который работает на порту 2222) и на ssh в качестве моего пользователя:

ssh://myuser@phabricator.localhost.com/var/repos/git/test Observe Hidden 

Так что теперь у меня есть следующие URI, настроенные для этого предварительно- существующее локальное репо:

ssh://myuser@phabricator.localhost.com/var/repos/git/test Observe Hidden 
ssh://git@phabricator.localhost.com:2222/diffusion/1/test Read Only Hidden
ssh://git@phabricator.localhost.com:2222/source/test  Read Only Visible
ssh://git@phabricator.localhost.com:2222/diffusion/TEST/test  Read Only Hidden

И Фаб наблюдает за моим хранилищем!

Я не знаю, является ли это стандартным, но для меня, для моих целей сейчас, это работает.Если у кого-то есть другие предложения или идеи, я бы хотел их услышать.

0 голосов
/ 22 мая 2018

Попробуйте удалить 4-й (ваш) URL-адрес и измените ssh://git@phabricator.localhost.com:2222/source/test на режим Наблюдение .Ошибка вызвана тем, что URL-адрес должен указывать не на сам каталог (в файловой системе), а на URL-адреса, которые были созданы Phabricator для указания на него.

...