Svn репозиторий перестал работать с svn + ssh (но работает локально на сервере) - PullRequest
5 голосов
/ 14 марта 2011

У меня был репозиторий svn, который я использовал для извлечения по протоколу svn + ssh. В нем есть некоторые ВНЕШНИЕ, которые ссылаются на себя с помощью URL svn + ssh.

Я был от этого проекта некоторое время до сегодняшнего дня. Когда я пытаюсь получить доступ к URL-адресу svn + ssh (который работал несколько месяцев назад), я получаю сообщение svn: No repository found in 'svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository. Я дважды проверил, и путь и имя хоста верны.

Я попытался проверить его на компьютере, на котором размещен репозиторий, используя URL-адрес file://, и он преуспел до тех пор, пока ему не пришлось извлекать ВНЕШНИЕ УСТРОЙСТВА, где произошел сбой с сообщением No repository. Я использовал одного и того же пользователя локально и удаленно.

Где искать журналы / отладочную информацию для решения этой проблемы?

Ответы [ 4 ]

2 голосов
/ 12 января 2014

Спасибо, что познакомили меня со стразами. Я использовал strace для отладки, почему команда:

svn+ssh://HOSTNAME/path/to/svn/directory

не распознает эту строку в ~ / .ssh / config:

Host HOSTNAME

Чтобы использовать strace, в разделе [tunnels] ~ / .subversion / config. Я изменил это:

ssh = ssh -o ControlMaster=no

к этому:

ssh = strace -o tmp ssh -o ControlMaster=no

Затем я запустил эту команду:

svn list svn+ssh://HOSTNAME/path/to/svn/directory

Глядя на выходные данные strace, которые вошли в файл "tmp", я увидел, что "HOSTNAME" был передан команде ssh как "hostname". Быстрое решение было изменить эту строку в ~ / .ssh / config:

Host HOSTNAME

на это:

Host HOSTNAME hostname

Что заставляет специфические настройки хоста применяться независимо от того, передается ли имя хоста ssh как "HOSTNAME" или "hostname".

1 голос
/ 14 марта 2011

Я нашел свой путь до конца.Я пишу это здесь для дальнейшего использования.

РЕДАКТИРОВАТЬ: Оказывается, коллега изменил этот файл без уведомления.Однако найти причину проблемы было труднее, чем идеально.

Короче говоря: даже если я использовал URL svn+ssh://my-correct.hostname.com/the/right/path/to/the/repository, реальный путь поиска на сервере был /var/svn/the/right/path/to/the/repository.Действительно неверный путь.Но я думаю, что шаги, которые я сделал, чтобы найти это, могут быть полезны для других, поэтому я сообщу о них здесь.

Сначала я переместил (на сервере) / usr / bin / svnserve в / usr / bin/svnserve.orig и поместите свой собственный svnserve с этим содержимым:

#!/bin/bash
strace -o /tmp/svntrace /usr/bin/svnserve.orig $@ | tee /tmp/svnserve-out

Затем я снова запускаю проверку, и после этого /tmp/svntrace на сервере имел в своем хвосте всю информацию, необходимую для устранения неполадок.проблема.

Кажется, что в файле /var/svn/svnwrapper.sh новый корень для svn был установлен с опцией -r.После удаления все это работало как шарм.

Я до сих пор не могу понять, что произошло (раньше это работало, и я почти уверен, что ничего не изменил).

1 голос
/ 14 марта 2011

Я не знаю, где вы можете найти журналы, но я думаю, что вы можете удалить / изменить свойство externals в этом каталоге с помощью этой команды:

svn propedit svn:externals path/to/dir

см: http://svnbook.red -bean.com / о / 1,0 / ch07s03.html

0 голосов
/ 03 февраля 2018

strace помогли изолировать проблему. Мой репозиторий был расположен в / var / svn / repos, но трассировка показала, что ему не удалось найти / repos / format. Я добавил символическую ссылку в / repos, указывающую на / var / svn / repos, и она снова заработала.

...