![]() |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Liste der Anhänge anzeigen (Anzahl: 3)
Ich habe nicht den ganzen Thread gelesen, bin aber platt, dass es möglich sein soll ohne Versionskontrolle professionell Software zu entwickeln. Meiner Meinung nach ist auch für das kleinste Hobbyprojekt die Verwendung von Git oder einem anderen tauglichen VCS eine grosse Erleichterung. SVN ist eher nicht tauglich IMHO...
Für Git gibt es das in Free Pascal geschriebene MSEgit Frontend. Das habe ich gemacht, um ein Werkzeug zu erhalten, welches für meine Aufgaben das Maximum an Produktivität und Bequemlichkeit bietet und da alle erhältlichen GUIs meine Wünsche nicht befriedigen konnten. Ein geändertes Projekt sieht dann z.B. aus wie "modified.png". Mit 'git'-'Commit/Stage/Unstage all (Ctrl+O)' kann der Projektstand in einem Schnappschuss festgehalten werden ("commit.png"). Jeder Projektzustand erhält einen zugeordneten Hashwert (SHA,Quersumme), welche zusammen mit dem Hashwert des Vorgängerzustandes abgelegt wird. Im Beispiel ist der SHA f9870430c6b809667e418748a2c9b1f13828651c, der des Vorgängers ('Parent') 94d840349de35a917a2688865614781a8fdf3cd4 ("committed.png"), dabei kann man die Änderungen nochmals in aller Ruhe überprüfen. Die gesamte Kette der Projektzustände ist im Projektverzeichnis im Unterverzeichnis ".git" abgelegt; es kann jeder beliebige Zustand aus dem ".git" in das Projektverzeichnis zurückgeholt werden. Wenn man also z.B. den Verdacht hat, mit der letzten Änderung einen Bock geschossen zu haben, kann man durch Auswählen einer Zeile im Log und RightClick-'Checkout' ein früherer Zustand zurückholen. Zustände können Namen erhalten. Eine Zusammenhängende Zustandskette mit Namen nennt man Branch. Es gibt Möglichkeiten um Änderungen von einer Branch in andere Branch zu Übertragen. Zustände können auch in andere git Repositories übertragen werden (push) oder von anderen Repositories ins Projekt-git-Archiv geholt werden (fetch). Die grünen Pfeile in "committed.pdf" bezeichnen Dateien, welche noch nicht in das Aktuelle remote-git-Repository übertragen wurden. Viele meiner Projekte sind in GitLab öffentlich gemacht: ![]() Für interne Projekte verwende ich als Backup und Netzwerk Repository Gitolite ![]() MSEgit gibt es hier: ![]() das Projekt ist hier: ![]() |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Da finde ich die Fenster und Ansichten aus meinen Screenshots mit TortoiseGit deutlich besser: ![]() Zitat:
Natürlich kann man auch so vergleichen, es ist aber ein Vielfaches umständlicher. Zitat:
Zitat:
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Auch Dein Tutorial zu Subversion hätte mir eine Menge Raterei erspart, wenn ich es schon gekannt hätte... In Fakt sieht es aber so aus, als ob alle Leute, die Versionsverwaltung machen, NICHT die Integration in Delphi verwenden, um die Änderungen zu posten oder zu holen, oder sehe ich das falsch? |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Doppelter Post (gelöscht)
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Ich nutze jetzt seit ca. 10 Jahren Subversion in Form von TortoiseSVN. Davor habe ich ZIP-Archive gemacht. Was ich als riesigen Vorteil gegenüber den ZIP-Archiven sehen, ist, dass ich beim Einchecken von Änderungen einen Kommentar hinterlegen kann (z.B. sowas wie "Anforderung #4711 - Schriftart in den Buttons fett" oder so). So kann ich auch noch Jahre später sehen, was gemacht wurde, ohne jedesmal in die Diffs sehen zu müssen.
Meine Struktur ist so: jede Projektgruppe ein Archiv, und zusätzlich ein Archiv für einen "LIB"-Ordner, in dem gemeinsame Bibliotheken liegen. Jede Projektgruppe besteht aus einzelnen Ordnern für die Unterprojekte, und auch dort einem "LIB"-Ordner für alles, was für alle jeweiligen Unterprojekte gemeinsam benötigt wird (z.B. auch fr3-Reportdateien). Die ganze Entwicklung läuft auf 2 peer-to-peer vernetzten Rechnern, ein Server und ein "VM-Server" mit VMs für jede Entwicklungsumgebung und für jeden Testrechner. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Zitat:
Das ist nicht sonderlich viel aber ich weiß immer ganz genau was ich wo finde. Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Werden noch Leute für die Statistik benötigt? :stupid:
Ich lege ebenso für jedes Projekt, bei dem ich davon ausgehe dass ich es morgen nochmal anfassen werde, ein Git Repository an. Ein paar veröffentliche ich auch auf Github. Mit SVN braucht man heute nicht mehr anfangen. Ich würde empfehlen sich für Git (oder gern auch Mercurial) mal ein paar Tage lang mit der Konsole zu befassen. Wenn einem die Konsole dann immernoch nicht zusagt, kann man ja wechseln. Ich bin mit der Konsole ein vielfaches schneller und verstehe auch besser was Git da tut. Mit Zip-Dateien entwickeln... ![]() |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Wenn das alles geklappt hätte, hätten wir auch einen eigenen Commit-Dialog gebaut, der die für uns nötigen Angaben (Ticketnummer usw.) direkt in das passende Format bringt, damit unsere Build Tools diese extrahieren können. Aber leider gab es immer wieder mal Schutzverletzungen, nach denen wir dann manuell Cleanups machen mussten. Deshalb haben wir es am Ende aufgegeben... Wir benutzen jetzt TortoiseSVN und TortoiseGit mit einem externen Tool um den Committext zu erstellen. Den kopieren wir dann einfach hinein. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Also, ich habe jetzt mal ein wenig (bzw. ein wenig mehr) an einem Projekt gearbeitet (noch weiterhin mit Subversion) und das ein- und auschecken über die in Delphi integrierte Lösung gemacht.
Soweit hat das eigentlich ganz gut funktioniert. Ist schon toll, wenn ich an einem Rechner gearbeitet habe und öffne das Projekt an einem anderen Rechner, wähle dann per rechten Mausklick auf den Projektnamen den Kontextbefehl "Subversion", "Aktualisieren", "Aus Repository Stammverzeichnis" und schon wird mein Projekt auf den aktuellen Stand gebracht. Das ist schon mal viel einfacher, als Dateien zwischen den Rechnern über das Netzwerk oder sonstwie zu kopieren. Und da man sich auch die Unterschiede mit dem eingebundenen Beyond-Compare ansehen kann (das sich im About-Dialog lustigerweise mit "RAD-Studio XE9-Edition" meldet), finde ich das doch alles recht komfortabel. Was mir noch nicht gelungen ist: Externals einzubinden, also Dateien, die nicht im Projektverzeichnis oder in einem Unterverzeichnis davon liegen. Falls jemand Subversion nutzt, wäre ich für einen Tipp dankbar. (Auch wenn jetzt viele gesagt haben, nehm direkt GIT oder Mercurial, ich will die Subversion-Nutzung zumindest einmal von vorn bis hinten bei einem Projekt durchziehen, damit ich einen vollständigen Eindruck bekomme, nur dann werde ich ja auch in der Lage zu sein, zu vergleichen und zu bewerten, was ich evtl. alternativ besser finde) Noch eine weitere, für mich wichtige Frage: Für meine Lazarus-Pascal-Projekte wäre es natürlich auch toll, ein Versionsverwaltungssystem zu verwenden (ich arbeite dann mit dem jeweiligen Lazarus auf Windows / dem Mac / Linux). Hat jemand unter diesem Aspekt evtl. auch Erfahrungen gemacht, welche Versionsverwaltung hier zu empfehlen wäre? Zwischenfazit von mir: Generell habe ich jedoch schon mal den Eindruck, dass die Versionsverwaltung etwas ist, was ich auf jeden Fall hinzu nehmen werde. Man kann zwar auch ohne Versionsverwaltung professionell Software entwickeln, aber ich denke es könnte mir die Sache doch erheblich erleichtern. Gerade, wenn man feststellt, dass plötzlich etwas nicht mehr funktioniert, kann man sehr leicht vergleichen, was in den einzelnen Revisionen geändert wurde und so schnell die Ursache ermitteln. Und ja, auch für eine einzelne Person ist das eine Hilfe. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
![]() Zitat:
Alternativ funktioniert die reine Git-Kommandozeile auf allen Plattformen gleich, aber ich persönlich brauche damit so extrem viel mehr Zeit, dass ich nicht dazu raten kann. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Wobei Git im Gegensatz zu Mercurial unter Windows nur via Emulation funktioniert.
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
A: So ein Repository ist je wie ein Verzeichnis. Man kann alle Projekte und die gemeinsam verwendeten Sachen in ein Einziges einchecken. Vorteil die Relativen Pfade zwischen den Projekten und dem Gemeinsamen sind immer gleich. Nachteil es gibt nur eine Revisionsnummer (jedenfalls bei SVN) und sollte es mal einen Fehler im Repository geben sind mitunter alle Projekte betroffen. B: Jedes Projekt und somit auch das Gemeinsame bekommen ihr eigenes Repository. Nachteil man muss auf die Abhängigkeiten zwischen den Projekten und somit zwischen den Repositorys aufpassen. Dazu kann man bei SVN die Eigenschaft svn:externals benutzen. Entweder man macht sich ein Ober-Repository und hängt mittels svn:externals alle anderen dort rein. Dann würde man auf einem anderen Gerät nur das Ober-Repository auschecken und alle anderen würden mit der richtigen Struktur automatisch mit auf der Platte landen. Oder man hängt das Gemeinsame per svn:externals in jedem Projekt ein. Hat beides seine Vor- und Nachteile. Bei dem einen sind Änderungen am Gemeinsamen sofort bei allen Projekten verfügbar und beim anderen kann man das Gemeinsame bei verschiedenen Projekten in unterschiedlichen Versionen verwenden. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
PS: Ist die Mehrzahl von Repository in einem deutschen Text Repositories oder wie Google meint Repositorys? |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Repositorys natürlich. Im Deutschen gelten englische Deklinationsregeln nicht.
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
[OT]
Zitat:
![]() |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
In MSEgit reicht ein Klick in die 'C'-Spalte der entsprechenden Zeile der Branches-Liste. Dazu ist keine Serververbindung notwendig, da im ".git" Archiv im Arbeitsverzeichnis die gesamte Historie enthalten ist. Verblüffenderweise sind Git-Clones trotzdem meistens kleiner als entsprechende SVN-Checkouts. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Hallo!
Hier sind mir gerade noch zwei Links begegnet: ![]() ![]() |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Und jetzt noch eine Portion Senf von mir (Mercurial Anwender):
Branching mit SVN, ist der einhelligen Meinung aller Beteiligten nach suboptimal. Nicht nur darum hat man andere Versionsverwaltungen erfunden (und nein, git oder hg sind nicht älter als SVN, eher umgekehrt). Branching ist mit den modernen Versionskontrollsystemen mit Null aufwand verbunden, da jeder Commit prinzipbedingt innerhalb eines Branches erfolgt. Dies kann jetzt eben immer der selbe Branch sein, oder man führt einfach einen neuen ein, und schon hat man zwei bis n Branches mit denen man treiben kann, was man will. Hier etwas zum Thema Branching und damit auch Merging in SVN gegenüber den modernen Systemen wie hg oder git: ![]() Ein Tutorial, daß mir die hg Welt näher gebracht hatte, weil ich von JEDI VCS weg wollte/musste ist ![]() Sherlock |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Hallo Harry,
na, wenn so viele etwas dazu zu sagen haben, dann will ich auch mal. :) Ich nutze seit einigen Jahren SVN. SVN statt Git letztlich deshalb, weil ich damit so ein bis zwei Jährchen angefangen habe, bevor plötzlich alle meinten, dass ein zentrales VCS jetzt veraltet sei und man auf jeden Fall Git benutzen muss. Da SVN allerdings alles kann, was ich brauche und ich auch mit Tags und Branches nie Probleme hatte, bin ich dabei geblieben und damit bis heute eigentlich sehr zufrieden. Was ich aber noch loswerden wollte, weil du danach gefragt hattest und es ansonsten bisher eher in Nebensätzen angeklungen ist: Ich benutze nicht die in Delphi eingebaute SVN-Integration, sondern den Windows-Client "TortoiseSVN". Das hat den Vorteil, dass das Tool einfach noch mehr kann als die Delphi-Integration und vor allem, dass du im Netz viel mehr Material dazu findest, falls doch mal etwas unklar ist. Vor allem bringt TortoiseSVN schon selbst eine sehr gute Dokumentation mit. Die von dir noch offene Frage zur Einbindung von externen Dateien in ein Projekt wird z.B. hier in der Doku behandelt: ![]() Bis denn Bommel |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Ich kann auch jedem nur raten, ein VCS zu nutzen, selbst wenn man nur lokal allein an einem Projekt arbeitet. Und wenn ich solche Aussagen höre wie "wenn man selbst dran arbeitet, weiss man genau was man gemacht hat", kann ich nur den Kopf schütteln. Wenn ich in einem Projekt Änderungen an zig verschiedenen Stellen mache, weiss ich das hinterher nicht mehr im Detail, wo genau das war. Da ist ein VCS einfach Gold wert. Aber es gibt auch Leute, die schreiben Programme lieber in einem Konsoleneditor ohne Syntaxhighlighting und so weiter. Wer es braucht...
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Dass bei Git die Dateien eines Branches beim Anlegen eines neuen Branches nicht komplett kopiert werden? So dass du da viel schneller und einfacher mit mehreren Branches arbeiten kannst? Dass das Mergen durch das reine Speichern von Changesets in der Regel unproblematischer verläuft? Dass bei der Kommunikation mit dem Server alles komprimiert wird und das Ein- und Auschecken und insbesondere initiale Herunterladen eines Repositorys dadurch extrem schneller ist? |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Für Git gibt es keine gescheite API. Und nein, die Ausgabe eines Konsolenprogramms ist keine API. (K.-o.-Kr*ite*ri*um) In Git sind die Revisionen nicht aufsteigend durchnummeriert. Somit kann man nicht ein Verweis auf die Revision benutzerfreundlich mit in der Version der Exe aufnehmen. (K.-o.-Kr*ite*ri*um) |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Zitat:
JCL und JVCL sind da übrigens ein gutes Beispiel. Nach der Umstellung von SVN auf Git lief das Auschecken/Klonen extrem schneller. Eben weil es so viele kleine Dateien sind. Zitat:
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Dann ist es auch keine echte Buildnummer. ;-) Aber bei kleineren Projekten habe ich das auch schon gesehen, bei unseren alten Projekten war das teilweise auch so, allerdings hieß es bei uns auch Revision, nicht Buildnummer. Aber egal ob bei Microsoft, Adobe oder wo auch immer, da wirst du so etwas kaum finden. Habe ich jedenfalls noch nicht gesehen. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Außerdem verwendet MS doch sicher noch sein tolles Visual Sourcesafe, da gibt es sowas doch gar nicht :lol: |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Was die Build-Nummer in der Versionsnummer ist, wird nicht genau definiert.
* es kann eine Hochzählende Nummer sein, bei jedem Build * manchne setzen da das Build-/Compilerdatum ein (Tag im Jahr, MMDD oder YYMM, bzw. YYYYMMTT bei Versionsinfo mit LONGWORD) * man kann da gern die Revisionsnummer (ala SVN) einsetzen * andere eine Fortlaufende Nummer nach irgendwelchen anderen Mustern * Viele nutzen die garnicht * ... Man kann die Verionsinfos auch nach zwei grundlegenden Mustern "zerlegen" * Major.Minor.Release.Build (Word.Word.Word.Word) * Major.Minor.Irgendwas (Word.Word.LongWord) , falls einem WORD (0-32767) nicht ausreicht (einige Programme, wie z.B. die Delphi-IDE können nur 0-MaxSmallInt :stupid:) Zitat:
Ich hatte Daniel mal auf den DT gefragt und er meinte damals, dass es nur wer machen müsste. Eventuell könnte man das auch zusätzlich als LiveStream rausschicken, für Alle, die nicht direkt kommen können. :angle: (womöglich gegen ein kleines Endgeld/Aufwandsenschädigung, entsprechend dem normalen Eintrittsgeld) |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Hallo,
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
In den JIRA-Vorgängen wiederum kommentiert die Buildmaschine, dass ein Fix in Build XY enthalten ist. So hat man überall immer Links zwischen den einzelnen Informationen. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Wir lassen unser Programm von FinalBuilder generieren ... da schreibe ich auch vom SVN die Revision und den Branch in eine INC, was man dann im Info-Fenster des Programms lesen kann.
Die Versionsnummer kommt aus einer INI (wird eingestellt über einen Dialog im FB und das wird dann als Versionsinfo in einer *.RC / *.RES abgelegt und in jede EXE/DLL/BPL eingebunden. SVN erstellt die genannten LazyCopies, bei Branch/Tag, also erstmal nur 'nen Link auf das Verzeichnis/Datei+Revision, und bei Änderungen am verlinkten Objekt, dessen Properties oder einem untergeordneten Objekt wird dann eine Kopie der geänderten Objekts (Datei/Verzeichnis) erstellt ... CopyOnWrite. Reine Verlinkungen werden über die Properties erledigt, genauer über das Property svn:externals (kann auf eine externe oder interne Datei/Verzeichnis zeigen) |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Hallo,
ich glaube das ist jetzt immer mehr OT. Zitat:
Also Anlaufstelle bleibt das Repository. Dort muss immer anhand der Versionsnummer der Sourcecode gefunden werden können. Bei SVN kein Problem, dort hat man quasi aus der Versionsnummer heraus einen direkten Link auf den Sourcecode. Zitat:
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Zitat:
Selbstverständlich lässt sich auch nur ein Teil der Schnappschüsse "clone"en. Komfortables Zusammenarbeiten von verschiedene Branches ist dann natürlich nicht mehr möglich, wenn der gemeinsame Vorgänger fehlt. Fehlende Zustände lassen sich falls notwendig nachträglich aus einem anderen Repository nachladen. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Das Kommando wäre "git checkout <VERSIONSNUMMER>". Man muss von der Versionsnummer lediglich soviel Zeichen angeben, bis sie im Repository eindeutig ist. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
Zitat:
Ich finde außerdem, der Vorteil, auf die komplette Historie Zugriff zu haben und jederzeit committen zu können, auch wenn den Server down ist oder man keine Internetverbindung hat, überwiegt diesen kleinen Nachteil, selbst wenn es denn einer wäre, bei weitem. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Zitat:
In der Regel sind die lokalen Repos eines DVCS deutlich kleiner als die von SVN vorgehaltenen lokalen Daten. |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Am Rande eingeworfen - und das gilt gewiss auch nicht für alle - aber ich erwarte schon eine konstruktive Auseinandersetzung mit dem Thema. Unabhängig davon, ob man nun SVN, Git, Mercurial oder den Ausdruck auf Endlospapier bevorzugt, sollte eine sachliche Diskussion in aller Interesse sein.
|
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Ich denke, wir müssen niemanden bekehren. Wer mit seiner gegenwärtigen Arbeitsweise glücklich ist, dem sei es gegönnt. Schließlich kann das nicht jeder von sich behaupten.
Ich würde Neueinsteigern, wie dem TE, halt empfehlen gleich bei State-of-the-Art anzufangen, statt zunächst die Erfindungen des Rades nachzustellen.... Sherlock |
AW: Subversion und VisualSVN für Ein-Mann-Entwicklung
Bei SVN liegt es aber auch nur daran, dass SVN jede Datei einzeln und unkomprimiert im .SVN-Verzeichnis ablegt.
Komprimiert und in einer Archivdatei, da wäre "theoretisch" der Checkout nur einer Revision immer kleiner, als der aller/mehrerer Revisionen. (gleiche Komprimierungsmethode vorausgesetzt) Allerdings ist im .svn auch nicht von jeder Datei eine Kopie drin. (eventuell gibt es keine Kopie von Dateien, wo man eh keinen Diff anzeigen kann, oder so? :gruebel:) Man kann dann zwar "theoretisch" schneller auf die Daten der einzelnen Datei zugreifen, aber ingesamt ist das einfach nur 'ne blöde Idee gewesen. (aber schon besser, als das von früher, wo in jedem einzelnen Unterverzeichnis ein keines .svn rumgammelte) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz