Надеюсь, это не слишком расплывчато. Я пишу приложение для запуска после фиксации на нашем сервере SVN. Когда я запрашиваю URI репозитория, я иногда получаю ответ, который не соответствует пути моего коммита.
Вот как я получаю аргументы фиксации в целом (отредактировано, чтобы добавить больше деталей):
public Collection<SvnLogEventArgs> GetCommitArgs(string strUri, long lngRevision)
{
try
{
using (SvnClient client = new SvnClient())
{
SvnLogArgs args = new SvnLogArgs();
Collection<SvnLogEventArgs> col;
args.Start = lngRevision;
args.End = lngRevision;
bool bolGotLog = client.GetLog(new Uri(strUri), args, out col);
return col;
}
}
catch
{
return null;
}
}
Но вот как я получаю URI репозитория (GetRepository () просто переформатирует его, чтобы он выглядел как URL-адрес):
colCommitArgs = GetCommitArgs(args[0], long.Parse(args[1]));
strRepository = GetRepository(args[0] + "/" + colCommitArgs[0].ChangedPaths[0].RepositoryPath.ToString());
args[0]
на самом деле относится к набору аргументов, переданных из фиксации. Я обнаружил, что ChangedPaths иногда бывает пустым.
Например, если я фиксирую C: /Repositories/a_repo/somefolder/example.txt, значение, которое я получаю из аргументов фиксации SVN, будет просто C:/Repositories/a_repo/
. Это может быть проблема с нашей настройкой SVN (или моим непониманием этого). Почему одни папки считаются репозиториями, а другие - просто папками? Есть ли способ указать, что папка - это не просто папка? Или в SharpSVN есть другой способ получить зафиксированную папку? В настоящее время я объединяю ChangedPaths[0].RepositoryPath
в конец моего исходного URI.
C:/Repositories/a_repo/
, и, пожалуйста, покажите код, в котором вы объединяетеChangedPaths[0].RepositoryPath
. - person Daniel Hilgarth   schedule 05.10.2015