代码之家  ›  专栏  ›  技术社区  ›  jan

使用SharpSVN添加文件

  •  5
  • jan  · 技术社区  · 17 年前

    我首先在命令行上尝试了常规的svn命令:

    C:\temp\CheckoutDir> svn status -v
    

    C:\temp\CheckoutDir> svn add . --force
    

    这将导致子目录中所有已受版本控制的新文件被添加。

    ...
    using ( SharpSvn.SvnClient svn = new SvnClient() )
    {
        SvnAddArgs saa = new SvnAddArgs();
        saa.Force = true;
        saa.Depth = SvnDepth.Infinity;
        try
        {
            svn.Add(@"C:\temp\CheckoutDir\." , saa);
        }
        catch (SvnException exc)
        {
            Log(@"SVN Exception: " + exc.Message + " - " + exc.File);
        }
    }
    

    但引发了一个SvnException:

    我也试着打电话

    svn.cleanup()
    

    就在添加之前,但无济于事。

    documentation 相当模糊;),

    3 回复  |  直到 17 年前
        1
  •  5
  •   Mathias F    16 年前

    http://svncompletesync.codeplex.com/ 或者将其作为样本。

        2
  •  2
  •   sbonkosky    11 年前

    string _localCheckoutPath = @"C:\temp\CheckoutDir\";
    SvnClient client = new SvnClient();
    
    Collection<SvnStatusEventArgs> changedFiles = new Collection<SvnStatusEventArgs>();
    client.GetStatus(_localCheckoutPath, out changedFiles);
    
    //delete files from subversion that are not in filesystem
    //add files to suversion , that are new in filesystem
    
    foreach (SvnStatusEventArgs changedFile in changedFiles)
    {
        if (changedFile.LocalContentStatus == SvnStatus.Missing)
        {
            client.Delete(changedFile.Path);
        }
        if (changedFile.LocalContentStatus == SvnStatus.NotVersioned)
        {
            client.Add(changedFile.Path);
        }
    }
    
    SvnCommitArgs ca = new SvnCommitArgs();
    ca.LogMessage = "Some message...";
    
    client.Commit(_localCheckoutPath, ca);
    
        3
  •  1
  •   Sander Rijken    17 年前

    我认为你不应该在路径后面加上“,”。尝试:

    svn.Add(@"C:\temp\CheckoutDir" , saa);