tiered root development - cern indico

26
Tiered ROOT development with Anders EIe

Upload: khangminh22

Post on 12-Jan-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Tiered ROOT developmentwith Anders EIe

Git basics● Merge● Rebase● Fast-forward

1

2

4

5

3

1

2

4 3

1

2

4

3

Before Merge Rebase

Tiered development

● Tree structure● Code review in

each step● Divide and conquer

Tools for pre-commit code review

● Github pull requests

● Phabricator

● Atlassian Crucible

Github

Github

Github

Github

Github

Github

Github

Github

Github

Phabricator

Phabricator

Phabricator

Phabricator

Atlassian Crucible

Atlassian Crucible

Atlassian Crucible

Atlassian Crucible

Summary of toolsGithub Phabricator Atlassian Crucible

Create review -Push branch-Start review through web

CLI tool CLI tool

Commit info Full Commit messagesTotal diff

Total diffPatchset *

Commenting On reviewOn single lines in diff

On reviewOn single lines in diff

On reviewOn multiple lines in diff

Editing files Review is tied to remote branch Review files updated through CLI tool Re-upload diff

Editing comments Yes No Yes

Patch application Web UIGit CLI

Arcanist CLI (+ Git CLI) Patch CLI

Merge strategy Merge branch “Rebase”/patch “Rebase”/patch

User database Github LDAP LDAP

Contributor repository Github fork Local copy Local copy

Review structure Tiered Flat Flat

Number of reviewers 1 n n

Setup and workflowTop-level developersOwn code1. Fork root-mirror2. Add ROOT git as remote3. Develop on feature branches4. Update local ROOT copy5. Rebase with remote and pushPull requests6. Fetch branch from contributor’s

repository7. Now you have a local feature

branch from contributor8. See step 4 & 59. Update pull request status online

Other developers1. Fork “parent” repository2. Develop on feature branches3. Rebase feature branch with

updated master branch4. Make pull-requests to “parent”s

master branch

● git remote add contributor [email protected]:contributor/root.git

// Done first time only

● git fetch contributor // Get updates from contributor

● git fetch root-repo // Update root master branch

● git checkout master // Change branch to master

● git merge root-repo/master // Fast-forward master

● git checkout contributor-dev-branch // Move to dev branch

● git rebase master // Rebase with master

● git checkout master // Move to master

● git merge contributor-dev-branch // Merge in pull request (ff)

○ --no-ff // Make a merge commit

● git push root-repo master // Push master branch to

ROOT git

Graph view (fast-forward)

1

2

3

4

1

2 3

4master

master

contributor/dev

dev

1

2

3

4

master

rebase merge (ff)

Graph view (no fast-forward)

1

2

3

4

1

2 3

4master

master

contributor/dev

dev

rebasemerge no-

ff

1

2

3

4

master

5