Frage

Ich habe kein kontinuierliches Versionskontrollsystem gesehen - eines, das Änderungen in Ihrem Code speichert, während Sie sie entwickelt haben, anstatt auf einen offiziellen Einchecken zu warten. Seien Sie für die Sicherung weg und sehen Sie sich von anderen an, bevor Sie den offiziellen Einchecken tatsächlich gemacht haben.

Ich habe das nicht gesehen und mich gefragt, ob es oder so etwas existiert und aus welchen Gründen es eine gute Idee sein könnte oder nicht.

Derzeit betrachten Programmierer die Quellcodesteuerung als Integration von Codepaketen, aber warum nicht diese Pakete kleiner machen und kontinuierlich integrieren?

-Adam

War es hilfreich?

Lösung

Derzeit betrachten Programmierer die Quellcodesteuerung als Integration von Codepaketen, aber warum nicht diese Pakete kleiner machen und kontinuierlich integrieren?

Ich würde sagen, DVCs tun dies jetzt bereits im Grunde genommen, nicht weil sie dezentralisiert sind, sondern weil das Auftreten so viel schneller ist. Mit Git verpflichte ich mich weitaus häufiger als mit SVN. von Code (verwendet git add -i oder git gui) und ist im Allgemeinen viel mehr auf die Verfolgung von Codezeilen als auf die vollständigen Dateien ausgerichtet (als "traditionelle" VCS -ähnliche Subversion).

Auch die Art und Weise, wie Git von Natur aus funktioniert, wie Sie sagten: "Die Änderungen würden als" nicht überprüft "gespeichert. Wenn Sie sich verpflichten, sind die Änderungen lokal, dann drücken Sie sie mit einem separaten Remote -Gerät auf die Remote -Maschine. Befehl .. Sie könnten sich jedes Mal verpflichten, wenn Sie sparen, und dann in ein einzelnes Commit wieder aufzunehmen, wenn Sie sich wünschen.

Was ein Tool betrifft, das "kontinuierliche Versionskontrolle" macht, können Sie dies ganz einfach mit einem Shell -Skript tun, so etwas wie ..

while [ 1 ]; do
   git add -a && git commit -m "Autocommit at $(date)";
   sleep 10;
done

Es gibt ein Skript, CACM (Github), was etwas Ähnliches tut

CACM] beobachtet ein bestimmtes Verzeichnis und begeht alle Änderungen an einem eigenständigen Git -Repository.

Nur tun:

cacm --repo dir_of_git_repo --watch dir_to_watch

Ich bin mir nicht sicher, warum Sie dies tun möchten. Ich finde eines der nützlichsten Dinge bei der Verwendung eines VCS der Unterschied von dem, was ich verändert habe (seit dem letzten Commit). Es scheint, als wäre es nur Geräusche.

Auch die Texteditor "E" hat ein interessantes Feature, es visualisiert die Rückgängiggeschichte mit Verzweigung. Da ist ein Blog-Post mit Screenshots.

Andere Tipps

Die Aufgabe des ständigen Autosavierens ist keine Aufgabe für ein Versionssystem, sondern für den Editor. Wenn Sie eine neue Version im Versionssystem sehen, sollte sie eine aussagekräftige Änderung gegenüber den anderen Versionen darstellen, nicht jedes halbe Wort.

Eclipse hat eine Funktion namens "lokale Geschichte", die genau das tut. Es wird eine Kopie Ihrer Quelldateien zwischen den Speichern behalten. Es verfolgt sogar gelöschte Ordner für Sie. Es hat meinen Hintern einige Male gespeichert. Sie können die lokale Geschichte als Versionskontrolle auf niedriger Ebene ansehen, die nur auf Ihrer lokalen Maschine stattfindet. Der Nachteil davon ist natürlich, wenn Sie an einer anderen Maschine arbeiten, haben Sie eine andere lokale Geschichte.

