Module und CVS

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
Kars-T's picture

Hi,

ich helfe beim Ecard Modul aus, komme aber mit dem CVS nicht so recht klar. Der gute Mensch aus Indien, der das Modul erschaffen hat leider auch nicht so recht und so haben Sarath und ich gerade das kleine Problem, das ich nicht so recht weiß auf welchem Tag wir arbeiten bzw. ich verstehe das mit dem Tagging eher gar nicht.

http://drupal.org/project/cvs/206853
Ich veröffentliche an DRUPAL-5 und würde einfach gern wissen wie ich daraus den dev release http://drupal.org/node/206866 aktualisiere.

Die Drupal Maintainer Seiten habe ich gelesen, was mir aber grad keine Erleuchtung gibt und ich benutze Tortoise CVS auf WinXP. Auch zum ein / auschecken hätte ich wegen der Tags auch noch Fragen.

Ich lade gern jeden der mir das mal erklären mag zu Kaffee und Kuchen zu uns hier in der Poststraße ein! :)

Comments

TortoiseCVS: Branching and Merging

Frank Ralf's picture

Hallo Karsten,

ich bin zwar auch nicht extrem fit in Sachen CVS, aber ich erinnere mich, auch eine ganze Zeit gebraucht zu haben, bis ich bzgl. Tags, Branches etc. durchgestiegen bin.

In der Hilfe von TortoiseCVS bin ich dann im Abschnitt "Branching And Merging" auf folgenden Hinweis gestoßen:

TortoiseCVS puts what is known as sticky tags on the files that are affected by the branch. To remove the sticky tags you must go back to the head branch.

Evtl. hängt es mit diesen Sticky Tags zusammen, dass du nicht einchecken kannst.

Nützlich fand ich auch die beiden folgenden Beiträge:

Branching and Tagging
http://drupal.org/handbook/cvs/quickstart#before-branching

Contributing a Module with TortoiseCVS
http://drupal.org/node/188985

Und nicht zu vergessen der Tipp, den ich selber von meinem Haupt-Maintainer erhalten haben:

"This file is your best friend for managing branches/releases: http://drupal.org/files/maintain-release-handout.pdf "

Ach ja, und dann haben sich die Tagging-Konventionen auch noch zwischen D5 und D6 geändert:

Proposal for changing CVS branch conventions
http://drupal.org/node/147493

Ob ich mir damit schon den Kuchen verdient habe, weiß ich aber nicht...

hdh
Frank

Hmm leider komme ich so

Kars-T's picture

Hmm leider komme ich so nicht weiter :-/
Ich veröffentliche ja an DRUPAL-5. Aber ob das nun "richtgi" bzw sinnvoll ist weiß ich einfach nicht, ber den ganzen Tags. Und halt welches der DEV Release und der Live ist weiß ich nicht.

Die Links kenne ich soweit.

Also leider bin ich noch zu lern resistent, das zu verstehen ;)
Komm vorbei und zeigs mir, dann gibs auch Kuchen. Hmm erinnert mich irgendwie an Portal grad "Kuchen"... ;)

Hallo Karsten, ich würde

Tom Freudenberg's picture

Hallo Karsten,

ich würde mich zumindest mit CVS mal als einigermaßen fit betrachten ;-) Ich verstehe aber Dein Problem noch nicht so richtig.

Vielleicht erstmal zu den Fragen bzgl. TAGS

Als erstes: bei CVS besitzt jede! Datei eine je nach Änderungsstand eigene Relase-Nummer. Das heisst, man kann nicht sagen "check mal Version 1.2.3" eines Projektes aus, da jede! Datei im Projekt einen anderen Versionsstand hat. Dafür wurden die TAGS erfunden. Mit denen wir nun ein bestimmter "Schnappschuss" von Datei Zusammenstellungen (meist auf der Platte des Entwickler) mit EINEM Bezeichner (TAG) versehen, so dass man diesen Zustand der Software wieder herstellen kann. Man sagt daher "check mal TAG mein_tag" aus.

