Frage

Ich möchte alle unversionierten Dateien unter einem Verzeichnis mit SharpsVN zu SVN hinzufügen.

Ich habe zuerst reguläre SVN -Befehle in der Befehlszeile ausprobiert:

C:\temp\CheckoutDir> svn status -v

Ich sehe alle Subdirs, alle Dateien, die bereits eingecheckt sind, ein paar neue Dateien mit der Bezeichnung ""? ", Nichts mit der" L "-Schressanzeige

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

Dies führt zu allen neuen Dateien in den Subdirs, die bereits unter der Versionskontrolle selbst hinzugefügt werden.

Ich würde gerne mit Sharpsvn das Gleiche tun. Ich kopiere ein paar zusätzliche Dateien in dasselbe Verzeichnis und führe diesen Code aus:

...
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);
    }
}

Aber eine SvNexception wird angehoben:

  • SvNexception.message: Arbeitskopie 'C: temp Checkoutdir' gesperrt
  • Svnexception.file: .. .. .. subversion libsvn_wc lock.c "

Keine andere SVNClient -Instanz ist in meinem Code, ich habe auch versucht, anzurufen

svn.cleanup()

Kurz vor dem Hinzufügen, aber ohne Erfolg.

Seit der Dokumentation ist ziemlich vage;), ich habe mich gefragt, ob hier jemand die Antwort kannte.

Danke im Voraus!

Jan

War es hilfreich?

Lösung

Verwenden Sie dies mein Werkzeug http://svncompletesync.codeplex.com/ Oder nehmen Sie es als Probe. Es tut genau das, was Sie brauchen.

Andere Tipps

Ich habe Malcolms Tool ausprobiert, konnte es aber jetzt nicht zum Laufen bringen Eins in SVN:

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);

Ich denke, du solltest den Weg nicht mit einem ',' satt. Versuchen:

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

Bitte besprechen Sie dies weiter in der SharpsVN -Diskussions-/Mailingliste, da das Verhalten, das Sie sehen, möglicherweise ein Fehler ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top