Вопрос или проблема
У меня есть коллекция из дюжины каталогов, которые являются отдельными рабочими копиями различных svn репозиториев. Они настроены одинаково на всех моих машинах, чтобы я мог работать с любым из них в любое время. Я один в этом: никто другой их не использует, и все они используют одни и те же учетные данные, так как все они внутренние. Все рабочие копии были созданы с помощью svn --username=aaa --password=bbb co http://xxxx/svn/yyyy .
на каждой машине.
Я работаю в большинстве из них большинство дней и периодически вызываю сценарий оболочки, который проходит через них все и выполняет svn up
и svn ci -m "stuff"
в каждом из них.
Все это происходит под управлением Linux Mint 19 на всех машинах (и работает безупречно под предыдущими версиями на протяжении многих лет), но на одной машине (ноутбук HP Envy) сценарий возвращает одну и ту же ошибку для каждого из них (имена замаскированы):
svn: E170013: Не удается подключиться к репозиторию по URL 'http://xxxx/svn/yyyy'
svn: E215004: Больше нет учетных данных или мы попытались слишком много раз.
Ошибка аутентификации
Тем не менее, если я вручную выполню svn up
в любом из каталогов, это сработает (т.е. он знает учетные данные)… и затем выполнение сценария работает нормально, и все синхронизировано.
Меня не просят ввести какие-либо данные о ключах (и я не знаю, что какие-либо ключи используются). Поскольку сценарий работает нормально без ручного вмешательства на всех моих других машинах, я был бы признателен за любые указания о том, где искать проблему с этой конкретной машиной.
Я не знаю Mint (хорошо), но проверю как минимум две вещи
- Исполняется ли сценарий под тем же пользователем, под которым вы выполняете
svn up
- Может ли сценарий подключиться (технически) к репозиторию без вмешательства пользователя и сколько раз он пытается это сделать (ожидаемый результат: 1 раз)
Вы также можете добавить жестко закодированные учетные данные в svn up
в качестве крайней меры
Ответ или решение
Вопрос о том, почему Subversion (SVN) не использует ваши учетные данные при выполнении команд в оболочке, может быть сложным. Однако, рассмотрев предоставленную вами информацию, мы можем выделить несколько возможных причин и решений данной проблемы.
1. Проблемы с учетными данными
SVN обычно хранит учетные данные в кешированной форме, поэтому при первом вводе пароля они сохраняются и повторно используются. Однако в некоторых случаях может возникнуть ситуация, когда кэшированные учетные данные недоступны для скрипта, который выполняется в оболочке. Это может быть связано с:
-
Разные пользователи: Убедитесь, что скрипт выполняется от того же пользователя, от которого вы запускаете команду
svn up
вручную. Если скрипт запущен от имени другого пользователя, кэшированные учетные данные не будут доступны. -
Правильные переменные среды: Убедитесь, что у вас корректно настроены переменные среды, такие как
HOME
, которые могут влиять на путь к кешу учетных данных SVN. Этот кэш обычно находится в~/.subversion/auth/
.
2. Поддержка SVN и аутентификация
Некоторые версии SVN могут требовать дополнительных параметров для аутентификации. Ваша команда svn --username=aaa --password=bbb
при создании рабочих копий использует параметры для аутентификации. Однако в вашем скрипте они могут не передаваться корректно. Для устранения проблемы вы можете попробовать задать эти параметры напрямую в скрипте для каждой команды:
svn --username=aaa --password=bbb up /path/to/working/copy
svn --username=aaa --password=bbb ci -m "stuff" /path/to/working/copy
3. Ограничения сети и подключения
Не исключено, что на данном компьютере существуют ограничения касательно подключения к сети:
-
Доступ к интернету: Проверьте настройки сети на HP Envy. Возможно, у вас есть брандмауэр или прокси, которые ограничивают доступ к репозиторию.
-
Ошибки подключения: Стоит убедиться, что сам URL репозитория доступен из этой системы. Попробуйте выполнить
curl
илиping
на адрес репозитория, чтобы подтвердить доступность.
4. Логи и дополнительная отладка
Для более глубокого анализа проблемы полезно использовать команду со включением более детализированного журналирования:
svn --username=aaa --password=bbb up --verbose
Это даст вам возможность увидеть, на каком этапе происходит ошибка, и что именно вызывает сбой аутентификации.
Заключение
Подводя итог, проблема, с которой вы столкнулись, может быть вызвана несколькими факторами, включая неправильную аутентификацию, сетевые настройки или конфликты в кэшировании учетных данных. Следуя предложенным рекомендациям, вы сможете диагностировать и устранить проблему. Если ничего из вышеизложенного не сработает, рассмотрите возможность настройки SSH для аутентификации, что может упростить процесс работы с SVN.