Мы используем dll SharpSVN 1.5 для наших функциональных возможностей управления версиями. Наш контроль и CheckIn работает как follwsВопросы по замене dll SharpSVN 1.5 на SharpSVN 1.6 dll
Предположим, я хочу, чтобы оформить название папки TEST и его содержат 3 файлов говорят file1.txt, file2.txt, file3.txt
Шаг 1: - заказ file1.txt из SVN-репозитория
Шаг 2: - заказ file2.txt из SVN репозитория
Шаг 3: - заказ file3.txt из SVN репозитория
во время работы file1.txt извлекаете .svn папка создается в нашей рабочей папке. Эта папка .svn содержит файл с именем в виде записей. Этот файл содержит информацию о файле репозитория svn и файл checkout (мы можем видеть его открытым через блокнот). Когда была выполнена операция проверки file2.txt (Checkout в ту же рабочую папку), не произошло никакого создания папки .svn. Sharpsvn использует существующий .svn fiolder (предыдущая папка с файлом checks .svn) и добавляет файл file2.txt в файл записей. То же самое произошло при проверке файла file3.txt в той же рабочей папке.
Во время проверки сначала проверьте файл file1.txt, затем файл2, затем файл3. Svn использует одну папку .svn (в рабочей папке) для всех этих файлов для проверки. В файле file1.txt проверьте, что файл записей содержит свою информацию, поэтому этот файл попадает под контроль версии svn, и он может успешно проверяться. Аналогичным образом file2. txt и file3.txt
Теперь мы пытаемся использовать dll SharpSVN 1.6, но сталкиваемся с некоторыми проблемами в checkout и checkin.
Во время создания файла file1.txt .svn создается папка и файл с файлами содержит файл file1.txt. При проверке файла2.txt существующий .svn-foder удаляется и создается новая папка .svn. Такие записи содержат только файл file2.txt info not file1.txt info.Когда я пытаюсь проверить, последний файл, который я проверил из svn, проверяется только на svn.Это связано с тем, что файл с файлами в .svn-папке содержит только последнюю информацию об извлеченном файле.
Мне нужно, чтобы все файловые данные в записи файла с помощью sharpsvn 1.6 DLL
Мой фрагмент кода следующим образом
public string[] CheckOut(string pSCPath, string pComment, string pLocalPath, int pRevisionNum)// Checks out a file from svn
{
string[] strCheckoutDetails = new string[2];
Uri uriSCPath = new Uri(pSCPath);
SvnCheckOutArgs objChkoutargs = new SvnCheckOutArgs();
objChkoutargs.Revision = pRevisionNum;
SvnInfoEventArgs info;
try
{
objChkoutargs.Depth = SvnDepth.Empty;
string strSingleFiletoCheckout = uriSCPath.ToString();
string strFolderNameofSingleFileSelected = strSingleFiletoCheckout.Remove(strSingleFiletoCheckout.LastIndexOf('/'));
Uri UriSingleFileCheckout = new Uri(strFolderNameofSingleFileSelected);
_objSVNClient.CheckOut(uriSingleFileCheckout, pLocalPath,objChkoutargs); //empty working folder
SvnTarget target = new Uri(strSingleFiletoCheckout);
string strFileNameonlyfromUri = strSingleFiletoCheckout.Substring(strSingleFiletoCheckout.LastIndexOf("/") + 1);
if (!copyFiletoWorkingCopy(pLocalPath, strFileNameonlyfromUri, _objSVNClient)) //make versioned file available to the current working copy - Biju
{
pLocalPath = "";
throw new SharpSvn.SvnException("Checkout Exception");
}
_objSVNClient.GetInfo(uriSCPath, out info);
strCheckoutDetails[0] = info.LastChangeRevision.ToString();
}
catch (Exception ex)
{
pLocalPath = "";
throw ex;
}
strCheckoutDetails[1] = pLocalPath;
return strCheckoutDetails;
}
Благодарности
Reji
Несколько комментариев о образце кода: * Не бросайте SharpSvn.SvnException. * Вместо «throw ex» используйте «throw», таким образом, трассировка стека сохраняется, иначе она возникает из инструкции «throw ex». –