<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <meta name="author" content="EGerrit team">
    
    <meta name="keywords" content="" />
    <meta name="generator" content="Hugo 0.14" />
    <link href="//fonts.googleapis.com/css?family=Open+Sans:400,700,300,600,100" rel="stylesheet" type="text/css">
    <link rel="shortcut icon" href="https://www.eclipse.org/egerrit/public/images/favicon.ico"/>
    <title>EGerrit</title>
    <meta property="og:title" content="" />
    <meta property="og:description" content="EGerrit" />
    <meta property="og:image" content="https://www.eclipse.org/egerrit/images/logo/eclipse.png" />
    <link rel="stylesheet" href="https://www.eclipse.org/egerrit/public/css/solstice.css">
    <link href="https://www.eclipse.org/egerrit//css/prism.css" rel="stylesheet" />
    
    
  </head>
  <body class="" id="body_solstice">
    <a class="sr-only" href="#content">Skip to main content</a>
    <div id="toolbar-container-wrapper" class="clearfix">
      <div class="container">
        <div id="row-toolbar" class="region region-toolbar text-right hidden-print">
          <div id="row-toolbar-col" class="col-md-24">
            <section id="block-solstice-support-solstice-support-toolbar" class="block block-solstice-support clearfix">
              <div class="block-content"><ul class="list-inline"><li>&nbsp;</li></ul></div>
            </section>
          </div>
        </div>
      </div>
    </div>
    <header role="banner">
      <div class="container">
        <div id="row-logo-search">
          <div id="header-left" class="col-sm-14 col-md-16 col-lg-19">
            <div class="row">
              <div class="hidden-xs">
                <a href="https://eclipse.org/"><img src="https://www.eclipse.org/egerrit/public/images/logo/eclipse-800x188.png" alt="Eclipse.org logo" class="logo-eclipse-default"/></a>
              </div>
              <div id="main-menu" class="navbar row yamm">
                <div id="navbar-collapse-1" class="navbar-collapse collapse">
                  <ul class="nav navbar-nav">
                    

<li class="dropdown">
  <a data-toggle="dropdown" class="dropdown-toggle">More<b class="caret"></b></a>
  <ul class="dropdown-menu">
    <li>
      
      <div class="yamm-content">
        <div class="row">
          <ul class="col-sm-8 list-unstyled">
            <li>
              <p><strong>Community</strong></p>
            </li>
            <li><a href="http://marketplace.eclipse.org">Marketplace</a></li>
            <li><a href="http://events.eclipse.org">Events</a></li>
            <li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li>
            <li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li>
            <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li>
          </ul>
          <ul class="col-sm-8 list-unstyled">
            <li>
              <p><strong>Participate</strong></p>
            </li>
            <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
            <li><a href="https://eclipse.org/forums/">Forums</a></li>
            <li><a href="https://eclipse.org/mail/">Mailing Lists</a></li>
            <li><a href="https://wiki.eclipse.org/">Wiki</a></li>
            <li><a href="https://wiki.eclipse.org/IRC">IRC</a></li>
            <li><a href="https://eclipse.org/contribute/">How to Contribute</a></li>
          </ul>
          <ul class="col-sm-8 list-unstyled">
            <li>
              <p><strong>Working Groups</strong></p>
            </li>
            <li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li>
            <li><a href="http://iot.eclipse.org">Internet of Things</a></li>
            <li><a href="http://locationtech.org">LocationTech</a></li>
            <li><a href="http://lts.eclipse.org">Long-Term Support</a></li>
            <li><a href="http://polarsys.org">PolarSys</a></li>
            <li><a href="http://science.eclipse.org">Science</a></li>
            <li><a href="http://www.openmdm.org">OpenMDM</a></li>
          </ul>
        </div>
      </div>
    </li>
  </ul>
