Подтверждение переименования локального файла SharpSvn - PullRequest
0 голосов
/ 14 февраля 2012

Я использую SharpSVN, чтобы выполнить «Фиксацию» после переименования файла в моей локальной копии

вместо того, чтобы делать 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
    }
}

Ответы [ 3 ]

1 голос
/ 14 сентября 2012

Остерегайтесь использования:

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

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

file = "asdf"

в:

file = "Asdf"

, необходимо сохранить локальный файл:

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

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

1 голос
/ 16 февраля 2012

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

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

0 голосов
/ 24 февраля 2012

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

...