Wir verwenden zum Beispiel TAGS um den Zustand eines Branches von seinem Anfangspunkt an zu bestimmen. Hierzu ein Beispiel (ich benutze ungenaue Worte, die Dir hoffentlich die Sache besser/einfacher vemitteln):

HEAD : 1.1
RELEASE : 1.3
BRANCH : 1.3.2

Wichtige Info dazu: Ein Branch ist von seiner Nummerierung her IMMER ungerade >= 3 Ziffern, ein Release (Dateiversion) IMMER GERADE >=2

Wenn Du jetzt zum Beipiel mitten im Projekt eine spezielle Lösung schaffen willst, dann kannst Du den aktuellen Zustand vom Projekt im Branch "1-3-2" quasi einfrieren und verdoppeln und damit einen zusätzlichen Entwicklungszeig parallel(!) eröffnen, das wäre dann Branch 1-3-2-1-2 (wieder UNGERADE). Diesen Branch checkst Du nun zusätzlich aus und bearbeitest ihn (IMMER WIEDER EINCHECKEN MIT BRANCH 1-3-2-1-2) Nach ca. 1 Woche willst Du nun die Arbeit zusammen-mergen, aber wie ?

Da Du nur den Unterschied (diff) deiner Tätigkeiten in den Branch 1-3-2 übernehmen willst, brauchst Du irgendeine Vergleichsmarke. Dieses liefert ein TAG. Dum musst also VOR den ersten Änderungen auf dem Sub-Branch ein TAG setzen um den Startzustand des Repositories festzuhalten. Wir nennen die TAGS immer mit "bri_" und branch ID für "branch init".

Damit kannst Du dann den Zustand vom Repository bekommen zwischen ZEITPUNKT "bri_1-3-2-1-2" und dem heutigen Stand von "branch 1-3-2-1-2".

Das ist ein sehr sinvolles Beispiel für TAGS. Weitere Möglichkeiten sind Datum TAGS odr Candidates, z.B. RC1_2008-11-30 oder NIGHTLY_2008-11-29.

Sie sind einzig dazu da, eine Gruppe von Dateien mit UNTERSCHIEDLICHSTEN Release Nummer zusammenzufassen.

Dabei kann ein TAG immer nur EINMAL vergeben sein je Datei.

z.B. du erstellst heute ein TAG mit dem Namen : MEIN_RELEASE über den aktuellen Zustand eines Repository-Zweiges. Wenn Du jetzt zu einem späteren Zeitpunkt dieses TAG nochmal benutzt, wir es quasi auf dem bisherigen Releasestand entfernt und dem neuen zugeschrieben. Das TAG "MEIN_RELEASE" gibt es nur EINMAL und Du kommst nicht mehr an die frühere Zusammenstellung.

Deswegen benutzen wird nur Datumsangaben in TAGS, z.B. "MEIN_RELEASE_2008-11-30"

#

Wenn ich das im Drupal CVS richtig sehe, habt ihr den "falschen" Release Stand in Arbeit. Ihr arbeitet dort auf Release 1.1 (HEAD?) und m.E. ist das Dev z.Z. verbunden mit Release 1.2.

Vielleicht telefonieren wir hierzu sonst einfach mal.

Viele Grüße
Tom

*kopf qualmt*

Kars-T's picture

Also ich werde das noch ein paar mal lesen und versuchen dahinter zu kommen. Was ich einfach nicht verstehe ist ob es da nun einen Automatismus gibt oder nicht.

http://drupal.org/project/cvs/206853

Ich verstehe wohl nicht, was DRUPAL-5 dann ist. An das hatte ich nun comittet und hatte gehofft das darunter nun ein diff Log geführt wird und damit das Versioning der Datei.

Ist das richtig:

--

Der Unterschied ist zu meiner Erwartung ist, das unter DRUPAL-5 nicht automatisch Version XY läuft, sondern, das dies ein spezieller Release Tag ist. Wenn ich nun immer wieder an DRUPAL-5 commite, nutze ich eigentlich nicht die Versionsverwaltung, sondern überschreibe immer wieder diese aktuelle Version.

Ich sollte also die aktuelle Version auschecken und unter einem eigenen Tag wieder einchecken. Diesen Tag nehme ich dann und veröffentliche es als dev Release auf Drupal.org.

--

Ich werde wenn ich Zeit finde das Web nochmal nach allgemeinem CVS Best Use durchforsten. Meine Hoffnung war ja, das nicht tun zu müssen und mit dem aus zu kommen, was auf drupal.org steht, aber ich fürchte mir fehlen wirklich Grundlagen.

Joomla hatte SVN das hab ich auf Anhieb verstanden und es war alles viel besser! ;)

[edit]
Mal direkt gefragt:

Welche Version sollte ich auschecken und welche Version sollte ich commiten und vielleicht dabei anlegen wenn ich die D5 und D6 aktualisieren will?

@Tom
Telefon wäre 040 / 350 80 145
Aber ich will dir ja nicht zu viel Zeit stehlen ohne Kaffee und Kuchen ;)

Danke für die Hilfe!

Karsten

Vielleicht ist das noch hilfreich

Tom Freudenberg's picture

Moin Karsten, ich war heute unterwegs, daher jetzt erst eine Info. Folgendes ist m.E. für Dich nochmal interessant:

Wenn Du auf die Release Notes der jeweilige Module Stände klickst, dann siehst Du was woraus gebaut wird, z.B. http://drupal.org/node/206866

ecard 5.x-1.x-dev
5.x · New features
mssarath - January 6, 2008 - 09:54
Nightly development snapshot from CVS branch: HEAD

oder

ecard 5.x-1.5
5.x
mssarath - September 11, 2008 - 10:57
Official release from CVS tag: DRUPAL-5--1-5

Das bedeutet (ich meine das zumindest) sobald Du am HEAD branch, das ist aus/einchecken OHNE JEGLIGCHES TAG, arbeitest und das wieder eincheckst, sollte sich der DEV branch und damit auch das dev.tgz in den Releases aktualisieren.

Willst Du nun ein neues Stable einchecken (auch hier wieder mein glauben) musst Du ein nachfolgendes TAG im aktuellen Fall DRUPAL-5--1-6 (NEU) vergeben. Aus meiner Sicht wird dann die Releases Liste mit diesem neuen Release ersetzt.

Das TAG DRUPAL-5 überschreibst Du halt die ganze Zeit immer wieder ohne, dass hieraus was gebaut wird. So denke ich, dass es auf drupal.org läuft.

LG, Tom

Vergleich CVS - SVN

Frank Ralf's picture

Hallo Karsten,

vielleicht hilft ja ein Blick auf diese Vergleichstabelle (http://www.pushok.com/soft_svn_vscvs.php), um dir die Unterschiede zwischen CVS und SVN deutlich zu machen und dir den Transfer zu erleichtern.

Gruß
Frank

HEAD

Kars-T's picture

Danke für die Antworten. In der Liste von Frank steht ja deutlich, das SVN keine TAGs hat. Kein wunder, das ich das erstmal nicht kenne ;)

Ich sehe jetzt was Tom mein und versuche nun mal HEAD zu aktualsieren. Wenn das nicht klappt, mache ich meinen eigenen Versions TAG und DEV Release. Ich hoffe das bekomme ich wenigstens gebacken...

[edit] Das scheint zu gehen! :D

Kleine Info noch am Rande

Tom Freudenberg's picture

auch SVN kennt TAGS. Ein typisches SVN Repository besitzt meist folgendes ebenen:

projectname
 +- branches
 +- tags
 +- trunk

in der Regel wird auf trunk entwickelt, aber man sollte für - andere bzw. sub-entwicklungen - den branches ordner benutzen und TAGS um wiederum Marken im Repository zu setzen, deren Namen man sich gut merken kann.

Tom

P.S.: Karsten, schön dass Du es hinbekommen hast

"The Top Ten Subversion Tips for CVS Users"

Frank Ralf's picture

Nur noch mal als Nachtrag, falls das Thema mal wieder akut wird:

The Top Ten Subversion Tips for CVS Users
http://www.onlamp.com/pub/a/onlamp/2004/08/19/subversiontips.html

Hamburg / Schleswig-Holstein

Group categories

Kategorien

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: