[linux-l] Re: VCS

Steffen Dettmer steffen at dett.de
Fr Apr 14 23:58:43 CEST 2006


* Volker Grabsch wrote on Fri, Apr 07, 2006 at 12:06 +0200:
> On Thu, Apr 06, 2006 at 12:38:32AM +0200, Steffen Dettmer wrote:
> > Interessant, anscheinend hat man sich sehr auf die Vorteile
> > von Darcs konzentriert...
> > 
> > Keywords gehen auch nicht, komisch. "These keywords modify the source
> > files directly, whereas the versioning system should leave the source
> > untouched.". Die Anforderung kenn ich so nicht. Ich erwarte z.B. sogar,
> > dass ich .c Files auf Win-Maschinen mit CRLF ausgecheckt bekomme.
> > Reproduzierbar muss es sein, nicht "untouched", na egal.
> 
> Das ist wohl ein Missverständnis. Es geht wohl darum, dass diese
> Änderung (LF -> CRLF) nicht in die Versionskontrolle kommt, sondern
> beim Einchecken / Auschecken jeweils on-the-fly umgewandelt wird.
> 
> So würde ich das interpretieren.

Ich interpretiere das so, dass sowas wie $Header$ und $Name$ nicht geht.
Damit sehe ich dann den Files nicht an, wie ich sie im SCM
identifizieren kann. Und das ist doof. Identifizierbarkeit ist eine
Grundforderung eines jeden sauberen Prozesses. Gut, man muss Darcs ja
nicht gleich ISO 9001 zertifizieren ;)

Das Frontend (also lokale GUI, "cvs" Kommando, ...) zählt eindeutig zum
SCM dazu, also wenn hier was on-the-fly umgewandelt wird, ist das IMHO
eindeutig eine SCM Funktion. Aber Details, klar.

> > "a similar and more useful feature", "darcs changes --last=1 --summary"
> > hat ja den Nachteil, dass ich es der Datei nicht ansehe, "wozu" diese
> > gehört.
> 
> Ich weiß nicht, was du willst, aber
> 
>     darcs changes [...optionen...] Datei.txt
> 
> liefert dir nur diejenigen "Changes", die die Datei berühren. Mit
> "--last=1" hat das natürlich nichts mehr zu tun.

Beispiel:

Ich nehme ein File und verschicke es per eMail. Ich bekomme es geändert
zurück. Nun möchte ich es einchecken.

Bei CVS gucke ich in $Name$. Ist es leer, wurde kein Tag benutzt,
schlecht, aber macht nichts, guckt man in $Header$. Man bekommt es in
jedem Fall identifiziert (da nach unseren Entwicklerregeln sowohl Header
als auch Name drinstehen muss - sonst kann man gar nicht einchecken).

Ich kann also eine Sandbox so updaten, dass die Datei passt. Dann
kopiere ich die drüber. Nun kann ich cvs diff benutzen. Ich kann nun auf
die neueste Branchversion oder sonstwohin updaten und einchecken. Oder
ich könnte neu branchen und einchecken (aber das hab ich noch nie in
dieser Kombination gebraucht).

Wie macht man sowas, wenn die Datei vom SCM gar nicht automatisch
markiert wird?

Möglicherweise liegt hier ein Missverständnis vor. Das SCM darf die
Reproduzierbarkeit nicht verletzen. Also keinen $State$, der sich später
ändern kann oder so. Aber das macht ein $Name$ nicht. Checke ich es
zweimal aus, bekomme ich zweimal exakt das gleiche. Es ist
reproduzierbar. Hier ist nämlich nicht gefordert, dass dieses Ergebnis
jemals so eingecheckt wurde, nur, dass man einen "export" immer wieder
später genau wiederholen kann.

> > "Conflict Reduction" liest sich auch wie aus'm Marketing-Handbuch,
> > mmm...
> 
> Ein Marketing-Text würde sowas zwar auch sagen, sich dabei aber auf
> menschliche, nicht technische, Konflikte beziehen.  :-)

Nee, ich meinte, genau sowas würde ich schreiben, wenn ich keine Ahnung
ab und weiss, dass mein Leser auch keine Ahnung haben wird. Es sagt
nichts aus, klingt aber geil :-)

> > Vielleicht mit "praktischem Hintergrund"? Ich mein, ne gute Idee
> > nützt ja nix, wenn es in Produktion Probleme geben kann. Schwieriges
> > Thema jedenfalls. Ich glaube, daher verwenden viele CVS.
> 
> Ich denke, selbst Subversion bereitet viel weniger Probleme als CVS,
> und ist in nahezu jeder realen Anwendung die bessere Alternative. Ob
> dies aber den Umstiegs-Aufwandt rechtfertigt, ist natürlich ne andere
> Frage, die jede Gruppe für sich klären muss.

Ich höre immer: es ist besser und dies und das. Aber was helfen mir denn
die ganzen Features wirklich? Ich kann mir das kaum was vorstellen. Oder
HTTPS+SOAP+XML+WEBDAV. Was bitte hab ich davon, ausser das es langsam
ist, das XML Overheadlastig und in fast allen Anwendungen falsch ist
(ASN.1 müsste man nehmen, viel älter und viel besser) und ausserdem will
ich keinen Webserver mit einem völlig ungeignetem Protokoll in so einem
System haben. Hab das nie verstanden, wozu man das brauchen soll. Weil
es über Proxies geht? Muss man halt SOCKS nehmen. Oder CGI-Irgendwas,
was nicht für Menschen, sondern für Tools ist. Wozu? Damit der Client
auf'm Mobiltelefon läuft?

Wirkt auf mich immer bissel theoretisch; kann mir gut vorstellen, dass
die Probleme in der Praxis gar nicht sooo viel besser gelöst werden,
weil dann das wirklich wichtige Feature fehlt oder so. Vielleicht muss
ein SCM C-Code verstehen können, um besser zu mergen oder so, keine
Ahnung.

Leider ist es ja auch nicht so einfach, wie ein SCM anzugucken. Muss ja
installiert werden, klar, aber wo kriegt man grosse Sourcen her?
Komplizierte Branches, die man Testweise mergt etc? Schon schwierig...

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l