This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
agl-distro:contributing [2016/10/27 16:01] jsmoeller [Prepare to push changes in Gerrit] |
agl-distro:contributing [2024/09/06 11:28] (current) jsmoeller old revision restored (2020/07/10 21:02) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Contributing to the AGL Distro ====== | ====== Contributing to the AGL Distro ====== | ||
- | The AGL community appreciates feedback, ideas, suggestion, bugs and documentation just as much as code. Please join the irc conversation at the #automotive channel on irc.freenode.net and our [[http://lists.linuxfoundation.org/mailman/listinfo/automotive-discussions|mailing list]]. | + | The AGL community appreciates feedback, ideas, suggestion, bugs and documentation just as much as code. Please join the irc conversation at the #automotive channel on irc.freenode.net and our [[https://lists.automotivelinux.org/g/agl-dev-community|mailing list]]. |
===== Contributing Code ===== | ===== Contributing Code ===== | ||
Line 22: | Line 22: | ||
- [[https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src | src ]] - contains source code repositories where AGL is the upstream. This code is officially part of the AGL distribution. | - [[https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src | src ]] - contains source code repositories where AGL is the upstream. This code is officially part of the AGL distribution. | ||
- [[https://gerrit.automotivelinux.org/gerrit/#/admin/projects/staging | staging]] - contains source code repositories where AGL developers can work on new features or components that can eventually be included in the AGL distribution. | - [[https://gerrit.automotivelinux.org/gerrit/#/admin/projects/staging | staging]] - contains source code repositories where AGL developers can work on new features or components that can eventually be included in the AGL distribution. | ||
+ | |||
+ | ==== Git repository requests ==== | ||
Developers may request a new project to be set up in the src or staging repository by submitting a [[https://jira.automotivelinux.org | Jira ticket]]. Ticket type should be a "Task" | Developers may request a new project to be set up in the src or staging repository by submitting a [[https://jira.automotivelinux.org | Jira ticket]]. Ticket type should be a "Task" | ||
Line 33: | Line 35: | ||
for the repo called "<name>-owners" . | for the repo called "<name>-owners" . | ||
- | === Access Control === | + | ==== Access Control ==== |
Access control to gerrit is defined in this [[https://docs.google.com/spreadsheets/d/1lA_B7LEwn_VyJy_JplRNe9AOKTRGAMtpJ66JHm-vJCM/pubhtml?gid=0&single=true | google doc spreadsheet]]. | Access control to gerrit is defined in this [[https://docs.google.com/spreadsheets/d/1lA_B7LEwn_VyJy_JplRNe9AOKTRGAMtpJ66JHm-vJCM/pubhtml?gid=0&single=true | google doc spreadsheet]]. | ||
Line 91: | Line 93: | ||
- **App Developer (AD)** - Someone who is developing applications to be used with AGL. The AD is assumed to need no knowledge of Yocto and relies on an SDK. | - **App Developer (AD)** - Someone who is developing applications to be used with AGL. The AD is assumed to need no knowledge of Yocto and relies on an SDK. | ||
- **Registered Developer (RD)** - Someone who wants to contribute code to AGL but may not be affiliated with a subsystem | - **Registered Developer (RD)** - Someone who wants to contribute code to AGL but may not be affiliated with a subsystem | ||
- | - <del> **Subsystem Developer (SD)** - Someone who actively develops code for a particular subsystem of AGL. The person can be a SD for one subsystem and Registered Developer for another Subsystem</del> | ||
- **Subsystem Maintainer (SM)** - A SM is the same as Subsystem Developer but with additional privileges that allow him to submit changes to the master branch, tracking branch, or a maintenance branch | - **Subsystem Maintainer (SM)** - A SM is the same as Subsystem Developer but with additional privileges that allow him to submit changes to the master branch, tracking branch, or a maintenance branch | ||
- **System Integrator (SI)** | - **System Integrator (SI)** | ||
Line 105: | Line 106: | ||
- AGL is using code back-ported from later versions of a new component or part of a component (e.g., MOST USB driver in mainline kernel tree) | - AGL is using code back-ported from later versions of a new component or part of a component (e.g., MOST USB driver in mainline kernel tree) | ||
- AGL is maintaining code out of the upstream tree which may or may not be accepted upstream (this should be rare since it implies a fork of the upstream code. Patches are preferable) | - AGL is maintaining code out of the upstream tree which may or may not be accepted upstream (this should be rare since it implies a fork of the upstream code. Patches are preferable) | ||
+ | |||
+ | |||
+ | ===== Prepare to push changes in Gerrit ===== | ||
+ | By default the repo tool will have cloned the git repos with http for fetch and ssh to push. | ||
+ | #cd meta-agl | ||
+ | #git remote -v | ||
+ | agl https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl (fetch) | ||
+ | agl ssh://gerrit.automotivelinux.org:29418/AGL/meta-agl (push) | ||
+ | |||
+ | |||
+ | If you want to use your ssh config, add your gerrit user accout to your ssh config file like: | ||
+ | #cat ~/.ssh/config | ||
+ | Host gerrit.automotivelinux.org | ||
+ | User XXXMyNameXXX | ||
+ | |||
+ | Note: you still need to enter you ssh public key in Gerrit. You can find a HowTo [[ https://www.mediawiki.org/wiki/Gerrit/Tutorial#Set_Up_SSH_Keys_in_Gerrit | here ]] | ||
+ | |||
+ | ===== Push changes for review to Gerrit ==== | ||
+ | Please sign you commit before you submit the change (otherwise it will not be accepted by gerrit): | ||
+ | git commit --signoff | ||
+ | |||
+ | * Then either use plain git to push: | ||
+ | |||
+ | git push agl HEAD:refs/for/master | ||
+ | git push <remote> HEAD:refs/for/<targetbranch> | ||
+ | |||
+ | * **Or** for more convenience, install "git-review" and instead of git push use: | ||
+ | |||
+ | # first time only | ||
+ | git review -s | ||
+ | |||
+ | # then to push use | ||
+ | git review | ||
+ | |||
+ | Find more details in these guides: | ||
+ | |||
+ | * [[https://gerrit.automotivelinux.org/gerrit/Documentation/user-upload.html|official gerrit guide]] | ||
+ | * [[https://source.android.com/source/developing.html#git-and-repo-cheatsheet|git and repo cheatsheet]] | ||
+ | * [[https://education.github.com/git-cheat-sheet-education.pdf|git cheatsheet from github]] | ||
+ | * [[https://www.mediawiki.org/wiki/User:Wctaiwan/Gerrit_cheatsheet|Gerrit cheatsheet from mediawiki]] | ||
+ | * [[https://wiki.opendaylight.org/view/GIT_Cheat_Sheet|Git cheatsheet from opendaylight.org]] | ||
+ | | ||
+ | ===== Personal Sandbox Projects in Gerrit ==== | ||
+ | |||
+ | First time: | ||
+ | meta-agl> git push gerrit testsandbox:refs/heads/sandbox/jsmoeller/test | ||
+ | Total 0 (delta 0), reused 0 (delta 0) | ||
+ | remote: Processing changes: closed: 114, refs: 1, done | ||
+ | To ssh://jsmoeller@gerrit.automotivelinux.org:29418/AGL/meta-agl | ||
+ | * [new branch] testsandbox -> sandbox/jsmoeller/test'' | ||
+ | |||
+ | Push to personal branch: | ||
+ | git push gerrit testsandbox:refs/for/sandbox/jsmoeller/test | ||
+ | Counting objects: 2, Fertig. | ||
+ | Delta compression using up to 8 threads. | ||
+ | Compressing: 100% (2/2), Fertig. | ||
+ | Writing objects: 100% (2/2), 327 bytes | 0 bytes/s, Fertig. | ||
+ | Total 2 (delta 1), reused 0 (delta 0) | ||
+ | remote: Resolving deltas: 100% (1/1) | ||
+ | remote: Processing changes: new: 1, refs: 1, done | ||
+ | remote: | ||
+ | remote: New Changes: | ||
+ | remote: https://gerrit.automotivelinux.org/gerrit/5643 test1 | ||
+ | remote: | ||
+ | To ssh://jsmoeller@gerrit.automotivelinux.org:29418/AGL/meta-agl | ||
+ | * [new branch] testsandbox -> refs/for/sandbox/jsmoeller/test | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ---- | ||
==== Notes on Use Cases ==== | ==== Notes on Use Cases ==== | ||
Line 166: | Line 240: | ||
- As a RM I want to make patch releases to stable releases | - As a RM I want to make patch releases to stable releases | ||
- | |||
- | ===== Prepare to push changes in Gerrit ===== | ||
- | By default the repo tool will have clone git repo with http. You need to change the git setting to use ssh. | ||
- | From meta-agl directory, use the command: | ||
- | git remote set-url agl ssh://YourGerritID@gerrit.automotivelinux.org:29418/AGL/meta-agl | ||
- | or | ||
- | if you want to use your ssh config like: | ||
- | #cat ~/.ssh/config | ||
- | Host gerrit.automotivelinux.org | ||
- | Port 29418 | ||
- | User XXXMyNameXXX | ||
- | |||
- | git remote set-url agl ssh://gerrit.automotivelinux.org/AGL/meta-agl | ||
- | |||
- | Then you still need to enter you ssh public key in Gerrit. You can find a HowTo [[ https://www.mediawiki.org/wiki/Gerrit/Tutorial#Set_Up_SSH_Keys_in_Gerrit | here ]] | ||
- | |||
- | ===== Push changes for review to Gerrit ==== | ||
- | Please sign you commit before you submit the change (otherwise it will not be accepted by gerrit): | ||
- | git commit --signoff | ||
- | Then push: | ||
- | git push agl HEAD:refs/for/master | ||
- | Find more details in the [[https://gerrit.automotivelinux.org/gerrit/Documentation/user-upload.html|official gerrit guide]] | ||
- | | ||
- | ===== Personal Sandbox Projects in Gerrit ==== | ||
- | |||
- | First time: | ||
- | meta-agl> git push gerrit testsandbox:refs/heads/sandbox/jsmoeller/test | ||
- | Total 0 (delta 0), reused 0 (delta 0) | ||
- | remote: Processing changes: closed: 114, refs: 1, done | ||
- | To ssh://jsmoeller@gerrit.automotivelinux.org:29418/AGL/meta-agl | ||
- | * [new branch] testsandbox -> sandbox/jsmoeller/test'' | ||
- | |||
- | Push to personal branch: | ||
- | git push gerrit testsandbox:refs/for/sandbox/jsmoeller/test | ||
- | Counting objects: 2, Fertig. | ||
- | Delta compression using up to 8 threads. | ||
- | Compressing: 100% (2/2), Fertig. | ||
- | Writing objects: 100% (2/2), 327 bytes | 0 bytes/s, Fertig. | ||
- | Total 2 (delta 1), reused 0 (delta 0) | ||
- | remote: Resolving deltas: 100% (1/1) | ||
- | remote: Processing changes: new: 1, refs: 1, done | ||
- | remote: | ||
- | remote: New Changes: | ||
- | remote: https://gerrit.automotivelinux.org/gerrit/5643 test1 | ||
- | remote: | ||
- | To ssh://jsmoeller@gerrit.automotivelinux.org:29418/AGL/meta-agl | ||
- | * [new branch] testsandbox -> refs/for/sandbox/jsmoeller/test | ||
- | | ||
- | | ||
- | |