{"id":21940,"date":"2011-10-03T18:50:00","date_gmt":"2011-10-03T23:50:00","guid":{"rendered":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/"},"modified":"2011-10-03T18:50:00","modified_gmt":"2011-10-03T23:50:00","slug":"integration-goodies-git-gerrit-and-mylyn","status":"publish","type":"post","link":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/","title":{"rendered":"Integration Goodies for Git, Gerrit and Mylyn"},"content":{"rendered":"<figure>\n<div class=\"feature-image\"><img decoding=\"async\" class=\"aligncenter size-full\" src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg\" alt=\"Integration Goodies for Git, Gerrit and Mylyn\"><\/div>\n<\/figure>\n<div class=\"body\">\n<div>\n<p>It&#x2019;s always a good time when you meet people in person that you otherwise only interact with through the Eclipse.org Bugzilla. Recently, Matthias Sohn organized a week long hackathon at the SAP offices in Walldorf bringing together committers from EGit, Mylyn, Gerrit and the community. From Tasktop, Benjamin Muskalla and I joined the hackathon. We enjoyed lots of free SAP coffee and had a great time working with the rest of the team. We started the first day with a brainstorm session which resulted in a task board full of story cards.<\/p>\n<p><img title=\"Task Board\" alt data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg\" class=\"lazyload\"><\/p>\n<p>My first goal was to get the Mylyn Gerrit connector working with the latest version of Gerrit. Since the early days of Mylyn we have worked bootstrapped feeling the same pains as everyone else using our tools. We know how important it is to eat our own dogfood and now that code reviews in Gerrit have (almost) become routine in our everyday workflows. Updating the tooling to work with the server used by the Mylyn project was an obvious step.<\/p>\n<p><img class=\"lazyload\" title=\"Mylyn Code Reviews\" alt height=\"163\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/mylyn-code-reviews.png\"><\/p>\n<p>I&#x2019;m happy that we made good progress during the week in Walldorf and the connector now works with Gerrit 2.2 while maintaining backwards compatibility with Gerrit 2.1. Since the Mylyn instance is configured for OpenID authentication I also added support for that. It was an interesting exercise to extend the tasks framework to allow authentication through a browser window in a way that works across Windows, Linux and Mac.<\/p>\n<p><img class=\"lazyload\" title=\"OpenID authentication through the browser\" alt height=\"450\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/gerrit-openid-auth-browser.png\"><\/p>\n<p>Once the connector was working with the latest Gerrit, I took the opportunity to work with Dariusz from EGit Sychronize view fame. Dariusz knew instantly what classes to look at to enable navigating through patch sets from the Synchronize view.<\/p>\n<p><img class=\"lazyload\" title=\"Compare Gerrit Patch Sets\" alt height=\"80\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/gerrit-compare-patch-set-button.png\"><\/p>\n<p>The feature is still a work in progress but basic functionality is already available in the latest weekly build: The compare action in the review editor fetches the patch set and opens the corresponding changes in the Sychronize view.<\/p>\n<p><img title=\"Patch Set in Synchronize View\" alt height=\"393\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/gerrit-open-in-sync-view.png\" class=\"lazyload\"><\/p>\n<p>Another useful enhancement to the Gerrit Connector was committed by Sascha Scholz who added a field for specifying free form queries.<\/p>\n<p><img title=\"Free Form Gerrit Queries\" alt data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/gerrit-free-form-query.png\" class=\"lazyload\"><\/p>\n<p>We had lively discussions with Stefan Lay, Matthias Sohn, Benjamin Muskalla, Manuel Donninger and others around automating task-based branching. Not surprisingly everyone in the room had slightly different ways of working when it came to Git and there was no straight forward answer how to best automate this. I believe we settled on a nice workflow that is not intrusive:<\/p>\n<ol>\n<li>On task deactivation, the checked out branches for all repositories connected to projects referenced in the task context are remembered<\/li>\n<li>On task activation, branches that were checked out on last deactivation (if any) are automatically checked out again restoring the same workbench state<\/li>\n<\/ol>\n<p>To support that Matthias committed a change in EGit that accelerates creating new branches by making the &#x201C;Switch To&#x201D; menu top-level in the popup menu of the Git repositories view. Additionally, Manuel proposed an enhancement to pre-populate the branch name based on the summary of the active task literally reducing the click count for creating a task branch to 4 clicks.<\/p>\n<p><img title=\"Switch To Branch\" alt data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/egit-branching.png\" class=\"lazyload\"><\/p>\n<p>Based on the progress that Manuel had already made, a number of additional changes to persist branch information per task for Mylyn were proposed that are currently under review. If you have any input, please comment on <a href=\"https:\/\/bugs.eclipse.org\/bugs\/show_bug.cgi?id=309578\" target=\"_new\" rel=\"noopener\">bug 309578<\/a>.<\/p>\n<p><img class=\"lazyload\" title=\"EGit Task Branching\" alt height=\"433\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/egit-task-branching.png\"><\/p>\n<p>A number of other features that are beyond the scope of this post were being worked on throughout the week including significant performance improvements for EGit. Of course we didn&#x2019;t limit our activities to coding but socialising was a big part of the hackathon.<\/p>\n<p><img class=\"lazyload\" title=\"Beer Garden\" alt height=\"375\" data-src=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/beers.jpg\"><\/p>\n<p>Thanks to Matthias for organizing the meeting. Hopefully we&#x2019;ll get a chance to repeat this in the future!<\/p>\n<ul>\n<li><a href=\"http:\/\/eclipse.org\/mylyn\/new\/weekly.php\" target=\"_new\" rel=\"noopener\">Mylyn Weekly New &amp; Noteworthy<\/a><\/li>\n<li><a href=\"http:\/\/wiki.eclipse.org\/EGit\/New_and_Noteworthy\/1.1\" target=\"_new\" rel=\"noopener\">EGit 1.1 New &amp; Noteworthy<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>It&#x2019;s always a good time when you meet people in person that you otherwise only interact with through the Eclipse.org Bugzilla. Recently, Matthias Sohn organized a week long hackathon at the SAP offices in Walldorf bringing together committers from EGit, Mylyn, Gerrit and the community. From Tasktop, Benjamin Muskalla and I joined the hackathon. We&#8230;<\/p>\n","protected":false},"author":233,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[478],"tags":[],"class_list":["post-21940","post","type-post","status-publish","format-standard","hentry","category-products"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Integration Goodies for Git, Gerrit and Mylyn | Tasktop Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Integration Goodies for Git, Gerrit and Mylyn\" \/>\n<meta property=\"og:description\" content=\"It&#x2019;s always a good time when you meet people in person that you otherwise only interact with through the Eclipse.org Bugzilla. Recently, Matthias Sohn organized a week long hackathon at the SAP offices in Walldorf bringing together committers from EGit, Mylyn, Gerrit and the community. From Tasktop, Benjamin Muskalla and I joined the hackathon. We...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/\" \/>\n<meta property=\"og:site_name\" content=\"Planview Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/pages\/Planview-Inc\/89422974772\" \/>\n<meta property=\"article:published_time\" content=\"2011-10-03T23:50:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg\" \/>\n<meta name=\"author\" content=\"Tasktop Blogger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Planview\" \/>\n<meta name=\"twitter:site\" content=\"@Planview\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tasktop Blogger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/\"},\"author\":{\"name\":\"Tasktop Blogger\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/person\\\/35676ea677995199889c0b6456156ce2\"},\"headline\":\"Integration Goodies for Git, Gerrit and Mylyn\",\"datePublished\":\"2011-10-03T23:50:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/\"},\"wordCount\":631,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/task-board.jpg\",\"articleSection\":[\"Products &amp; Tools\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/\",\"name\":\"Integration Goodies for Git, Gerrit and Mylyn | Tasktop Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/task-board.jpg\",\"datePublished\":\"2011-10-03T23:50:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#primaryimage\",\"url\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/task-board.jpg\",\"contentUrl\":\"https:\\\/\\\/media.planview.com\\\/tasktop_blog\\\/wp-content\\\/uploads\\\/task-board.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/integration-goodies-git-gerrit-and-mylyn\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.planview.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Integration Goodies for Git, Gerrit and Mylyn\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/\",\"name\":\"Planview Blog\",\"description\":\"Leading the conversation on digital connected work\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.planview.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#organization\",\"name\":\"Planview\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/wp-content\\\/uploads\\\/2015\\\/06\\\/planview-logo-black.png\",\"contentUrl\":\"https:\\\/\\\/blog.planview.com\\\/wp-content\\\/uploads\\\/2015\\\/06\\\/planview-logo-black.png\",\"width\":280,\"height\":66,\"caption\":\"Planview\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"http:\\\/\\\/www.facebook.com\\\/pages\\\/Planview-Inc\\\/89422974772\",\"https:\\\/\\\/x.com\\\/Planview\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.planview.com\\\/#\\\/schema\\\/person\\\/35676ea677995199889c0b6456156ce2\",\"name\":\"Tasktop Blogger\",\"url\":\"https:\\\/\\\/blog.planview.com\\\/author\\\/tasktop-blogger\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Integration Goodies for Git, Gerrit and Mylyn | Tasktop Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/","og_locale":"en_US","og_type":"article","og_title":"Integration Goodies for Git, Gerrit and Mylyn","og_description":"It&#x2019;s always a good time when you meet people in person that you otherwise only interact with through the Eclipse.org Bugzilla. Recently, Matthias Sohn organized a week long hackathon at the SAP offices in Walldorf bringing together committers from EGit, Mylyn, Gerrit and the community. From Tasktop, Benjamin Muskalla and I joined the hackathon. We...","og_url":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/","og_site_name":"Planview Blog","article_publisher":"http:\/\/www.facebook.com\/pages\/Planview-Inc\/89422974772","article_published_time":"2011-10-03T23:50:00+00:00","og_image":[{"url":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg","type":"","width":"","height":""}],"author":"Tasktop Blogger","twitter_card":"summary_large_image","twitter_creator":"@Planview","twitter_site":"@Planview","twitter_misc":{"Written by":"Tasktop Blogger","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#article","isPartOf":{"@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/"},"author":{"name":"Tasktop Blogger","@id":"https:\/\/blog.planview.com\/#\/schema\/person\/35676ea677995199889c0b6456156ce2"},"headline":"Integration Goodies for Git, Gerrit and Mylyn","datePublished":"2011-10-03T23:50:00+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/"},"wordCount":631,"publisher":{"@id":"https:\/\/blog.planview.com\/#organization"},"image":{"@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#primaryimage"},"thumbnailUrl":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg","articleSection":["Products &amp; Tools"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/","url":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/","name":"Integration Goodies for Git, Gerrit and Mylyn | Tasktop Blog","isPartOf":{"@id":"https:\/\/blog.planview.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#primaryimage"},"image":{"@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#primaryimage"},"thumbnailUrl":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg","datePublished":"2011-10-03T23:50:00+00:00","breadcrumb":{"@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#primaryimage","url":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg","contentUrl":"https:\/\/media.planview.com\/tasktop_blog\/wp-content\/uploads\/task-board.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.planview.com\/integration-goodies-git-gerrit-and-mylyn\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.planview.com\/"},{"@type":"ListItem","position":2,"name":"Integration Goodies for Git, Gerrit and Mylyn"}]},{"@type":"WebSite","@id":"https:\/\/blog.planview.com\/#website","url":"https:\/\/blog.planview.com\/","name":"Planview Blog","description":"Leading the conversation on digital connected work","publisher":{"@id":"https:\/\/blog.planview.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.planview.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blog.planview.com\/#organization","name":"Planview","url":"https:\/\/blog.planview.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.planview.com\/#\/schema\/logo\/image\/","url":"https:\/\/blog.planview.com\/wp-content\/uploads\/2015\/06\/planview-logo-black.png","contentUrl":"https:\/\/blog.planview.com\/wp-content\/uploads\/2015\/06\/planview-logo-black.png","width":280,"height":66,"caption":"Planview"},"image":{"@id":"https:\/\/blog.planview.com\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/pages\/Planview-Inc\/89422974772","https:\/\/x.com\/Planview"]},{"@type":"Person","@id":"https:\/\/blog.planview.com\/#\/schema\/person\/35676ea677995199889c0b6456156ce2","name":"Tasktop Blogger","url":"https:\/\/blog.planview.com\/author\/tasktop-blogger\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/posts\/21940","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/users\/233"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/comments?post=21940"}],"version-history":[{"count":0,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/posts\/21940\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/media?parent=21940"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/categories?post=21940"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.planview.com\/wp-json\/wp\/v2\/tags?post=21940"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}