Versionsverwaltungen

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Mittwoch 19. Oktober 2005, 22:20

Leonidas hat geschrieben:Wenn es GUI sein muss [...]
Ich finde, muss es nicht. Ich hab schneller "svn ci -m blah" eingetippt, bevor RapidSVN überhaupt gestartet ist, aber zur um den Überblick zu behalten ist es nicht schlecht.

Mal ne Frage, die ich schon immer mal an die Allgemeinheit richten wollte: Wie haltet ihr das mit den Repos und euren Projekten? Legt ihr für jedes Projekt ein neues Repo an? Mach ich nämlich nicht, obwohl es sicher manchmal praktisch wäre, wenn man sich mit einem Projekt mal total verrannt hat. Dann kann man es später noch restlos entfehrnen, was nicht geht, wenn alles in einem Repo liegt...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 20. Oktober 2005, 08:33

ProgChild hat geschrieben:Legt ihr für jedes Projekt ein neues Repo an? Mach ich nämlich nicht, obwohl es sicher manchmal praktisch wäre, wenn man sich mit einem Projekt mal total verrannt hat. Dann kann man es später noch restlos entfehrnen, was nicht geht, wenn alles in einem Repo liegt...
Hi ProgChild!

Man kann mit Subversion aus einem alten Repository ein neues erstellen und bei diesem Vorgang einen Filter definieren, der z.B. einen bestimmten Zweig nicht ins neue Repository übernimmt, oder nur einen bestimmten Projektzweig ins neue Repository übernimmt.

Das ist mir aber alles zu umständlich. Ich habe für jedes Projekt ein eigenes Repository. So lange dauert das bei mir auch wieder nicht, ein neues Repository anzulegen.

Code: Alles auswählen

1. 
/etc/init.d/apache2 stop
su apache
svnadmin create /svn/dev/repositoryname
2.
Mit dem Midnight Commander kopiere ich die Einstellungen,
Berechtigungen und Hooks aus einem anderen Repository
in das neue Repository.
exit
3.
Im Apache einen neuen Webdav-Eintrag schreiben (copy, paste)
/etc/init.d/apache2 start
4. 
In der Konfigurationsdatei des *WebSVN* eine neue
Zeile für das neue Repository hinzufügen.
Fertig.
Wenn ich langsam bin, brauche ich dafür drei Minuten unter Gentoo-Linux.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 20. Oktober 2005, 15:08

Bei mir liegt ein Projekt in einem eigenen Repository, die Restlichen liegen im "snippets" Repostiory. Dort liegen auch andere Projekte, die eigentlich nicht mehr Snippets sind, also müsste ich sie vielleicht mal wo anders hinschieben. Aber bis jetzt geht das auch so wie es ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Mittwoch 26. Oktober 2005, 22:16

ProgChild hat geschrieben:
Leonidas hat geschrieben:Wenn es GUI sein muss [...]
Ich finde, muss es nicht. Ich hab schneller "svn ci -m blah" eingetippt, bevor RapidSVN überhaupt gestartet ist.
*zustimm*, ich verwende generell nur die kommandozeile für die reop Sachen, für den Überblick habe ich Trac.
ProgChild hat geschrieben:Mal ne Frage, die ich schon immer mal an die Allgemeinheit richten wollte: Wie haltet ihr das mit den Repos und euren Projekten? Legt ihr für jedes Projekt ein neues Repo an? Mach ich nämlich nicht, obwohl es sicher manchmal praktisch wäre, wenn man sich mit einem Projekt mal total verrannt hat. Dann kann man es später noch restlos entfehrnen, was nicht geht, wenn alles in einem Repo liegt...
Jedes Projekt bekommt bei mir in der Regel ein eigenes Repo inkl dazugehörigen Trac.
TUFKAB – the user formerly known as blackbird
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Donnerstag 27. Oktober 2005, 22:01

Hallo?
darcs wenn man viel Zeit hat?
Dann hast entweder du darcs nicht verstanden oder ich habs total gefressen denn das einspielen eines patches geht genau so schnell und leicht wie das uploaden bein svn, cvs oder sonstwas. git kenne ich zugegebenermaßen nicht.
Auf darcs bin ich btw. durch uuu gekommen, die verwenden das auch (nur mal so als "Referenz")

Was kann git denn mehr/besser als darcs?

Warum soll svn besser geeignet sein? Ich konnte mit darcs bis jetzt alles machen, was ich wollte/brauchte... Zugegeben meine cvs/svn-Zeit ist ein bisschen her, aber ich hab das Gefühl, dass es mit darcs schöner geht.
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Freitag 28. Oktober 2005, 05:42