Sie können ein Distribute -Versionskontrollsystem verwenden, wie Basar, Git, Quecksilber. Dann können Sie sich vor Ort verpflichten.

Ich habe einige inotify -basierte Plugins für verschiedene DVCs gesehen, diese können jedoch nur so schlau sein. Das Ideales ist wirklich, das Repository auf einem Kopier-auf-Schreiben-Dateisystem zu speichern, damit diese häufigen granularen (und unveränderlichen) Versionen von Dateien außerhalb der DVCs gehalten werden.

Wie andere gesagt haben, ziehe ich lieber viele kleine Verpflichtungen ein. Mit einem DVCs müssen Sie sich keine Sorgen machen, den Kofferraum oder den Master -Zweig zu brechen, und drücken Sie erst, nachdem Sie fertig sind. Keine Sorge über giftige Überarbeitungen beim Bearbeiten von Dateien.

Unter Linux benutze ich Ext3Cow um meine HG/Git -Repositories zu speichern. Dies gibt mir die Art von Funktionalität, die Sie beschreiben. Traurig zu sagen, ich weiß nichts Ähnliches, das über Linux hinaus tragbar ist. Vielleicht wird ein verrücktes Team in Python einen einfallen.

Diese Frage ist bereits mehrmals aufgetaucht (obwohl sie jeweils in einem anderen Kontext), so dass die Notwendigkeit von Ext3cow (aber tragbar) sicherlich offensichtlich ist. Dennoch würde ich diesen Aufblähen in einem DVCS selbst nicht wollen, besonders auf riesigen Bäumen.

Ich denke, Sie müssen dies wirklich aus dem Dateisystem fragen, nicht aus den DVCs.

Sie möchten nicht einchecken jeder Rückgeld. Sie möchten atomare Änderungen einchecken, die zusammenarbeiten können. Sie möchten einer Methode keinen Parameter hinzufügen und speichern, wenn er einchecken (und einen CI -Build -Lauf) und dann die Build -Pause haben, da Sie die Anrufe an die Methode noch nicht aktualisiert haben.

Du meinst so etwas wie Subversion Autoversioning?

Haftungsausschluss: Ich sage nicht, dass Autoversioning eine gute Idee für die Entwicklung ist oder dass ich es persönlich tun würde, aber die Technologie existiert.

Sie könnten jede Zeile oder jeden Charakter mit einem DVCs wie Git begehen, wenn Sie wollten. Im Allgemeinen denke ich, dass es eine großartige Idee ist, bei der Verwendung eines DVCs so oft wie möglich zu verpflichten, um Probleme mit Tools wie Git BISECT zu jagen. Wenn Sie den Effekt, den Sie beschreiben, möchten, können Sie Ihren Herausgeber der Wahl skript um jeden Speichern einstellen ... in der Praxis würde ich denken, dass dies ein bisschen viel wäre.

Einige Menschen würden zu diesem Zweck eine Entwicklungsabteilung einrichten und die Entwickler ihre Veränderungen begehen lassen, bevor sie arbeiten, bevor sie in eine Zweigstelle zur Qualitätssicherung verschmelzen. Sie könnten sogar einen Entwickler haben, der große Veränderungen in seiner eigenen Niederlassung vornimmt, bevor Sie diese Veränderungen in die Hauptentwicklungszweig begehen und verschmelzen. Die Verzweigung kann dies also ansprechen.

Ich denke, Eclipse tut es bei jedem Speichern oder früher so etwas. Es hat mich ein paar Mal gespeichert, als mein Code in Stücke gehackt wurde, während ich versuchte, einen Fehler zu identifizieren.

Hier ist ein anderer Ansatz. Fast jeden Tag renne ich in Situationen, in denen etwas nicht mehr funktioniert, und ich weiß nicht warum. Ich bin ein paar Minuten zurückspulen und überprüfe, welche Änderungen vorgenommen wurden und welche Dateien. Ich stimme also der Notwendigkeit einer kontinuierlichen Versionskontrolle zu.

Gleichzeitig ist es wahr, dass Sie nicht jeden Tag Tausende kleiner Änderungen in Ihr Repository einchecken möchten.

Ok, das ist was du tust. Sie verwenden beide, mischen sie aber nicht. Ihre Quellenkontrolle sollte vom gesamten Team verwendet werden, und Sie checken hin und wieder darauf ein. Gleichzeitig führen Sie eine lokale Software für persönliche Dateiversion aus, die jede kleine Änderung speichert und es Ihnen leicht erleichtert, die Informationen tatsächlich zu verwenden.

Das ist es. ich benutze Geschichte Explorer Da ich es entwickelt habe, es zu entwickeln, aber es gibt auch andere da draußen.

Möglicherweise interessieren Sie sich für kontinuierliches Versionskontrollsystem, das von JetBrains entwickelt wurde. Es ist noch nicht öffentlich, aber ich zeige einige Funktionen davon in meiner Keynote bei Jetbrainsday in Malmo: http://new.livestream.com/jetbrains/jetbrainsday1/videos/29348962

Wie Dan erwähnte, Die IBM Visual Age IDE hat jede Version, die Sie von einer Quellcode -Datei gespeichert haben, behalten. Dieser Ansatz ist jedoch nicht auf IDEs beschränkt. das Dec VMs Das Betriebssystem verfolgte einen ähnlichen Ansatz mit seinem Versioned Dateisystem. In VMs enthielt der vollständige Name jeder Datei eine Versionsnummer, und jedes Mal, wenn Sie eine Datei speichern, wurde eine neue Kopie mit einer höheren Versionsnummer eins erstellt als die bisher höchste Nummer.

Keiner der beiden Ansätze entspricht der Versionskontrolle, wie wir es heute kennen, da beide keine Verzweigungen (oder alle Funktionen, die speziell für die Erleichterung mehrerer Personen, die an derselben Quelldatei arbeiten, entwickelt wurden). Beide dienen jedoch dem Zweck der Sicherung gegen menschliches Versagen, was für mich der nützlichste Aspekt der Versionskontrolle ist.

Ich habe mehr als wenige Jahre Erfahrung in der Programmierung in Java und erinnere mich noch an einen neuartigen Ansatz (mit Nostalgie), den das visuelle Alter zum Entwicklungsprozess einbrachte. Das visuelle Alter hatte einen nicht-file-Ansatz für den Quellcode. Der Code wurde in der relationalen Datenbank gespeichert. Sie würden im Allgemeinen an einer Ansicht arbeiten, die eine einzelne Methode zeigt. Sie hatten auch eine vollständige Dateiansicht, aber Sie würden sie nicht so sehr verwenden.

In Bezug auf die Versionskontrolle wird eine Version mit jedem Speichern generiert. Sie können eine Methode, Klasse/Schnittstelle, Paket oder ein ganzes Projekt mit einer Versionsnummer/einem Namen explizit überprüfen. Es ermöglichte auch eine feinkörnigere Kontrolle über Ihre Quelle auf Methodenebene. Als ich anfing, mit Eclipse zu arbeiten, während es viele Funktionen aus dem visuellen Alter geerbt hat und heute eine Geschichtsfunktion hat, die alle „Speichern“ Ihres Codes speichert, konnte ich das Gefühl haben, dass ich einen Schritt zurück gemacht habe.

Rational Klarer Fall hat das Konzept von a Dynamische Ansicht. Unter Windows wird Ihre Entwicklungsansicht als zugeordnetes Laufwerk angezeigt. Ihre Codeänderungen werden jedoch serverseitig gespeichert, sobald Sie auf Speichern klicken. Suchen Sie das?

Es gibt, wie Sie es erwarten würden SiAntwort Oben, Dies ist keine Empfehlung ...

Wie wäre es mit Vesta?

http://www.vestasys.org/

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