Я уже некоторое время искал, как проверить ревизию и вернуться, если произошли изменения. То, что я работает, но мне интересно, если есть лучший/уборщик путь:Лучший способ проверить изменения версии SVN в каталоге и вернуть их, если изменения найдены
bool needToUpdate = false;
Process process = new Process();
var info = new ProcessStartInfo("svn", string.Format(@"status -u {0}", directoryInto.FullName));
process.StartInfo = info;
process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
{
if (!String.IsNullOrEmpty(e.Data))
{
string data = e.Data;
//This if statement is what I have an issue with.
if (data.Contains("!"))
needToUpdate = true;
}
});
Как вы можете видеть, я проверяю строку, чтобы найти в строке (!). Это не очень хорошая практика, поэтому я вижу, сможет ли кто-нибудь помочь мне с лучшим решением или получить лучший способ получить стандартный вывод из SVN (я не спрашиваю, как это сделать, я спрашиваю лучше путь, чем у меня уже есть) Буду признателен!
Спасибо!
EDIT Использование SharpSVN
Я теперь с помощью SharpSVN и я имею проблему с IsRemoteUpdate, кажется, всегда возвращает истину:
bool needToUpdate = false;
using (SvnClient client = new SvnClient())
{
SvnStatusArgs statusArgs = new SvnStatusArgs();
statusArgs.RetrieveAllEntries = true;
statusArgs.RetrieveRemoteStatus = true;
client.GetStatus(directoryInto.FullName, statusArgs, out statuses);
for (int i = 0; i < statuses.Count(); i++)
{
if (statuses[i].IsRemoteUpdated)
{
needToUpdate = true;
break;
}
}
}
Не могли бы вы скажите мне, почему это всегда возвращает true, даже когда мой каталог обновлен?
Edit # 2 Я так добавил:
if (statuses[i].LocalContentStatus == SvnStatus.Missing || statuses[i].LocalContentStatus == SvnStatus.Modified)
есть лучший способ сделать это?
Вместо того, чтобы вводить внешнюю зависимость ('svn.exe') и выполнять накладные расходы при нерестах внешнего процесса, используйте [SharpSVN] (https://sharpsvn.open.collab.net/), который обеспечивает поддержку SVN через библиотека. – alroc
Если вы придерживаетесь 'svn.exe', попробуйте вывод XML для более детерминированного анализа. –
@alroc Поскольку у нас уже установлены черепахи на машинах, я считаю, что лучше использовать их, а не получать еще одну установку, которую все должны будут получить. Нажато войти слишком рано, спасибо за ваш комментарий! – i73