2009-12-07 5 views
2

Мы используем 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

+1

Несколько комментариев о образце кода: * Не бросайте SharpSvn.SvnException. * Вместо «throw ex» используйте «throw», таким образом, трассировка стека сохраняется, иначе она возникает из инструкции «throw ex». –

ответ

2

Проверяются файлы непосредственно не поддерживается в Subversion. Что вы можете сделать, и что еще работает в Subversion/SharpSvn 1.6:

  • Оформить заказ на каталог с глубиной = пустой. Это создает рабочую копию без файлов внутри.
  • обновление СВН --set-Depth = файлы FILE1.TXT

Этот кусок кода примера проверяет пустую рабочую копию, и извлекает FILE1.TXT и file2.txt. Если вы выберете file3.txt в более поздней точке аналогично, все 3 файла находятся в записях, и вы сможете выполнять все команды Subversion на них.

using(SvnClient client = new SvnClient()) 
{ 
    SvnCheckOutArgs coArgs = new SvnCheckOutArgs(); 
    coArgs.Depth = SvnDepth.Empty; 

    client.CheckOut(new Uri("http://server/repos/directory"), targetDir, coArgs); 


    SvnUpdateArgs updateArgs = new SvnUpdateArgs(); 
    updateArgs.Depth = SvnDepth.Files; 

    client.Update(Path.Combine(targetDir, new string[] {"file1.txt", "file2.txt"}), updateArgs); 
} 
Смежные вопросы