Slide 1

Slide 1 text

VERSION CONTROL SYSTEM CASE-SDUDY AND TIPS RHODECODE(-ENTERPRISE) INTRO 2014/03/30 #real_dvcs @troter

Slide 2

Slide 2 text

SELF-INTRO • id:troter • programmer • ruby/python/php/java • mercurial/git/(subversion) • I will talk of RhodeCode. That is used in my work.

Slide 3

Slide 3 text

RHODECODE(-ENTERPRISE)

Slide 4

Slide 4 text

RHODECODE(-ENTERPRISE) • GitHub/Bitbucket clone • competition software is GitLab • https://rhodecode.com/ • https://code.rhodecode.com/rhodecode- enterprise

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

FOCUS ON REPOSITORY HOSTING

Slide 7

Slide 7 text

FEATURE • Repository hostingʢGit/Mercurialʣ • soruce code browsing • commit log, commit graph, Side-by-Side diff • pull-request, inline comment • online editor • Gist • Full text search

Slide 8

Slide 8 text

FEATURE • User management • permission management by repository groups/user groups • authentication(DB, LDAP, PAM, CROWD) • Mention with @ • Journal(Activity) • Web API(JSON-RPC)

Slide 9

Slide 9 text

MISSING FEATURE • Merge button(in pull-request) • currently in development? please wait next release. • Wiki • Issues • CI integration

Slide 10

Slide 10 text

PROS. • Easy install • CUI/GUI installer is available • Stable (for people who are tired to GitLab) • only one running process • git http server is dulwich • Active development

Slide 11

Slide 11 text

CONS. • License confusing • Active development, but no public issue tracker • and no public load map • asking question in an irc channel ! • https://botbot.me/freenode/rhodecode/msg/ 10435654/

Slide 12

Slide 12 text

LICENSE • ʙ1.7.x GPLv3 • 2.0.0ʙ GPLv3 & Business Source License • free for 20 users. free for educational institutions / NGO. • $199+/month for 21+ users • all source code become GPLv3 from 2018/5/1 • at 2013/10/14, all source code become GPLv3 from 2017/09/01. period is extended ?

Slide 13

Slide 13 text

DEMO

Slide 14

Slide 14 text

USE CASE

Slide 15

Slide 15 text

CASE (1) LANGUAGE • Edit production.ini (can not setting via Web UI) • /home/{install-user}/rhodecode/data/production.ini ! ! • Message resources are being managed on transifex.com • https://www.transifex.com/projects/p/RhodeCode/language/ ja/ lang = ja

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

CASE (2) USING LDAP USER ONLY • Setting via WebUI • admin > permission • Registration: Disabled • External auth account activation: Automatic activation of external account • admin > authentication • Enable LDAP

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

CASE (3) SEND EMAIL VIA GMAIL • Edit production.ini ! ! ! smtp_server = smtp.gmail.com smtp_username = trot.thunder@gmail.com smtp_password = xxxxxxxxxxxx smtp_port = 587 smtp_use_tls = true

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

CASE (4) LINK TO EXTERNAL WIKI/ISSUES • Edit production.ini ! ! ! •kind is a link pattern issue_pat_{kind} = issue_server_link_{kind} = issue_prefix_{kind} =

Slide 26

Slide 26 text

“wiki-FrontPage” that included commit message is converted to a string next. ! WIKI-FrontPage

Slide 27

Slide 27 text

CASE (5) REPOSITORY GROUPING • repository group. • group by project • group by user • nested group

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

CASE (6) TRY DEVELOPING VERSION • Get source code from next repository • https://code.rhodecode.com/marcink/rhodecode ! ! ! python setup.py cp development.ini dev.ini vi dev.ini # use sqlite paster setup-rhodecode dev.ini paster serve dev.ini

Slide 30

Slide 30 text

LIMITATION OF RHODECODE-2.2.5

Slide 31

Slide 31 text

LIMITATION CAN NOT UPDATE PULL-REQUEST • Can not update .. 1. title and description 2. comment (new/delete only) 3. changeset (can not add new changeset) • Please wait next release. • Workaround: always create new pull-request.

Slide 32

Slide 32 text

BUG OF RHODECODE-2.2.5

Slide 33

Slide 33 text

BUG SAME REIPOSITORY PULL-REQUEST’S DIFF • Git repository only • Can not view same repository pull-request’s diff • Example • send pull-request from same repository, • from develop branch to master branch. • Workaround: send pull-request from fork repository.

Slide 34

Slide 34 text

BUG GIT PUSH —FORCE + PR = 500 ERROR • commit unreachable by git push —force. • Implementation problem • find commit by commit id. (current rhodecode implementation) • if can not find commit by commit id, should try to find commit by branch name. (suggestion) • BTW: branch name and commit id are stored to database. (current rhodecode implementation) • is this problem already reported? • Workaround: change branch name and create new pull request • add suffix to branch name. ex. feature/hoge-2, feature/hoge-3 … • git push —force is worse

Slide 35

Slide 35 text

CONCLUSION • Easy Install • Focus on repository hosting • necessary features have all • when can not use external hosting service • for internal mirror server