Okay, hab jetzt noch ein bisschen gegooglet und gelesen, dass man angeblich mit darcs nicht zu jedem früheren Zeitpunkt zurückgehen kann, was natürlich nicht so schön ist.

Trotzdem bleiben noch 2 Fragen:
- Was soll der grunsätzliche unterschied der Ansätze von darcs/git und cvs/svn sein?

- Was "soll" man denn jetzt nehmen? Ist svn echt noch das Beste? Sind Bazaar oder Codeville vielleicht schon besser?

Danke für eure Geduld :-)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Freitag 28. Oktober 2005, 06:09

@henning:
Du kannst darcs/git und svn/cvs nicht vergleichen.

DARCS/git haben verteilten Absatz, cvs/svn nicht.
TUFKAB – the user formerly known as blackbird
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Freitag 28. Oktober 2005, 08:06

Naja, aber zumindest darcs kann man ja -wenn man will- genau so zentralisiert nutzen wie z.B. svn, indem man halt ein repository als "server" verwendet.
Gemnau so benutze ich es auch zur Zeit, wie gesagt, bislang auch ohne Probleme...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 28. Oktober 2005, 20:07

SVN kann man über SVK auch verteilt nutzen.

Ich finde SVN halt intuitiver: das Repository hat eine Revision, ich kann vor und zurückgehen, branchen und mergen via Kopie usw.

Das ist warscheinlcih auch geschmackssache, das besste SCM gibt es nicht: es gibt nur das bessere SCM für einen bestimmten Einsatzzweck. Ob das nun SVN, SVK, Darcs, Monotone, Bazaar-NG, Codeville, git oder was anderes ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Samstag 29. Oktober 2005, 11:37

Also, okay, da ich wie gesagt jetzt mal irgendwo gelesen habe, dass man mit darcs wohl nicht immer an jeden Früheren Zeitpunkt zurück kann, werde ich wohl umsteigen. Vielleicht könnt ihr mir ja einen Rat geben, also ich hätte gerne folgendes (Nach Wichtigkeit abteigend geordnet:

- Ich möchte jeden früheren Zeitpunkt wiederherstellen können, falls mal irgendwas schief gegangen ist.
edit:
- SSH-Zugriff muss auf jeden Fall möglich sein, ich möchte dafür nicht am Webserver rumbasteln müssen. (Hat verschiedene Sicherheitsgründe)
/edit
- Ich möchte die Möglichkeit haben, z.B. an einem update länger zu arbeiten bevor ich es hochlade, zwischendurch aber z.B. bugfixes hochzuschieben.
Wenn ich dann mit der längeren Sache fertig bin, sollen die Bugfixes natürlich nicht weg sein. (Müsste man IMHO mit ziemlich jedem System hinkriegen, oder?)
- Ich möchte ab und zu "Releases" machen, spätestens dann brauche ich eine Versionsnummer, die kann (muss aber nicht) auch schon vorher mitlaufen. Da ich für die Releases eh ein script schreiben will, (weil da noch ein bisschen was anderes getan werden muss) könnte ich das aber auch selbst mit rein basteln.
- Ich hab mir subversion mal angeguckt (und mir ist aufgefallen, dass ich damit noch nicht gearbeitet hatte, da muss früher wohl echt cvs gewesen sein) und muss sagen, dass mir diese Datenbank-kramerei ein bisschen missfällt im repository. Spart zwar ordentlich Platz, ist nach meinem Geschmack zu Black-Box-mäßig. Da kann ich mich aber eohl schnell dran gewöhnen, zumal man backups ja mit nem checkout machen kann.

Was wäre unter diesen Aspekten am Besten geeignet? Vielleicht Subversion oder Bazaar-NG?

Nachtrag:
Ganz gut wäre auch, wenn ich dir Möglichkeit hätte, "patches" via Email einzuspielen, da ich nicht weiß, ob der ssh-Zugriff so bequem bleiben wird.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Samstag 29. Oktober 2005, 12:02

henning hat geschrieben:Vielleicht könnt ihr mir ja einen Rat geben,
Hi Henning!

Patches kannst du nicht via Email ins Subversion-Repository einspielen. Vielleicht gibt es da ein Tool dafür, das weiß ich nicht.

Aber ansonsten ist Subversion genau das Versionsmanagement-System das ich immer gesucht habe. Ich kann es *uneingeschränkt* weiterempfehlen. Egal, ob du Subversion mit einem grafischen Tool oder über die Kommandozeile bedienst.

Erstens empfehle ich hier Subversion und zweitens das Buch "Subversion" von Frank Budszuhn. (ISBN 3-89842-603-3). Es führt dich in den Entwicklungsprozess mit Subversion ein und erklärt die Arbeit mit Subversion bis ins letzte Detail. Vom Verwalten bis zum Zusammenführen einzelner Dateien.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Samstag 29. Oktober 2005, 12:19

Mir ist grad selbst noch ein Gegenargument für subversion wingefallen (deine Empfehlung in allen Ehren):

Es geht nämlich um ein Web-Datenbank Projekt, und wir wollen dabei zwei Versionen parallel laufen lassen: Die letzte Release und die frisch gepachte VCS-Version.
Mit darcs war das immer kein Problem, da hat apache einfach auf das zentrale repository verwiesen, und alle waren glücklich ,-)
Mit svn müsste ich ja immer wieder einen extra checkout für apache machen, oder?
Und svk da nochmal draufzupflanzen... würde es da nicht mehr Sinn machen gleich ein dezentrales Ding zu nehmen zumal ich ja eh noch ne Erweiterung raufflanschen müsste für mein Email-Kram? (Falls es eines gibt, dass meine Anforderungen erfüllt)