</li>


                  </ul>
                </div>
                <div class="navbar-header">
                  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
                  <span class="sr-only">Toggle navigation</span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  </button>
                  <a href="https://eclipse.org/" class="navbar-brand visible-xs"><img src="https://www.eclipse.org/egerrit//public/images/logo/eclipse-800x188.png" alt="Eclipse.org logo" width="174" class="logo-eclipse-default"/></a>
                </div>
              </div>
            </div>
          </div>
          <div id="header-right" class="form-inline col-sm-10 col-md-8 col-lg-5 hidden-print hidden-xs">
            <div id="header-right-container">
              <div id="custom-search-form" class="reset-box-sizing">
  <script>
    (function() {
      var cx = '011805775785170369411:15ipmpflp-0';
      var gcse = document.createElement('script');
      gcse.type = 'text/javascript';
      gcse.async = true;
      gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
          '//cse.google.com/cse.js?cx=' + cx;
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(gcse, s);
    })();
  </script>
  <gcse:searchbox-only></gcse:searchbox-only>
</div>

              
            </div>
          </div>
        </div>
      </div>
    </header>
    <section id="breadcrumb" class="defaut-breadcrumbs hidden-print">
  <div class="container">
    <h3 class="sr-only">Breadcrumbs</h3>
    <div class="col-xs-24">
      
      
      <ol class="breadcrumb">
        <li><a href="https://www.eclipse.org/">Home</a></li>
        <li><a href="https://www.eclipse.org/egerrit/">EGerrit</a></li>
        
        
        
        
      </ol>
    </div>
  </div>
</section>

    <main role="main" class=" no-promo">
    <div class="container background-image-none" id="novaContent">
    

<div class="container">
  <h1>EGerrit</h1>
  
    
  
    
        

<p><img src="images/EGerrit.png" alt="EGerritLogo" />
</p>

<p>EGerrit is an Eclipse plug-in that provides an integration of <a href="http://gerrit-review.googlesource.com/">Gerrit</a> in Eclipse. Gerrit is a review tool that facilitates collaboration between committers and contributors of a project. EGerrit aims at deeply integrating the best of Gerrit&rsquo;s features into Eclipse to minimize the context switch from the IDE to the web, and leverage IDE specific features such as syntax coloring, navigation, etc.</p>

<p>As such, EGerrit allows to perform most operations on reviews such as voting, submitting, abandoning, etc. Also it gives the user the ability to directly comment in the file when reviewing the changes.</p>

<h1 id="installation:d680e8a854a7cbad6d490c445cba2eba">Installation</h1>

<p>You can install EGerrit from the Eclipse MarketPlace by drag-and-dropping this link on your Eclipse installation
<a href="http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=2579663" class="drag" title="Drag to your running Eclipse workspace to install EGerrit"><img src="https://marketplace.eclipse.org/sites/all/themes/solstice/_themes/solstice_marketplace/public/images/btn-install.png" alt="Drag to your running Eclipse workspace to install EGerrit" /></a></p>

<p>If you want more recent builds, please consult the list of our <a href="https://wiki.eclipse.org/EGerrit/p2_repositories">p2 repositories</a>.</p>

<h1 id="documentation:d680e8a854a7cbad6d490c445cba2eba">Documentation</h1>

<p>You can find preliminary documentation <a href="https://wiki.eclipse.org/EGerrit/p2_repositories">here</a>.</p>

<h1 id="2-minutes-introduction-video:d680e8a854a7cbad6d490c445cba2eba">2 minutes introduction video</h1>

<iframe width="420" height="315" src="https://www.youtube.com/embed/HM6FuBqOMKU" frameborder="0" allowfullscreen></iframe>

<h1 id="screenshots:d680e8a854a7cbad6d490c445cba2eba">Screenshots</h1>

<h2 id="gerrit-dashboard-view:d680e8a854a7cbad6d490c445cba2eba">Gerrit dashboard view</h2>

<p><img src="images/EGerritDashboard.png" alt="EGerrit dashboard view" />
</p>

<h2 id="gerrit-review-editor:d680e8a854a7cbad6d490c445cba2eba">Gerrit review editor</h2>

<p><img src="images/EGerritEditor.png" alt="EGerrit review editor" />
</p>

