SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Plugin


 Luca Milanesio
 GerritForge LLP

 Luca@gerritforge.com
 http://www.gerritforge.com
Who's that guy ?




       Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                   gerrit
                                                                                                                                   User Summit 2012
Why a different Git front-end ?

Large enterprises = different people !
  Gerrit "gurus" ? … likes rare GWT UI
  Git early adopters ? … used to GitWeb
  Like it new and small ? … gitiles is for you ?
  Like shiny and simple UX ? GitBlit 




       Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                   gerrit
                                                                                                                                   User Summit 2012
Why GitBlit and not others ?

 just democratic election I guess                                                                                                   Hi all,
                                                                                                            as Gerrit 2.5 is coming to the
+1, that's a great idea, I'd like                                                                             RC phase (and PlugIns will
to use that.                                                                                              soon be a reality), what do you
Would be great if this would                                                                                 think of integrating GitBlit as
integrate GitBlit in a way so                                                                                                     plug-in ?
that Gerrit permission
settings are respected also by
GitBlit.                                                                                                 +1, it would be awesome to have
                                                                                                                a built-in viewer option that
                                                                                                            respected all the Gerrit perms
@James: would you accept
contribution to GitBlit to make
this plug-in possible ?

Of course. Sounds great!

               Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                           gerrit
                                                                                                                                           User Summit 2012
GitBlit UX

                                                                                                         1. Twitter Bootstrap
                                                                                                            CSS
                                                                                                            +
                                                                                                         2. Wicket Web-
                                                                                                            Framework
                                                                                                            +
                                                                                                         3. Google Charts
                                                                                                            +
                                                                                                         4. JQuery Front-end
                                                                                                            =
                                                                                                            COOL UX !




        Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                    gerrit
                                                                                                                                    User Summit 2012
GitBlit + Gerrit challenge
                   GitBlit                                                               Gerrit

          UX Bootstrap / JQuery                                                          GWT CSS

   Front-end Wicket                                                                      GWT

 Git Back-end JGit                                                                       JGit

          DB none                                                                        H2/MySQL/Postgres

    Injection none                                                                       Guice

      License Apache 2.0                                                                 Apache 2.0


         Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                     gerrit
                                                                                                                                     User Summit 2012
Problems – Wicket and Rome
Wicket and Rome Class loader
 Session-based fully featured Web-App
 Classes are loaded using the current thread class loader:
  wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java
  wicket/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java
  wicket/src/main/java/org/apache/wicket/util/resource/locator/ResourceStreamLocator.java
  wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java




Gerrit plug-in loader
 Sessionless Servlet container
 Plug-in = unique shaded jar
 URLClassLoader (child of Gerrit ClassLoader)


            Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                        gerrit
                                                                                                                                        User Summit 2012
Problems – GitBlit pluggability
GitBlit configuration
 Configuration based (reference.properties)
 Classes instantiated directly
  wicket/src/com/gitblit/GitBlit.java




Gerrit plug-in module
 Plug-in loaded and configured through Guice Module
 Class instantiated through child Guice Injectors



            Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                        gerrit
                                                                                                                                        User Summit 2012
Solutions

 Wicket and Rome
  Option-1: patch-set
    github.com/lucamilanesio/wicket/commit/4a3f2c1dccf064008f223bb554c90e12c1c3b55d
    github.com/lucamilanesio/rome/commit/f13a20ae1e1f5df6a5bf4b83e8fb8fae6dda7a13

  Options-2: drop wicket and rome wars into
    $GERRIT_SITE/libs
 GitBlit
  Patch provided and merged to GitBlit master
    github.com/gitblit/gitblit/commit/85f639aa3eee0b4e02eba20e6a5197b684941544

 Gerrit
  Jetty session manager introduced in Gerrit 2.5
    gerrit-review.googlesource.com/#/c/37790/


         Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                     gerrit
                                                                                                                                     User Summit 2012
GitBlit plugin: clone + build + deploy

$ git clone https://gerrit-review.googlesource.com/plugins/gitblit
Cloning into 'gitblit'...
remote: Counting objects: 37, done
remote: Total 37 (delta 5), reused 37 (delta 5)
Unpacking objects: 100% (37/37), done.

