{"id":87,"date":"2005-02-24T21:37:29","date_gmt":"2005-02-24T19:37:29","guid":{"rendered":"http:\/\/blogs.bl0rg.net\/netzstaub\/?p=87"},"modified":"2005-02-24T21:37:29","modified_gmt":"2005-02-24T19:37:29","slug":"cvs-commitmails-verschicken","status":"publish","type":"post","link":"https:\/\/blogs.bl0rg.net\/netzstaub\/2005\/02\/24\/cvs-commitmails-verschicken\/","title":{"rendered":"CVS Commitmails verschicken"},"content":{"rendered":"<p>\nSo, als zweites Posting in der Reihe &#8220;Sachen die eigentlich nur Frust bringen&#8221;, heute mit CVS, Perlskript, und als All-Time-Favourite in Sachen Frust, Shell-Escapes. Ein sehr praktisches Feature bei CVS ist das Versenden von Commitmails. Da kann man sehen, was andere so im Repository treiben. Noch viel wichtiger, man kriegt seine eigenen Commits vor die Nase gehalten, und wird quasi beim durchforsten der INBOX gezwungen, noch mal kurz dr&#252;ber zu schauen. Oft findet man da auch schon den ersten Bug \ud83d\ude42\n<\/p>\n<p>\nHeute wollte ich also das automatische Versenden von Commitmails mit Diff-Output (ohne Diff-Output sieht man nur die ver&#228;nderten Files und das Commitkommentar, das meistens ohne Diff genau nichtsagend ist. Von sich aus kann CVS sowas nat&#252;rlich nicht, man muss also ein Skript dazu basteln. Als erstes, so kann man &#8220;normale&#8221; Commitmails verschicken mit CVS:\n<\/p>\n<p>\nZuerst CVSROOT auschecken:<br \/>\n<br \/>$ cvs co CVSROOT<br \/>\n<br \/>Dann loginfo editieren:<br \/>\n<br \/>$ cd CVSROOT\/ &#38;&#38; vi loginfo<br \/>\n<br \/>Dort dann zum Beispiel so eine Zeile eintragen:<br \/>\n<br \/>DEFAULT                          mail -s &#8220;[CVS] %{}&#8221; broesel@foobar.com\n<\/p>\n<p>\nAls Alternative kann man auch anstatt DEFAULT Namen von Modulen im CVS eintragen, um z.B. Mails an die einzelnen Entwickler der Module zu verschicken. Wenn ein Modul explizit angegeben wird greift &#252;brigens DEFAULT nicht mehr, da kann man wenn man will allerdings ALL verwenden. Nun gut, jetzt zum eigentlichen Thema der Mail. Es gibt da so ein Skript namens log_accum.pl, das irgendwo bei mir rumfuhr. <a href=\"http:\/\/blogs.bl0rg.net\/netzstaub\/files\/log_accum.txt\">log_accum.pl<\/a> scheint (ich hab das Skript jetzt nicht wirklich genau durchgelesen, scheint ziemlich organisch gewachsen zu sein) die Diffs irgendwie zusammen zu sammeln, und mailt sie dann. Ich habe das Skript noch kurz umge&#228;ndert, damit es an alle Mailadressen auf der Kommandozeile mailt.\n<\/p>\n<p>\nEinrichten tut man das Skript wie folgt:<br \/>\n<br \/>$ cp log_accum.pl CVSROOT\/<br \/>\n<br \/>$ cd CVSROOT<br \/>\n<br \/>$ cvs add log_accum.pl\n<\/p>\n<p>\nDann muss man CVS sagen, er soll beim Repository konfigurieren doch bitte auch noch log_accum.pl auschecken, dazu tr&#228;gt man log_accum.pl in die Datei checkoutlist ein<br \/>\n<br \/>$ echo log_accum.pl &gt;&gt; checkoutlist\n<\/p>\n<p>\nUnd als letztes kann man dann solche Zeilen in die loginfo eintragen:<br \/>\n<br \/>DEFAULT                $CVSROOT\/CVSROOT\/log_accum.pl &#8220;%{}&#8221; foobar@bratz.com broesel@hupf.de\n<\/p>\n<p>\nGanz wichtig ist hier das &#8220;%{}&#8221;, wenn man &#8220;%s&#8221; escaped er das irgendwie nicht richtig, und das Skript sendet mails an Makefile@localhost usw&#8230; Das &#252;bliche Shellskriptproblem also&#8230;\n<\/p>\n<p>\nGanz zum Schluss dann committen, und beim n&#228;chsten commit kommt auch die bunte Mail mit Diff:\n<\/p>\n<p>\n$ cvs ci -m &#8220;bunte mails&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So, als zweites Posting in der Reihe &#8220;Sachen die eigentlich nur Frust bringen&#8221;, heute mit CVS, Perlskript, und als All-Time-Favourite in Sachen Frust, Shell-Escapes. Ein sehr praktisches Feature bei CVS ist das Versenden von Commitmails. Da kann man sehen, was &hellip; <a href=\"https:\/\/blogs.bl0rg.net\/netzstaub\/2005\/02\/24\/cvs-commitmails-verschicken\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-computerstaub"],"_links":{"self":[{"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/posts\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":0,"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.bl0rg.net\/netzstaub\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}