<h2 id="inline-comment-editing:d680e8a854a7cbad6d490c445cba2eba">Inline comment editing</h2>

<p><img src="images/EGerritInlineComment.png" alt="EGerrit review editor" />
</p>

    
  
</div>

</div>
</main>

<p id="back-to-top">
  <a class="visible-xs" href="#top">Back to the top</a>
</p>
<footer role="contentinfo" id="solstice-footer">
  <div class="container">
    <div class="row">
      <section id="footer-eclipse-foundation" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print">
        <h2 class="section-title">Eclipse Foundation</h2>
        <ul class="nav">
          <li><a href="https://eclipse.org/org/">About us</a></li>
          <li><a href="https://eclipse.org/org/foundation/contact.php">Contact Us</a></li>
          <li><a href="https://eclipse.org/donate">Donate</a></li>
          <li><a href="https://eclipse.org/org/documents/">Governance</a></li>
          <li><a href="https://eclipse.org/artwork/">Logo and Artwork</a></li>
          <li><a href="https://eclipse.org/org/foundation/directors.php">Board of Directors</a></li>
        </ul>
      </section>
      <section id="footer-legal" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print ">
        <h2 class="section-title">Legal</h2>
        <ul class="nav">
          <li><a href="https://eclipse.org/legal/privacy.php">Privacy Policy</a></li>
          <li><a href="https://eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
          <li><a href="https://eclipse.org/legal/copyright.php">Copyright Agent</a></li>
          <li><a href="https://eclipse.org/org/documents/epl-v10.php">Eclipse Public License </a></li>
          <li><a href="https://eclipse.org/legal/">Legal Resources </a></li>
        </ul>
      </section>
      <section id="footer-useful-links" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print">
        <h2 class="section-title">Useful Links</h2>
        <ul class="nav">
          <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
          <li><a href="//help.eclipse.org/">Documentation</a></li>
          <li><a href="https://eclipse.org/contribute/">How to Contribute</a></li>
          <li><a href="https://eclipse.org/mail/">Mailing Lists</a></li>
          <li><a href="https://eclipse.org/forums/">Forums</a></li>
          <li><a href="//marketplace.eclipse.org">Marketplace</a></li>
        </ul>
      </section>
      <section id="footer-other" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0 hidden-print">
        <h2 class="section-title">Other</h2>
        <ul class="nav">
          <li><a href="https://eclipse.org/ide/">IDE and Tools</a></li>
          <li><a href="https://eclipse.org/projects">Community of Projects</a></li>
          <li><a href="https://eclipse.org/org/workinggroups/">Working Groups</a></li>
        </ul>
        <ul class="list-inline social-media">
          <li><a href="https://twitter.com/EclipseFdn"><i class="fa fa-twitter-square"></i></a></li>
          <li><a href="https://plus.google.com/+Eclipse"><i class="fa fa-google-plus-square"></i></a></li>
          <li><a href="https://www.facebook.com/eclipse.org"><i class="fa fa-facebook-square"></i> </a></li>
          <li><a href="https://www.youtube.com/user/EclipseFdn"><i class="fa fa-youtube-square"></i></a></li>
        </ul>
      </section>
      <div id="copyright"  class="col-xs-offset-1 col-sm-14 col-md-24 col-md-offset-0">
        <div>
          <span class="hidden-print"><img src="https://www.eclipse.org/egerrit/public/images/logo/eclipse-logo-bw-800x188.png" alt="Eclipse.org black and white logo" width="166" height="39" id="logo-eclipse-white"/></span>
          <p id="copyright-text">Copyright &copy; 2015 The Eclipse Foundation. All Rights Reserved.</p>
        </div>
      </div>
      <a href="#" class="scrollup">Back to the top</a>
    </div>
  </div>
</footer>

<script src="https://www.eclipse.org/egerrit/public/js/solstice.js"></script>
<script src="https://www.eclipse.org/egerrit//js/prism.js"></script>
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-910670-2']);
  _gaq.push(['_trackPageview']);
  
  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
  
</script>
</body>
</html>