$ cd gitblit && mvn package && 
cp target/gitblit*jar $GERRIT_SITE/plugins/gitblit.jar
[INFO] --------------------------------------------------------------
[INFO] Building Gerrit - GitBlit Plugin 1.0-SNAPSHOT
[INFO] ---------------------------------------------------------------
[... Some Maven rubbish ...]
[INFO] ---------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ---------------------------------------------------------------




          Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                      gerrit
                                                                                                                                      User Summit 2012
GitBlit in action 




        Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                    gerrit
                                                                                                                                    User Summit 2012
GitBlit as GitWeb replacement
From Gerrit 2.6, GitBlit provides an automatic Gerrit init-step
$ $ java –jar gerrit.war init -d $GERRIT_SITE
[...normal Gerrit init process ...]
*** GitBlit Integration
***
Do you want to use GitBlit as your GitWeb viewer ? [Y/n]? y
Link name                      [GitBlit]:

$ cat $GERRIT_SITE/etc/gerrit.config
[...normal Gerrit config ...]
[gitweb]
    type = custom
    url = plugins/
    project = gitblit/summary/${project}
    revision = gitblit/commit/${project}/${commit}
    branch = gitblit/log/${project}/${branch}
    filehistory = gitblit/history/${project}/${branch}/${file}
    linkname = GitBlit


           Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                       gerrit
                                                                                                                                       User Summit 2012
GitBlit as repo browser in Gerrit




        Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                    gerrit
                                                                                                                                    User Summit 2012
GitBlit plugin: next steps

 GitBlit Groovy scripts
    Gerrit stream events available as "plug-in hooks"
    GitBlit Groovy scripts executed within Gerrit
 GitBlit simple access control
    Control Gerrit security through GitBlit
    Provide Gerrit visibility of GitBlit groups via plug-in



To view this slides again:
www.slideshare.net/lucamilanesio



           Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
                                                                                                                                       gerrit
                                                                                                                                       User Summit 2012

Weitere ähnliche Inhalte

Was ist angesagt?

EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
Kenta Yasukawa
 

Was ist angesagt? (20)

Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 
Spring AMQP × RabbitMQ
Spring AMQP × RabbitMQSpring AMQP × RabbitMQ
Spring AMQP × RabbitMQ
 
EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
Git basic
Git basicGit basic
Git basic
 
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
JavaでCPUを使い倒す! ~Java 9 以降の CPU 最適化を覗いてみる~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제
 
Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018Terraform modules and best-practices - September 2018
Terraform modules and best-practices - September 2018
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Kubernetes presentation
Kubernetes presentationKubernetes presentation
Kubernetes presentation
 
さいきんのMySQLに関する取り組み(仮)
さいきんのMySQLに関する取り組み(仮)さいきんのMySQLに関する取り組み(仮)
さいきんのMySQLに関する取り組み(仮)
 
自宅vSphereからニフクラに引っ越ししてみた
自宅vSphereからニフクラに引っ越ししてみた自宅vSphereからニフクラに引っ越ししてみた
自宅vSphereからニフクラに引っ越ししてみた
 
アロー演算子とスコープ定義演算子
アロー演算子とスコープ定義演算子アロー演算子とスコープ定義演算子
アロー演算子とスコープ定義演算子
 
FIWARE Big Data Ecosystem : Cygnus
FIWARE Big Data Ecosystem : CygnusFIWARE Big Data Ecosystem : Cygnus
FIWARE Big Data Ecosystem : Cygnus
 
Terraform
TerraformTerraform
Terraform
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
 
今改めて学ぶ Microsoft Azure 基礎知識
今改めて学ぶ Microsoft Azure 基礎知識今改めて学ぶ Microsoft Azure 基礎知識
今改めて学ぶ Microsoft Azure 基礎知識
 
KubeEdgeを触ってみた
KubeEdgeを触ってみたKubeEdgeを触ってみた
KubeEdgeを触ってみた
 

Andere mochten auch

Andere mochten auch (17)

Git workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakowGit workshop 33degree 2011 krakow
Git workshop 33degree 2011 krakow
 