PS:
Kannst du als svn-Fan mir evtl. sagen, warum die URLs für ssh-Verbindungen diese komische Form haben (svn+ssh://server/path/to/repo)?
Wäre nicht ssh://server/path/to/repo oder server:/path/to/repo logischer?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Samstag 29. Oktober 2005, 12:43

henning hat geschrieben:Mit darcs war das immer kein Problem, da hat apache einfach auf das zentrale repository verwiesen, und alle waren glücklich ,-)
Mit svn müsste ich ja immer wieder einen extra checkout für apache machen, oder?
[...]
PS:
Kannst du als svn-Fan mir evtl. sagen, warum die URLs für ssh-Verbindungen diese komische Form haben (svn+ssh://server/path/to/repo)?
Wäre nicht ssh://server/path/to/repo oder server:/path/to/repo logischer?
Hi Henning!

So schlimm ist das auch wieder nicht. :lol:
Du kannst Skripte bei verschiedenen Events ausführen lassen. Z.B. könntest du das Skript

Code: Alles auswählen

svn export /home/svn/meinrepository/trunk /home/xxx/zielordner
automatsich beim Event "commit" ausführen lassen. So wird, jedes mal, wenn jemand einen "commit" durchführt, der aktuelle Entwicklungszweig in einen dafür vorgesehenen Ordner exportiert.

Das mit "svn+ssh" kann ich dir nicht erklären, aber es stört mich ja auch nicht, da ich immer über Webdav (http oder https) auf meine Repositories zugreife. Über den Apachen kann ich da exakt definieren, wer, mit welchen Rechten auf welchen Repositoryzweig zugreifen darf.
Das hat Vorteile, wenn du auf dein Repository über das Internet zugreifen möchtest. SSH hat den Nachteil, dass alle, die auf das Repository per SSH zugreifen möchten, das Recht dazu haben müssen. Es kann also sein, dass dir jemand die Zugriffsrechte auf eine Datei im Repository verhaut. Das kann man mit einem Skript wieder hinbiegen, aber es ist nicht schön.

lg
Gerold
:-)
Zuletzt geändert von gerold am Samstag 29. Oktober 2005, 17:21, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Samstag 29. Oktober 2005, 13:56

Das kommt natürlich auf die Projekte bzw. Leute an.
Also ich hab z.B. die Situation, dass wir nur zu zweit an einem Projekt arbeiten, und das Projekt auch nicht weiter aufgeteilt ist.

Ausserdem richte ich lieber nen neuen user-account ein und setzte verzeichnis-Zugriffsrechte, als dass ich meine Apache-Konfiguration noch komlizierter mache (zumal HTTP ja eigentlich einen leicht anderen Zweck hat, als Daten für VCSs zu übertragen)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 29. Oktober 2005, 16:47

henning hat geschrieben:(zumal HTTP ja eigentlich einen leicht anderen Zweck hat, als Daten für VCSs zu übertragen)
HTTP vielleicht schon, aber die HTTP Erweiterungen WebDAV (und DeltaV) welche Subversion nutzt sind genau das richtige dafür. Allerdings ist die Konfiguration zugegebenermaßen nicht ganz so trivial.

Ich habe mein Projekt so organisiert: HEAD (sozusagen) und Release.

Wenn du was verteiltes willst, kannst du Arch/Bazaar(-NG) ansehen, von Arch haben viele geschwärmt, aber es ist nun tot und ich bedauere es nicht. Vielleicht macht Bazaar-NG es nun besser.

Schön bei Subversion ist die umfangreiche Doku, wo SVK auch schon nachzieht.

Den E-Mail Kram könntest du vermutlich mit einem selbstgeschreibenen Tool machen, da Subversion Python-Bindings ja gereitstellt. Aber vielleicht gibt es das ja auch schon.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten