2013-04-30 5 views
3

использовать sharpsvn. Специфическое изменение logmessage необходимо изменить.sharpsvn logmessage редактировать sharpsvn?

Он реализован как «[show log] - [edit logmessage]» svn.

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

 public void logEdit() 
    { 
     Collection<SvnLogEventArgs> logitems = new Collection<SvnLogEventArgs>(); 

     SvnRevisionRange range = new SvnRevisionRange(277, 277); 
     SvnLogArgs arg = new SvnLogArgs(range) ; 

     m_svn.GetLog(new System.Uri(m_targetPath), arg, out logitems); 

     SvnLogEventArgs logs; 
     foreach (var logentry in logitems) 
     { 
      string autor = logentry.LogMessage; // only read .. 
      // autor += "AA"; 
     } 

     // m_svn.Log(new System.Uri(m_targetPath), new System.EventHandler<SvnLogEventArgs>()); 

    } 
+0

не ясно, что вы пытаетесь спросить? –

+0

sharpsvn 을 이용해 C# 에서 svn 의 '[edit logmessage]' 처럼 작동 하게 만들고 싶습니다. из C#, используя sharpsvn, как '[edit logmessage]' svn хотел бы заставить его работать. – user2334401

ответ

0

Насколько мне известно, SharpSvn (а также клиенты, как правило, SVN) обеспечивает в основном доступ только для чтения, и не позволит вам редактировать сообщения журнала в хранилище. Однако, если у вас есть доступ администратора и вам нужно отредактировать сообщение журнала, вы можете указать do it yourself.

+1

Это, безусловно, возможно, см. Мой ответ немного –

2

Каждое сообщение журнала в Subversion хранится как свойство ревизии, то есть метаданные, которые идут с каждой ревизией. См. complete list of subversion properties. Также посмотрите на this related answer и Subversion FAQ. Соответствующий ответ показывает, что то, что вы хотите сделать, это что-то вроде:

svn propedit -r 277 --revprop svn:log "new log message" <path or url> 

На стандартном репозитории это вызывает ошибку, потому что поведение по умолчанию является то, что свойства ревизии не могут быть изменены. См. FAQ entry об изменении сообщений журнала о том, как изменить это с помощью привязки репозитория pre-revprop-change.

Перевод на SharpSvn:

public void ChangeLogMessage(Uri repositoryRoot, long revision, string newMessage) 
{ 
    using (SvnClient client = new SvnClient()) 
    { 
     SvnSetRevisionPropertyArgs sa = new SvnSetRevisionPropertyArgs(); 

     // Here we prevent an exception from being thrown when the 
     // repository doesn't have support for changing log messages 
     sa.AddExpectedError(SvnErrorCode.SVN_ERR_REPOS_DISABLED_FEATURE); 

     client.SetRevisionProperty(repositoryRoot, 
      revision, 
      SvnPropertyNames.SvnLog, 
      newMessage, 
      sa); 

     if (sa.LastException != null && 
      sa.LastException.SvnErrorCode == 
       SvnErrorCode.SVN_ERR_REPOS_DISABLED_FEATURE) 
     { 
      MessageBox.Show(
       sa.LastException.Message, 
       "", 
       MessageBoxButtons.OK, 
       MessageBoxIcon.Information); 

     } 
    } 
}