Speed up Continuous Delivery with BigData Analytics
Speed up Continuous Delivery with BigData AnalyticsSpeed up Continuous Delivery with BigData Analytics
Speed up Continuous Delivery with BigData Analytics
 
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForgeMobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
Mobile Application Lifecycle with Jekins, Trello and CollabNet TeamForge
 
Gerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyGerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and Groovy
 
Gerrit jenkins-big data-continuous-delivery
Gerrit jenkins-big data-continuous-deliveryGerrit jenkins-big data-continuous-delivery
Gerrit jenkins-big data-continuous-delivery
 
Is TDD dead or alive?
Is TDD dead or alive?Is TDD dead or alive?
Is TDD dead or alive?
 
GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, future
 
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery AnalyticsDevoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
Devoxx 2016 Using Jenkins, Gerrit and Spark for Continuous Delivery Analytics
 
Zero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review UpgradeZero-Downtime Gerrit Code Review Upgrade
Zero-Downtime Gerrit Code Review Upgrade
 
Gerrit is Getting Native with RPM, Deb and Docker
Gerrit is Getting Native with RPM, Deb and DockerGerrit is Getting Native with RPM, Deb and Docker
Gerrit is Getting Native with RPM, Deb and Docker
 
Jenkins User Conference - Continuous Delivery on Mobile
Jenkins User Conference - Continuous Delivery on MobileJenkins User Conference - Continuous Delivery on Mobile
Jenkins User Conference - Continuous Delivery on Mobile
 
Gerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub pluginGerrit Code Review with GitHub plugin
Gerrit Code Review with GitHub plugin
 
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
 
Why Play Framework is fast
Why Play Framework is fastWhy Play Framework is fast
Why Play Framework is fast
 
Gerrit Code Review Analytics
Gerrit Code Review AnalyticsGerrit Code Review Analytics
Gerrit Code Review Analytics
 
Code review process with JetBrains UpSource
Code review process with JetBrains UpSourceCode review process with JetBrains UpSource
Code review process with JetBrains UpSource
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 

Ähnlich wie GitBlit plugin for Gerrit Code Review

EclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenEclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heaven
msohn
 

Ähnlich wie GitBlit plugin for Gerrit Code Review (20)

Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23
Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23
Development with Git and Gerrit - Eclipse DemoCamp Stuttgart - 2010-11-23
 
Nyc Code Camp 2010 Git And Github
Nyc Code Camp 2010 Git And GithubNyc Code Camp 2010 Git And Github
Nyc Code Camp 2010 Git And Github
 
Gerrit tutorial
Gerrit tutorialGerrit tutorial
Gerrit tutorial
 
Git & GitHub_Introduction.pptx
Git & GitHub_Introduction.pptxGit & GitHub_Introduction.pptx
Git & GitHub_Introduction.pptx
 
Github By Nyros Developer
Github By Nyros DeveloperGithub By Nyros Developer
Github By Nyros Developer
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
 
GitHub Vs GitLab | What Are The Major Difference?
GitHub Vs GitLab | What Are The Major Difference?GitHub Vs GitLab | What Are The Major Difference?
GitHub Vs GitLab | What Are The Major Difference?
 
Git step by step
Git step by stepGit step by step
Git step by step
 
Git and Github.pptx
Git and Github.pptxGit and Github.pptx
Git and Github.pptx
 
git-commands-cheat-sheet-infopediya-com.pdf
git-commands-cheat-sheet-infopediya-com.pdfgit-commands-cheat-sheet-infopediya-com.pdf
git-commands-cheat-sheet-infopediya-com.pdf
 
Eclipse Hackers Guide to the Git Universe - Eclipse democamp Vienna 2011-12-02
Eclipse Hackers Guide to the Git Universe - Eclipse democamp Vienna 2011-12-02Eclipse Hackers Guide to the Git Universe - Eclipse democamp Vienna 2011-12-02
Eclipse Hackers Guide to the Git Universe - Eclipse democamp Vienna 2011-12-02
 
Git cheat-sheets
Git cheat-sheetsGit cheat-sheets
Git cheat-sheets
 
From CVS to GIT
From CVS to GITFrom CVS to GIT
From CVS to GIT
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
 
