{"id":38,"date":"2009-07-24T20:45:14","date_gmt":"2009-07-24T19:45:14","guid":{"rendered":"http:\/\/blog.kalmbach-software.de\/de\/2009\/07\/24\/tfs-check-in-kommentare-automatisch-in-source-code-einfugen\/"},"modified":"2009-08-09T20:25:00","modified_gmt":"2009-08-09T19:25:00","slug":"tfs-check-in-kommentare-automatisch-in-source-code-einfugen","status":"publish","type":"post","link":"http:\/\/blog.kalmbach-software.de\/de\/2009\/07\/24\/tfs-check-in-kommentare-automatisch-in-source-code-einfugen\/","title":{"rendered":"TFS: Check-In Kommentare automatisch in Source-Code einf\u00fcgen"},"content":{"rendered":"<p>TFS ist ja was wunderbare&#8230; nur wer bisher ohne sowas gearbeitet hat, oder cvs genutzt hat, der hat meistens seine \u00c4nderungen direkt im Header\/Footer seiner cpp\/h-Datei reingeschrieben. Dies hatte den gro\u00dfen Vorteil, dass man direkt zwei Dateien vergleichen konnte und sofort gesehen hat, wer was gemacht hat.<br \/>\nDies geht so mit dem TFS nicht. Man ben\u00f6tigt immer den Team Explorer (oder VS) um die Kommentare einer \u00c4nderung zu sehen.<br \/>\nEs ist also so nicht so einfach m\u00f6glich &#8220;disconnected&#8221; zu arbieten und trotzdem zu jeder Datei die ganzen \u00c4nderungen (zumindest anhand den Kommentaren) zu erkennen.<\/p>\n<p>Im cvs gab es sowas wie ein &#8220;<a href=\"http:\/\/www.ie.gnu.org\/software\/cvs\/manual\/html_chapter\/cvs_17.html\">keyword-substitution<\/a>&#8220;. Damit konnte man z.B. &#8220;$log$&#8221; in einen Kommentar seines Source-Codes einf\u00fcgen und das cvs hat beim Check-In automatisch den Kommentar in die Source-Datei eingef\u00fcgt.<\/p>\n<p>Sowas habe ich auch f\u00fcr den TFS gesucht aber nicht gefunden. Mir wurde an diversen stellen gesagt, das sowas nicht geht&#8230;<\/p>\n<p>Jetzt habe ich mich gestern selber drangemacht es zu probieren \ud83d\ude09<\/p>\n<p>Und voila: Es klappt&#8230;<br \/>\nHabe 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 &#8220;$log$&#8221; Eintrag vorhanden ist.<\/p>\n<p>Ich bin jetzt wirklich begeistert!<br \/>\nDas Ding tut einwandfrei&#8230; hab es jetzt sogwar soweit, dass man es ganz h\u00fcbsch parametrieren kann; d.h. man kann ganz frei &#8220;Templates&#8221; vorgeben, wie die Kommentare aussehen sollen.<\/p>\n<p>Hier mal zwei Beispiele:<\/p>\n<p>Man kann die Kommentare entweder von oben nach unten einf\u00fcgen lassen:<\/p>\n<pre lang=\"CPP\">\r\n\/**************************************************************\r\n *\r\n *  Description: ...\r\n *\r\n *  History\r\n *  -------\r\n *\r\n *    Date   |Author | Comment\r\n *  ---------+-------+----------------------------------\r\n *  24.07.09 | kalmb | sdfsdf sdfsdf sdfs\r\n *  24.07.09 | kalmb | Zeile 1\r\n *           |       | Zeile 2\r\n *           |       | Zeile 3\r\n *           |       | Zeile 4\r\n *  24.07.09 | kalmb | sdafsdgdgdfsgsdfgdfsgdsfgdfs\r\n *  24.07.09 | kalmb | fgd dsfgdfsgdsfgdfgd\r\n *  24.07.09 | kalmb | asdasdf sadfsfsfsdfasdfas\r\n *  $log$\r\n *\r\n **************************************************************\r\n *\/\r\n<\/pre>\n<p>Oder auch von unten nach oben (wie cvs):<\/p>\n<pre lang=\"CPP\">\r\n\/*\r\n * $log$\r\n * \r\n * Comment: Nochmals eine \u00c4nderung\r\n * User: DOMAIN\\name\r\n * DateTime: 2009-07-23 22:04:22\r\n * Change: edit\r\n * \r\n * Comment: dsfsdfsdfsd\r\n *          sdfsdfgsdfhgf hdfhfdghdfghfgdh\r\n * User: DOMAIN\\name\r\n * DateTime: 2009-07-23 22:00:36\r\n * Change: edit\r\n *\/\r\n<\/pre>\n<p>Aus meiner Sicht ist dies das beste PlugIn, was ich seit langem gesehen habe \ud83d\ude09<\/p>\n<p>Was meint Ihr dazu?<br \/>\nWer interesse hat, darf sich gerne bei mir melden&#8230;<\/p>\n<p>EDIT: Gestern hab ich meine &#8220;Keyword Substitution Check-In Policy&#8221; auf <a href=\"http:\/\/logsubstpol.codeplex.com\/\">Codeplex<\/a> ver\u00f6ffentlicht: <a href=\"http:\/\/logsubstpol.codeplex.com\/\">http:\/\/logsubstpol.codeplex.com\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TFS ist ja was wunderbare&#8230; nur wer bisher ohne sowas gearbeitet hat, oder cvs genutzt hat, der hat meistens seine \u00c4nderungen direkt im Header\/Footer seiner cpp\/h-Datei reingeschrieben. Dies hatte den gro\u00dfen Vorteil, dass man direkt zwei Dateien vergleichen konnte und sofort gesehen hat, wer was gemacht hat. Dies geht so mit dem TFS nicht. Man [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,3],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","hentry","category-alles-uber-dotnet-programmierung","category-alles-uber-die-echte-windowsprogrammierung"],"_links":{"self":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":0,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.kalmbach-software.de\/de\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}