2012-02-14 5 views
0

Я использую SharpSVN, чтобы выполнить команду "Выполнить" после переименования файлов в моей локальной копииSharpSvn Local File Rename Commit

а не делать Svn.Delete(Src) -> Svn.Add(Dst).
я хочу использовать другой метод, чтобы сохранить трассировку ревизии данные моего файла

Функция переименования переместить данные в Server-Side,
от старой цели к новой цели с помощью Svn. RemoteMove() функция.

Как скопировать «svn-infos» в Local-Side?

Я попытался сделать cl.Move(src,dst) в моем локальном файле,
, но я получаю сообщение о том, что исходный файл не найден.

Вот мой код:

private string SvnRepository = "http://svnserver/svn/repo/trunk/"; 

public void Start() { 
    System.IO.File.Move("c:\\LocalSvn\\1.txt", "c:\\LocalSvn\\2.txt"); 
    SvnRename("c:\\LocalSvn\\1.txt", "c:\\LocalSvn\\2.txt"); 
} 
private Uri RelativePath(string sFullPath) { 
    return new Uri(SvnRepository + sFullPath.Replace(Path, "").Replace('\\', '/').Substring(1)); 
} 
public void SvnRename(string sPath, string sOldPath) { 
    using (SvnClient cl = new SvnClient()) { 
     Uri UriFrom = RelativePath(sOldPath); 
     Uri UriTo = RelativePath(sPath);     
     cl.RemoteMove(UriFrom,UriTo 
      , new SvnMoveArgs { LogMessage = "Rename From:" + sOldPath + " To:" 
      + sPath }); 
     //Local 
    } 
} 

ответ

0

я только что узнал, что cl.Delete() cl.Add() сохраняя историю файла так что я не нужен cl.RemoteMove(), чтобы помочь мне, чтобы отслеживать на файл!

1

SvnClient.Move() должен работать для этого сценария использования. Вы уверены, что точный корпус на диске используется для вашего вызова Move().

Subversion чувствителен к регистру. SvnTools.GetNormalizedFullPath() и SvnTools.GetTruePath() могут помочь, если вы не уверены.

1

Осторожно с помощью:

cl.Delete(file) 
cl.Add(file) 

Он не может работать только из коробки. Если, например, файл был переименован из:

file = "asdf" 

к:

file = "Asdf" 

вы должны держать локальный файл:

cl.Delete(file, new new SvnDeleteArgs() { KeepLocal = true }) 

в противном случае последующее дополнение не получится, так как локальный файл более недоступен, и его больше нельзя добавлять.