TFS: Check-In Kommentare automatisch in Source-Code einfügen

TFS ist ja was wunderbare… nur wer bisher ohne sowas gearbeitet hat, oder cvs genutzt hat, der hat meistens seine Änderungen direkt im Header/Footer seiner cpp/h-Datei reingeschrieben. Dies hatte den großen Vorteil, dass man direkt zwei Dateien vergleichen konnte und sofort gesehen hat, wer was gemacht hat.
Dies geht so mit dem TFS nicht. Man benötigt immer den Team Explorer (oder VS) um die Kommentare einer Änderung zu sehen.
Es ist also so nicht so einfach möglich “disconnected” zu arbieten und trotzdem zu jeder Datei die ganzen Änderungen (zumindest anhand den Kommentaren) zu erkennen.

Im cvs gab es sowas wie ein “keyword-substitution“. Damit konnte man z.B. “$log$” in einen Kommentar seines Source-Codes einfügen und das cvs hat beim Check-In automatisch den Kommentar in die Source-Datei eingefügt.

Sowas habe ich auch für den TFS gesucht aber nicht gefunden. Mir wurde an diversen stellen gesagt, das sowas nicht geht…

Jetzt habe ich mich gestern selber drangemacht es zu probieren 😉

Und voila: Es klappt…
Habe nun ein kleines VS-PlugIn geschrieben (Check-In Policy), welche beim Check-In in den TFS den Kommentar in die Source-Datei reinschreibt, wenn dort ein “$log$” Eintrag vorhanden ist.

Ich bin jetzt wirklich begeistert!
Das Ding tut einwandfrei… hab es jetzt sogwar soweit, dass man es ganz hübsch parametrieren kann; d.h. man kann ganz frei “Templates” vorgeben, wie die Kommentare aussehen sollen.

Hier mal zwei Beispiele:

Man kann die Kommentare entweder von oben nach unten einfügen lassen:

/**************************************************************
 *
 *  Description: ...
 *
 *  History
 *  -------
 *
 *    Date   |Author | Comment
 *  ---------+-------+----------------------------------
 *  24.07.09 | kalmb | sdfsdf sdfsdf sdfs
 *  24.07.09 | kalmb | Zeile 1
 *           |       | Zeile 2
 *           |       | Zeile 3
 *           |       | Zeile 4
 *  24.07.09 | kalmb | sdafsdgdgdfsgsdfgdfsgdsfgdfs
 *  24.07.09 | kalmb | fgd dsfgdfsgdsfgdfgd
 *  24.07.09 | kalmb | asdasdf sadfsfsfsdfasdfas
 *  $log$
 *
 **************************************************************
 */

Oder auch von unten nach oben (wie cvs):

/*
 * $log$
 * 
 * Comment: Nochmals eine Änderung
 * User: DOMAIN\name
 * DateTime: 2009-07-23 22:04:22
 * Change: edit
 * 
 * Comment: dsfsdfsdfsd
 *          sdfsdfgsdfhgf hdfhfdghdfghfgdh
 * User: DOMAIN\name
 * DateTime: 2009-07-23 22:00:36
 * Change: edit
 */

Aus meiner Sicht ist dies das beste PlugIn, was ich seit langem gesehen habe 😉

Was meint Ihr dazu?
Wer interesse hat, darf sich gerne bei mir melden…

EDIT: Gestern hab ich meine “Keyword Substitution Check-In Policy” auf Codeplex veröffentlicht: http://logsubstpol.codeplex.com/

7 thoughts on “TFS: Check-In Kommentare automatisch in Source-Code einfügen

  1. Andre Loker

    Deine Mühe in allen Ehren, aber mMn gehören diese Logs bei Verwendung eines Versionskontrollsystems (VCS) nicht in den Quellcode. Denn eben dafür ist doch das VCS da! Wenn ich mir die Geschichte einer Datei anschauen will, gehe ich zum VCS und habe dort fein säuberlich alle betreffenden Logs und die dazugehörigen Diffs. Ich kann dort suchen, sortieren, filtern, sehen welche Dateien vom selben Commit betroffen sind etc…

    Warum den Leser des Quellcodes also immer erst durch einen Wust an Commit Messages scrollen lassen?

  2. jkalmbach Post author

    Über Sinn und Unsinn solcher Infos wurde schon oft diskutiert… da hat jeder seine Eigene Meinung…
    Fakt ist für mich; sobald man das VCS nicht mehr hat, kann man die “History-Kommentare nicht mehr erkennen… ich habe hier einen Anwendungsfall wo die Software sehr lange gepflegt werden muss (>20 Jahre) und z.B. das VCS öfters gewechselt wird; ein “portieren” der alten Datenbestände ist oft aber nicht möglich… dann würden alle Kommentare verlorgen gehen…
    Aber wie gesagt: Darüber zu diskutieren ist sinnlos… entweder man mag es oder nicht.

  3. Martin Richter

    Ich hätte Interesse an Deinem Tool.
    Ich kann Deine Intention nachvollziehen und verstehe auch, dass eben die Historie des TFS/VSS eben nicht immer verfügbar ist und bleibt.

  4. jkalmbach Post author

    Was willst Du mir jetzt damit sagen? Das es dort auch Keyword expansion gibt? Konnte ich aber nicht finden…

  5. Sven

    Ich wollte damit nur sagen, dass man mit Sidekicks auch alle Änderungen einsehen kann, ohne dass man einen Team Explorer oder ein VS installieren muss.

  6. jkalmbach Post author

    Ach so… das hilft mir aber nichts, wenn ich gar keine Verbindung zum TFS habe (was ja der Sinn und Zweck der Kommentare im Source-Code ist 😉
    Aber über Sinn-Und-Unsinn braucht man nicht diskutieren… entweder mal mag es oder nicht.

Comments are closed.