SharpSVN无法提交(...不是工作副本)

时间:2012-07-31 08:30:41

标签: c# .net svn exception-handling sharpsvn

我是SharpSVN的新手。我发现了许多与SharpSVN相关的互联网示例。我还做了一些像Checkout

这样的成功案例

但问题是,我无法调用commit和Add函数:

我想要做的操作是从我的电脑中选择一个文件然后添加到指定的SVN文件夹,如果该文件存在,则应该将其复制为新版本。

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    // FileUpload1.SaveAs("C:\\Users\\user\\Desktop\\crazycodeee\\" + FileUpload1.FileName);
    SvnClient client = new SvnClient();
    client.Authentication.Clear();
    client.Authentication.DefaultCredentials = new NetworkCredential("crazyufuk", "123456");
    SvnCheckOutArgs coArgs = new SvnCheckOutArgs();
    coArgs.Depth = SvnDepth.Infinity;
    // client.CheckOut(new Uri("http://localhost:8080/svn/crazycode/branches/"), "C:\\Users\\TTVERCIN\\Desktop\\crazycodeee");
    Add("C:\\Users\\user\\Desktop\\test_folderl\\");
    Commit("C:\\Users\\user\\Desktop\\crazycodeee", "AS"); 
}

public bool Add(string path)  
{
    using (SvnClient client = new SvnClient())
    {
        SvnAddArgs args = new SvnAddArgs();
        args.Depth = SvnDepth.Empty;
        args.AddParents = true;
        return client.Add(path, args);
    }
}

public bool Commit(string path, string message)  //second
{
    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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

为了将文件添加或提交到SVN存储库,您必须在本地检出相关的存储库。

// client.CheckOut(new Uri("http://localhost:8080/svn/crazycode/branches/"), "C:\\Users\\TTVERCIN\\Desktop\\crazycodeee");

注释掉的代码将代码检出到该根"C:\\Users\\TTVERCIN\\Desktop\\crazycodeee"的存储库,但您添加的文件需要是其子代。

在你的行

Add("C:\\Users\\TTVERCIN\\Desktop\\CSI_headerFooterMenu_prepaid_kurumsal\\");

如果CSI_headerFootermenu_prepaid_kurumsalcrazycodeee文件夹中的位置(并且您注释了结帐行),那么我怀疑它会起作用。