Difference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs BitbucketDifference between Github vs Gitlab vs Bitbucket
Difference between Github vs Gitlab vs Bitbucket
 
Github Case Study By Amil Ali
Github Case Study By Amil AliGithub Case Study By Amil Ali
Github Case Study By Amil Ali
 
EclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heavenEclipseCon 2010 talk: Towards contributors heaven
EclipseCon 2010 talk: Towards contributors heaven
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Team Collaboration with GitHub
Team Collaboration with GitHubTeam Collaboration with GitHub
Team Collaboration with GitHub
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 

Mehr von Luca Milanesio

Mehr von Luca Milanesio (17)

What's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyondWhat's new in Gerrit Code Review v3.1 and beyond
What's new in Gerrit Code Review v3.1 and beyond
 
Gerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source codeGerrit Analytics applied to Android source code
Gerrit Analytics applied to Android source code
 
Cloud-native Gerrit Code Review
Cloud-native Gerrit Code ReviewCloud-native Gerrit Code Review
Cloud-native Gerrit Code Review
 
Gerrit Code Review migrations step-by-step
Gerrit Code Review migrations step-by-stepGerrit Code Review migrations step-by-step
Gerrit Code Review migrations step-by-step
 
Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3Gerrit Code Review v3.2 and v3.3
Gerrit Code Review v3.2 and v3.3
 
ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3
 
Gerrit Code Review multi-site
Gerrit Code Review multi-siteGerrit Code Review multi-site
Gerrit Code Review multi-site
 
Gerrit User Summit 2019 Keynote
Gerrit User Summit 2019 KeynoteGerrit User Summit 2019 Keynote
Gerrit User Summit 2019 Keynote
 
Gerrit multi-master / multi-site at GerritHub
Gerrit multi-master / multi-site at GerritHubGerrit multi-master / multi-site at GerritHub
Gerrit multi-master / multi-site at GerritHub
 
GerritHub a true Gerrit migration story to v2.15
GerritHub a true Gerrit migration story to v2.15GerritHub a true Gerrit migration story to v2.15
GerritHub a true Gerrit migration story to v2.15
 
Gerrit User Summit 2018 - Keynote
Gerrit User Summit 2018 - Keynote Gerrit User Summit 2018 - Keynote
Gerrit User Summit 2018 - Keynote
 
Jenkins plugin for Gerrit Code Review pipelines
Jenkins plugin for Gerrit Code Review pipelinesJenkins plugin for Gerrit Code Review pipelines
Jenkins plugin for Gerrit Code Review pipelines
 
Gerrit User Summit 2017 Keynote
Gerrit User Summit 2017 KeynoteGerrit User Summit 2017 Keynote
Gerrit User Summit 2017 Keynote
 
How to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issuesHow to keep Jenkins logs forever without performance issues
How to keep Jenkins logs forever without performance issues
 
Jenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle TimeJenkins Pipeline on your Local Box to Reduce Cycle Time
Jenkins Pipeline on your Local Box to Reduce Cycle Time
 
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code ReviewJenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
Jenkins world 2017 - Data-Driven CI Pipeline with Gerrit Code Review
 
Stable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code ReviewStable master workflow with Gerrit Code Review
Stable master workflow with Gerrit Code Review
 

Kürzlich hochgeladen

Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Kürzlich hochgeladen (20)

Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 

GitBlit plugin for Gerrit Code Review

  • 1. Plugin Luca Milanesio GerritForge LLP Luca@gerritforge.com http://www.gerritforge.com
  • 2. Who's that guy ? Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 3. Why a different Git front-end ? Large enterprises = different people ! Gerrit "gurus" ? … likes rare GWT UI Git early adopters ? … used to GitWeb Like it new and small ? … gitiles is for you ? Like shiny and simple UX ? GitBlit  Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 4. Why GitBlit and not others ? just democratic election I guess  Hi all, as Gerrit 2.5 is coming to the +1, that's a great idea, I'd like RC phase (and PlugIns will to use that. soon be a reality), what do you Would be great if this would think of integrating GitBlit as integrate GitBlit in a way so plug-in ? that Gerrit permission settings are respected also by GitBlit. +1, it would be awesome to have a built-in viewer option that respected all the Gerrit perms @James: would you accept contribution to GitBlit to make this plug-in possible ? Of course. Sounds great! Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 5. GitBlit UX 1. Twitter Bootstrap CSS + 2. Wicket Web- Framework + 3. Google Charts + 4. JQuery Front-end = COOL UX ! Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 6. GitBlit + Gerrit challenge GitBlit Gerrit UX Bootstrap / JQuery GWT CSS Front-end Wicket GWT Git Back-end JGit JGit DB none H2/MySQL/Postgres Injection none Guice License Apache 2.0 Apache 2.0 Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 7. Problems – Wicket and Rome Wicket and Rome Class loader  Session-based fully featured Web-App  Classes are loaded using the current thread class loader: wicket/src/main/java/org/apache/wicket/application/DefaultClassResolver.java wicket/src/main/java/org/apache/wicket/protocol/http/ContextParamWebApplicationFactory.java wicket/src/main/java/org/apache/wicket/util/resource/locator/ResourceStreamLocator.java wicket/src/main/java/org/apache/wicket/protocol/http/portlet/WicketPortlet.java Gerrit plug-in loader  Sessionless Servlet container  Plug-in = unique shaded jar  URLClassLoader (child of Gerrit ClassLoader) Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 8. Problems – GitBlit pluggability GitBlit configuration  Configuration based (reference.properties)  Classes instantiated directly wicket/src/com/gitblit/GitBlit.java Gerrit plug-in module  Plug-in loaded and configured through Guice Module  Class instantiated through child Guice Injectors Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 9. Solutions  Wicket and Rome Option-1: patch-set github.com/lucamilanesio/wicket/commit/4a3f2c1dccf064008f223bb554c90e12c1c3b55d github.com/lucamilanesio/rome/commit/f13a20ae1e1f5df6a5bf4b83e8fb8fae6dda7a13 Options-2: drop wicket and rome wars into $GERRIT_SITE/libs  GitBlit Patch provided and merged to GitBlit master github.com/gitblit/gitblit/commit/85f639aa3eee0b4e02eba20e6a5197b684941544  Gerrit Jetty session manager introduced in Gerrit 2.5 gerrit-review.googlesource.com/#/c/37790/ Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 10. GitBlit plugin: clone + build + deploy $ git clone https://gerrit-review.googlesource.com/plugins/gitblit Cloning into 'gitblit'... remote: Counting objects: 37, done remote: Total 37 (delta 5), reused 37 (delta 5) Unpacking objects: 100% (37/37), done. $ cd gitblit && mvn package && cp target/gitblit*jar $GERRIT_SITE/plugins/gitblit.jar [INFO] -------------------------------------------------------------- [INFO] Building Gerrit - GitBlit Plugin 1.0-SNAPSHOT [INFO] --------------------------------------------------------------- [... Some Maven rubbish ...] [INFO] --------------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] --------------------------------------------------------------- Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 11. GitBlit in action  Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 12. GitBlit as GitWeb replacement From Gerrit 2.6, GitBlit provides an automatic Gerrit init-step $ $ java –jar gerrit.war init -d $GERRIT_SITE [...normal Gerrit init process ...] *** GitBlit Integration *** Do you want to use GitBlit as your GitWeb viewer ? [Y/n]? y Link name [GitBlit]: $ cat $GERRIT_SITE/etc/gerrit.config [...normal Gerrit config ...] [gitweb] type = custom url = plugins/ project = gitblit/summary/${project} revision = gitblit/commit/${project}/${commit} branch = gitblit/log/${project}/${branch} filehistory = gitblit/history/${project}/${branch}/${file} linkname = GitBlit Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 13. GitBlit as repo browser in Gerrit Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012
  • 14. GitBlit plugin: next steps  GitBlit Groovy scripts  Gerrit stream events available as "plug-in hooks"  GitBlit Groovy scripts executed within Gerrit  GitBlit simple access control  Control Gerrit security through GitBlit  Provide Gerrit visibility of GitBlit groups via plug-in To view this slides again: www.slideshare.net/lucamilanesio Gerrit GitBlit plugin by Luca Milanesio is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. gerrit User Summit 2012