簡體   English   中英

在SharpSVN中提交

[英]Commit in sharpSVN

我在使用sharpsvn進行提交時遇到問題。 現在,我正在添加工作副本中的所有文件(如果添加了文件,則會引發異常),在此之后,我會提交。 它可以工作,但是引發異常。 在執行add()之前,有某種方法可以獲取存儲庫的狀態,並且僅添加新文件或已更改的文件? 如果我刪除工作副本上的一個文件或文件夾,如何刪除存儲庫中的這些文件或文件夾? 碼:

 String[] folders;
 folders = Directory.GetDirectories(direccionLocal,"*.*", SearchOption.AllDirectories);
 foreach (String folder in folders)
            {
                String[] files;
                files = Directory.GetFiles(folder);
                foreach (String file in files)
                {
                    if (file.IndexOf("\\.svn") == -1)
                    {
                        Add(file, workingcopy);
                    }
                }

            }


            Commit(workingcopy, "change"); 

加:

    public bool Add(string path, string direccionlocal)
    {
        using (SvnClient client = new SvnClient())
        {
            SvnAddArgs args = new SvnAddArgs();
            args.Depth = SvnDepth.Empty;
            Console.Out.WriteLine(path);
            args.AddParents = true;


            try
            {
                return client.Add(path, args);
            }
            catch (Exception ex)
            {
                return false;
            }

        }
    }

承諾:

    public bool Commit(string path, string message)
    {
        using (SvnClient client = new SvnClient())
        {
            SvnCommitArgs args = new SvnCommitArgs();


            args.LogMessage = message;
            args.ThrowOnError = true;
            args.ThrowOnCancel = true;

            try
            {
                return client.Commit(path, args);
            }
            catch (Exception e)
            {
                if (e.InnerException != null)
                {
                    throw new Exception(e.InnerException.Message, e);
                }

                throw e;
            }
        }
    }

你嘗試過類似的東西嗎

using(SvnClient client = new SvnClient())
{
   SvnAddArgs aa = new SvnAddArgs();
   aa.Depth = SvnDepth.Infinity;
   aa.Force = true;

   client.Add(rootDir, aa);
}

添加文件?

這應該都尚未將文件添加到您的工作副本中。 (相當於svn add --force <dirname>

如果您告訴您得到哪種異常,這將有所幫助。 Subversion庫可以返回數千種不同的錯誤代碼。 其中大多數都有有趣的消息文本。

SharpSvn將所有特定的Subversion錯誤嵌套為內部異常。 最后,您的代碼刪除了外部異常,並釋放了其余異常的堆棧跟蹤。 在外部異常上使用.ToString()應該會為您提供最佳的錯誤文本。 (對於與svn.exe類似的錯誤輸出,您需要合並所有.Messages)

另請參閱此其他答案以獲取更多建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM