Frage

Bevor Sie mich nun erschießen, weil ich eine doppelte Frage zu SOF gestellt habe, möchte ich Sie zunächst genau darüber informieren, wonach ich suche. Ich werde dann auf andere Fragen und Antworten eingehen und erläutern, warum dies nicht ausreicht.

Frage 1:

Ich suche nach einer Möglichkeit, kollaborative Live-Bearbeitungen durchzuführen, während die Quelle auf einem zentralen Quellcodeverwaltungsserver verwaltet wird.Zum Beispiel, wenn ich und Joe Blow eine Datei bearbeiten X.cs Gleichzeitig sollten wir in der Lage sein, die Änderungen des anderen während der Eingabe zu sehen.Fast so, als würden wir zusammen am selben Computer sitzen.Nehmen wir nun das folgende Szenario:Ich und Joe gehen offline und Nimha Smith beschließt, Code zu aktualisieren.Wenn ich am nächsten Tag wieder online bin, wird mir der Code angezeigt, den Nimha aktualisiert hat, während ich geschlafen habe bzw. nicht am Server war.

Dies ist eine Kombination aus der Idee der Live-Zusammenarbeit und einem Versionsverwaltungssystem wie SVN usw.

Adressierung der möglichen Duplikate:

Hier gab es eine ähnliche Frage: Kollaborative Bearbeitung für die .NET-Entwicklung – welche Möglichkeiten gibt es?, allerdings bringt es mir nichts Nützliches und ich werde erklären, warum:

  • VsAnywhere:Es läuft über einen zentralen öffentlichen Server (richtige Richtung …), mit der Ausnahme, dass alle beteiligten Parteien genau denselben Code auf ihrem Computer haben müssen, bevor sie einer Sitzung beitreten können, und sobald Sie offline gehen, wird die Sitzung zerstört.
  • SourceMeet:Läuft mit einem P2P-System, also kein Server, der Änderungen im Offline-Modus usw. verfolgt.Ich habe es noch nicht ausprobiert und kann daher nicht bestätigen, wie gut es Code zusammenführen kann (wenn überhaupt).
  • CollabEdit:Nicht VisualStudio
  • Wolke 9:Nicht VisualStudio

Und das gibt es offensichtlich diese Frage Und Dieses hier Das sind Fragen direkt zu Quellcodeverwaltungssoftware wie SVN oder GIT.Jetzt habe ich versucht, VSAnywhere und SVN dazu zu bringen, gut zusammenzuspielen (SVN, um offline vorgenommene Änderungen zu erhalten, und VSAnywhere für die Online-Entwickler), aber es funktioniert einfach nicht.

<edit>

Ich habe kürzlich dieses Bachelorarbeitsprojekt mit dem Namen gefunden Zusammenarbeit, und es scheint eine gute Idee zu sein, aber ich konnte es anscheinend nicht zum Laufen bringen, um es auszuprobieren.Wenn jemand anderes damit Erfolg hat, lassen Sie mich bitte wissen, was Sie getan haben.Es sieht so aus, als wäre es ein guter Anfang, etwas zu schaffen, das meinen Bedürfnissen entspricht, wenn ich dieses Gemeinschaftsprojekt zum Laufen bringen kann.

<edit2>

Ich bin auch darauf gestoßen BeWeeVee das eine Visual Studio-Erweiterung für seinen Dienst hatte, aber alle Links dafür sind nicht mehr vorhanden.Und CodeAlike Das war wahrscheinlich ihr Ersatz für VS-Echtzeitzusammenarbeit. Es gibt einen FAQ-Eintrag, in dem erklärt wird, dass die Echtzeitfunktionen entfernt wurden und in „Zukunft“ erneut implementiert werden.

Frage 2:

Das bringt mich nun zum zweiten Teil meiner Frage, denn mir ist völlig klar, dass es möglicherweise kein Programm gibt, das meinen hohen Ansprüchen gerecht wird.Wo könnte ich anfangen, eine solche Software selbst zu implementieren?Gibt es vorhandenen Open-Source-Quellcodeverwaltungs-/Echtzeitbearbeitungscode, auf dem ich aufbauen kann, um diesen zu erstellen?Oder muss ich bei Null anfangen, wenn ich das umsetzen möchte?Und ich bin sicher, Sie können an den Tags erkennen, dass ich eine solche Aufgabe gerne in C# angehen würde, wenn ich sie überhaupt angehen muss.

Aktualisierung 2017

Da in den Kommentaren weiterhin Interesse geäußert wurde, habe ich ein Raster erstellt, in dem wir alle Interessierten zusammenbringen und dies möglicherweise Wirklichkeit werden lassen können: https://gitter.im/sof-centrailized-collab-editing/Lobby.

War es hilfreich?

Lösung

Wenn Sie dies selbst in Angriff nehmen möchten, möchten Sie es möglicherweise als Visual Studio-Erweiterung tun.Beachten Sie, dass es zwei verschiedene Arten von Plug-Ins gibt:„Add-ons“ und „Erweiterungen“.Persönlich denke ich, dass Sie eine schreiben sollten Verlängerung, aber so oder so können Sie sie in C# schreiben.

Sie müssen sich in den Texteditor von Visual Studio einbinden.Sie können entweder googeln, wie das geht, oder sich einfach ein vorhandenes Beispiel ansehen: eine Visual Studio-Erweiterung für elastische Tabstopps.Ihre Erweiterung muss Ihre Änderungen überwachen, während Sie sie vornehmen, und sie dann über ein von Ihnen entworfenes Protokoll an den Server senden.Sie müssen den Server selbst schreiben, aber in der ersten Version muss er lediglich Ihre Änderungen an alle anderen senden können, die die Erweiterung verwenden.Die Erweiterung würde dann die Bearbeitung durch alle im Editor aller anderen vornehmen.

Wenn sich jemand mit einer älteren Version des Codes mit dem Server verbindet, könnte die Erweiterung einfach die neueste Version vom Server herunterladen.Allerdings, wenn der Benutzer währenddessen Änderungen vorgenommen hat offline (d. h.während Sie nicht mit dem Server verbunden sind), müssen Sie eine clevere Zusammenführung durchführen.Das ist nicht trivial, aber ich weiß, wie es geht, weil ich es schon einmal gemacht habe.Wenn Sie sehr nett fragen, schreibe ich den Zusammenführungsalgorithmus für Sie.Dann müssen Sie ihm nur noch drei Textdateien zuführen:die Basis (die Version, die zuletzt mit dem Server synchronisiert wurde) und die beiden bearbeiteten Versionen (die offline bearbeitete und die neueste vom Server).

Wenn Sie es schaffen, dies zum Laufen zu bringen, werden Sie möglicherweise etwas unschätzbar Nützliches schaffen.Bitte stellen Sie sicher, dass Sie Ihre Arbeit bekannt machen!:) :)

Andere Tipps

Nun, zu sehen, wie andere Leute Dinge eingeben und dann im Editor einen Cursor-Krieg mit ihnen führen, hat Google Wave bereits gemacht.Iirc wurde es als Open Source oder so veröffentlicht, nachdem das Projekt selbst gescheitert war.Es kümmert sich jedoch um alle Ihre Update-Probleme und basiert auf einem zugrunde liegenden Update-Modell, das aus Sicht der Informatik recht robust und solide ist.Es bietet Verlauf und alle möglichen Dinge analog zu einem Quellcodesystem.

Darüber hinaus können Sie das, was Sie möchten, als spezielles Bearbeitungs-Widget implementieren.Wenn Sie gute Arbeit leisten, können Sie Google Wave als nützliche und zweckgebundene Plattform für die kollaborative Bearbeitung wiederbeleben.

Zu VS Anywhere: Zu dem Zeitpunkt, als Sie VSA ausprobiert haben (ungefähr im Mai), war die Softwareversion wahrscheinlich Release Candidate 2 (= fehlerhaft), daher ist es normal, dass Sie einige Probleme mit der SVN-Integration festgestellt haben und wir hatten offene Probleme mit TFS und Git .

Derzeit sind einige dieser SVN-Probleme im neuesten RC3 gelöst. Wir gehen davon aus, dass bald alles für die endgültige Version bereit sein wird

Es besteht die Möglichkeit, Ihre eigene VS Anywhere Server-Instanz in Ihrem LAN auszuführen, sodass Sie unsere öffentlichen Server wirklich nicht verwenden müssen. Wenn Sie Student sind oder ein Open-Source-Projekt haben, ist VS Anywhere Client und Server für Sie kostenlos Wenn dies nicht der Fall ist, handelt es sich um eine kommerzielle Nutzung, für die eine geringe Gebühr anfällt.

Wie Timwi feststellte, ist die Resynchronisation aus der Offline-Codierung nicht trivial und sehr komplex zu implementieren. Wir denken, dass ein SCM das richtige Werkzeug ist, um diese Arbeit zu erledigen, und das liegt daran, dass wir noch nicht in diese Richtung gearbeitet haben, unsere Meinung ist zumindest, bis wir Wenn Sie in diesem Bereich arbeiten, können Sie Standard-SCMs verwenden, um die neuesten Änderungen abzurufen und mit Ihrer lokalen Kopie zusammenzuführen, bevor Sie eine Sitzung einrichten

VSA vereinfacht den Prozess des Bootstrappings der Sitzungen und ermöglicht Ihnen, 1) die Unterschiede zu Remote-Visual-Studio-Kopien zu überprüfen und 2) sie gegebenenfalls in Ihrer lokalen Kopie zusammenzuführen, damit sie sich bereits beim Öffnen der Sitzung im richtigen Zustand befinden.(„1)“ ist implementiert, „2)“ kommt)

Die Sitzungsverwaltung ist keine triviale und wirklich komplexe Sache. Es gibt viele mögliche Szenarien. Das liegt daran, dass wir die Sitzung nach Abschluss bereinigen. Sie können die Sitzung jedoch jederzeit mit nur einem Klick erneut starten ...

Ich hoffe, diese Informationen helfen Ihnen weiter. Wenn Sie weitere Fragen haben, können Sie sich jederzeit an den VS Anywhere-Support wenden

Wenn Sie ein Projekt zur Implementierung eines solchen Plugins starten möchten, können wir Ihnen Informationen zur Vorgehensweise anbieten. Ein guter Ausgangspunkt ist das Verständnis von Operational Transformation, da Sie diesen Ansatz benötigen, um die gleichzeitige Bearbeitung zu implementieren. Außerdem benötigen Sie ein P2P- oder P2P-Plugin Client/Server-Protokoll zur Datenübertragung zwischen Clients.

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