{"id":954,"date":"2011-02-17T15:20:58","date_gmt":"2011-02-17T14:20:58","guid":{"rendered":"http:\/\/blog.eweibel.net\/?p=954"},"modified":"2011-02-17T15:23:07","modified_gmt":"2011-02-17T14:23:07","slug":"visualize-changes-in-your-repository","status":"publish","type":"post","link":"https:\/\/blog.eweibel.net\/?p=954","title":{"rendered":"Visualize changes in your repository"},"content":{"rendered":"<p>As you perhaps know, there exists a very interesting project on Google code, with which you can visualize the activities on your repository: <a href=\"http:\/\/code.google.com\/p\/gource\/\" target=\"_blank\">Gource<\/a>.<\/p>\n<p><strong>Getting started<\/strong><\/p>\n<p>It supports Git, Mercurial, Bazaar and SVN. There is also a way to visualize the changes in a repository of a Microsoft Team Foundation server: <a href=\"http:\/\/sourceforge.net\/projects\/gourcetfs\/\" target=\"_blank\">GourceTFS<\/a>.     <br \/>Luckily, in one of my current projects I use Subversion as repository. So it is very easy to visualize the log. Just go in the command line to the root directory of your local subversion-project and type:<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:ec1822ae-41fa-48c4-b0b2-7593d1708cc1\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: bash\">gource<\/pre>\n<\/div>\n<p>Now, a new window pops up and the \u201cmovie\u201d begins. When you just want to have it as a loop in full screen mode, then type:<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3540c820-c6ae-4204-9337-1c19e4ddb67c\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: bash\">gource -f --loop <\/pre>\n<\/div>\n<p>This tool is just amazing and also very geeky ;-). Now you can see what a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Integration_testing\" target=\"_blank\">big bang integration<\/a> means.<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:aa6e26f4-268c-421c-bbb6-404772d58af9\" class=\"wlWriterEditableSmartContent\">\n<div id=\"56487a34-6bfd-4041-b684-d814d0d2c588\" style=\"margin: 0px; padding: 0px; display: inline;\">\n<div><a href=\"http:\/\/www.youtube.com\/watch?v=oiUZuYrSYK0&amp;feature=youtube_gdata_player\" target=\"_new\"><img decoding=\"async\" src=\"http:\/\/blog.eweibel.net\/wp-content\/uploads\/videoafa7e9bcc41e8.jpg\" style=\"border-style: none\" galleryimg=\"no\" onload=\"var downlevelDiv = document.getElementById('56487a34-6bfd-4041-b684-d814d0d2c588'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\\&quot;425\\&quot; height=\\&quot;355\\&quot;&gt;&lt;param name=\\&quot;movie\\&quot; value=\\&quot;http:\/\/www.youtube.com\/v\/oiUZuYrSYK0&amp;hl=en\\&quot;&gt;&lt;\\\/param&gt;&lt;embed src=\\&quot;http:\/\/www.youtube.com\/v\/oiUZuYrSYK0&amp;hl=en\\&quot; type=\\&quot;application\/x-shockwave-flash\\&quot; width=\\&quot;425\\&quot; height=\\&quot;355\\&quot;&gt;&lt;\\\/embed&gt;&lt;\\\/object&gt;&lt;\\\/div&gt;&quot;;\" alt=\"\"><\/a><\/div>\n<\/div>\n<\/div>\n<p><strong>Recording<\/strong><\/p>\n<p>I tried two ways. The first was with the tool <a href=\"http:\/\/www.fraps.com\/\" target=\"_blank\">Fraps<\/a>, which is easy to use, but it isn\u2019t for free. So I tried the second way with the <a href=\"http:\/\/ffmpeg.arrozcru.org\/\" target=\"_blank\">ffmpeg<\/a> tool. This worked well for me. First you have to create a ppm-file from gource. This file is the input for the ffmpeg tool. To create a ppm file I used this command:<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:5e062150-ced6-460b-a3c2-8a4ee8f84358\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: bash\">gource -1280x720 --seconds-per-day 0.5 -o ppm.out<\/pre>\n<\/div>\n<p>Then I used the following command to create the video:<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:306a1e63-a593-41ba-91f2-2ba50024882f\" class=\"wlWriterEditableSmartContent\">\n<pre class=\"brush: bash\">\"C:\\\\Program Files\\\\ffmpeg\\\\bin\\\\ffmpeg\" -y -b 3000K -r 60 -f image2pipe -vcodec ppm -i ppm.out -vcodec libx264 -fpre \"C:\\Program Files\\ffmpeg\\share\\ffmpeg\\\\libx264-slow.ffpreset\" -threads 0 dokudb.x264.avi<\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As you perhaps know, there exists a very interesting project on Google code, with which you can visualize the activities on your repository: Gource. Getting started It supports Git, Mercurial, Bazaar and SVN. There is also a way to visualize the changes in a repository of a Microsoft Team Foundation server: GourceTFS. Luckily, in one of my current projects I use Subversion as repository. So it is very easy to visualize the log. Just go in the command line to&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/blog.eweibel.net\/?p=954\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6,9],"tags":[],"class_list":["post-954","post","type-post","status-publish","format-standard","hentry","category-new-technology","category-private"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/plOV9-fo","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1306,"url":"https:\/\/blog.eweibel.net\/?p=1306","url_meta":{"origin":954,"position":0},"title":"Build your private git infrastructure","author":"Patrick","date":"22. Apr 2014","format":false,"excerpt":"I've got for several years a virtual server to put my own projects under version control. I started with CVS, then migrated to SVN and now I'm start thinking to migrate all the old projects to git. This because I like git very much and I use it personally for\u2026","rel":"","context":"In &quot;First experiencies&quot;","block_context":{"text":"First experiencies","link":"https:\/\/blog.eweibel.net\/?cat=7"},"img":{"alt_text":"gitlogo","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/gitlogo.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1264,"url":"https:\/\/blog.eweibel.net\/?p=1264","url_meta":{"origin":954,"position":1},"title":"Migrate a VSS repository to TFS","author":"Patrick","date":"2. Aug 2012","format":false,"excerpt":"Recently I had to migrate parts from a Microsoft Visual SourceSafe 2005 repository to a Microsoft Team Foundation Server 2010 repository. In this blog post I show what I had to do and what the pitfalls were. The tool To migrate a repository you have at least two possibilities: Migrate\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/blog.eweibel.net\/?cat=13"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":982,"url":"https:\/\/blog.eweibel.net\/?p=982","url_meta":{"origin":954,"position":2},"title":"Jenkins and .Net","author":"Patrick","date":"24. Feb 2011","format":false,"excerpt":"This week I visited the first JUG\u2019s event in Bern. The topic was Jenkins (fork of Hudson). The presentation of Dr. Simon Wiest was very entertaining. He explained continuous integration and showed how easy it is to install, configure and run Jenkins. .Net integration in Jenkins Jenkins is from the\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/blog.eweibel.net\/?cat=13"},"img":{"alt_text":"butler","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/butler_thumb.gif?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":710,"url":"https:\/\/blog.eweibel.net\/?p=710","url_meta":{"origin":954,"position":3},"title":"Subversion daemon Init script","author":"Patrick","date":"21. Jul 2010","format":false,"excerpt":"Unfortunately I didn\u2019t find a simple good daemon Init script for a debian Linux server where I want to start the subversion server svnserve automatically on start-up. So after a little bit searching on the internet and adapting the found resources (here or here), I got my Init script svnserve\u2026","rel":"","context":"In &quot;Private&quot;","block_context":{"text":"Private","link":"https:\/\/blog.eweibel.net\/?cat=9"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":622,"url":"https:\/\/blog.eweibel.net\/?p=622","url_meta":{"origin":954,"position":4},"title":"Branching practices","author":"Patrick","date":"6. Apr 2010","format":false,"excerpt":"In an environment where several developers work at the same code base or several features have to be implemented, then branching will be a topic. I was asked to create a branching guide for my current employer which use TFS as source code repository. Motivation In our projects I found\u2026","rel":"","context":"In &quot;Good practices&quot;","block_context":{"text":"Good practices","link":"https:\/\/blog.eweibel.net\/?cat=5"},"img":{"alt_text":"image","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/image_thumb3.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/image_thumb3.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/image_thumb3.png?resize=525%2C300 1.5x"},"classes":[]},{"id":835,"url":"https:\/\/blog.eweibel.net\/?p=835","url_meta":{"origin":954,"position":5},"title":"NTimeline project &#8211; First release","author":"Patrick","date":"27. Oct 2010","format":false,"excerpt":"I currently started on codeplex.com an open source project. It was inspired by my last project. In this project I was a lead developer and software architect and the domain was about a social assurance. I was responsible about several developers and also for a product of the assurance-suite. This\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/blog.eweibel.net\/?cat=13"},"img":{"alt_text":"NTimelineLogo","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/NTimelineLogo_thumb1.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=954"}],"version-history":[{"count":15,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/954\/revisions"}],"predecessor-version":[{"id":978,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/954\/revisions\/978"}],"wp:attachment":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=954"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=954"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}