Examine individual changes

From Gentoo Wiki
Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to:navigation Jump to:search

This page allows you to examine the variables generated by the Abuse Filter for an individual change, and test it against filters.

Variables generated for this change

VariableValue
Edit count of the user (user_editcount)
4754
Name of the user account (user_name)
'Vaukai'
Age of the user account (user_age)
302894406
Page ID (page_id)
220828
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'Creating GitHub Pull Requests'
Full page title (page_prefixedtitle)
'Creating GitHub Pull Requests'
Action (action)
'edit'
Edit summary/reason (summary)
'/* See also */ '
Old content model (old_content_model)
'wikitext'
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
'{{dirty}} {{InfoBox stack |{{InfoBox github|https://github.com/gentoo/gentoo/pulls|text=Gentoo Pull Requests|raw=true|header=true}} |{{InfoBox github|https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#about-pull-requests|raw=true|text=GitHub PR help}} }} This article explains [[Article description::how to contribute to Gentoo by creating [https://github.com/gentoo/gentoo/pulls pull requests on GitHub].]] [[File:Cycle of usercontributions.png|300px|thumbnail|right|Workflow of a user contribution. The green arrows show the path of contribution. Grey arrows are optional, possible access directions.]] === How to make a pull request === Making a pull request is explained at length in the various how-tos put together by the GitHub folks, here are two must-read how-tos: <ul class="fa-ul"> <li><i class="fa-li fa fa-arrow-circle-right" style="color: blue"></i>[https://help.github.com/articles/fork-a-repo/ Fork the Gentoo repository]</li> <li><i class="fa-li fa fa-arrow-circle-right" style="color: blue"></i>[https://help.github.com/articles/about-pull-requests/ Using pull requests]</li> </ul> {{Important|Currently new packages are added via [[Project:Proxy_Maintainers|proxy-maint project]] and the current manpower isn't enough to handle the flood of new packages. We recommend contributing to [[Project:GURU|GURU overlay]] instead for now, where interesting and popular packages are pulled to ::gentoo. Read more: https://archives.gentoo.org/gentoo-proxy-maint/message/44f7712fb49850288cd840c3541f6d7e}} == Configuration == === Repository's remote configuration === ==== Variant a: User configures a local repository ==== Clone the github mirror of the Gentoo repository under the remote name "upstream" into the {{path|path/to/save}} directory (substitute {{path|path/to/save}} with the directory of choice): {{Cmd|git clone -o upstream <nowiki>https://github.com/gentoo/gentoo.git</nowiki> path/to/save}} Step into the new directory, then view the 'remote' settings {{Cmd|cd $_|git remote -v|output=<pre style="white-space: pre;"> upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) </pre>}} [[File:Github fork.png|frameless|right]] Fork the [https://github.com/gentoo/gentoo Gentoo repository on GitHub] Add it under the remote name "github" to your local repository. {{Cmd|git remote add github <UrlOfYourFork.git>}} Verify the repository's remote settings {{Cmd|git remote -v|output=<pre style="white-space: pre;"> github https://github.com/<github user>/gentoo (fetch) github https://github.com/<github user>/gentoo (push) upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) </pre>}} ==== Variant b: Using the git repository as the ::gentoo repository ==== {{Warning|This setup is not fully functional since the plain developer repository as obtained from github lacks the metadata generated for the official ::gentoo repository.}} {{RootCmd|mkdir /etc/portage/repos.conf/}} Add the following to the file: {{FileBox|filename=/etc/portage/repos.conf/gentoo.conf|lang=ini|1= [gentoo] location = /var/db/repos/gentoo sync-type = git sync-uri = https://github.com/gentoo/gentoo.git auto-sync = yes sync-user = portage:portage }} Add the following, substitute <dev_user_name> with your username as appropriate in the script below. {{FileBox|filename=/etc/portage/postsync.d/99-user-dev-perms|lang=bash|1= #!/bin/bash DEV_USER_NAME=<dev_user_name> find /var/db/repos/gentoo/ -type d -exec setfacl -m u:$DEV_USER_NAME:rwx {} \; find /var/db/repos/gentoo/ -type f -exec setfacl -m u:$DEV_USER_NAME:rw {} \; find /var/db/repos/gentoo/.git -type d -exec setfacl -m u:$DEV_USER_NAME:rwx {} \; find /var/db/repos/gentoo/.git -type f -exec setfacl -m u:$DEV_USER_NAME:rw {} \; }} {{RootCmd|chmod +x /etc/portage/postsync.d/99-user-dev-perms}} Then sync the repository. {{RootCmd|emerge --sync}} [[File:Github fork.png|frameless|right]] Fork the [https://github.com/gentoo/gentoo Gentoo repository on GitHub] Add it under the remote name "github" to your local repository. {{Cmd |cd /var/db/repos/gentoo |git remote add github <UrlOfYourFork.git> }} === Repository's user configuration === [https://docs.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key Configure git to use the target key] for code signing and to '''properly sign-off all your commits''' (a more detailed description of how to create the signingkey is given in the [[#GPG configuration|next section]]): {{Cmd |git config --local user.name "Your Full Name" |git config --local user.email "example@domain.tld" |git config --local user.signingkey 0x000000000000000 |git config --local commit.gpgsign 1 }} Add helpful optional settings: {{Cmd |git config --local pull.ff only |git config --local pull.rebase merges |git config --local push.default simple |git config --local push.gpgsign 0 }} Verify the settings: {{Cmd|git config --local --list}} === GPG configuration === Add the following to {{path|gpg.conf}}: {{FileBox|filename=~/.gnupg/gpg.conf|title=General GPG Setup|1= keyserver hkps://keys.gentoo.org keyserver-options no-honor-keyserver-url cert-digest-algo SHA512 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed }} Now to generate the key: {{Cmd|gpg --full-generate-key}} * Select the algorithm. * Set the key size. * Specify how long the key should be valid (No more than 5 years). * Confirm the information is correct. * Set your name. * Set your passphrase, and confirm it. * It might take some time if you've chosen a high bit length key. Retrieve your GPG public keyID via the following command: {{Cmd|gpg --list-public-keys --keyid-format 0xlong example@domain.tld}} The key id is the portion after the <algorithm>/ on the line beginning with pub as shown in bold below. If you have more than one key with the specified UID you will need to select the correct key yourself from the list of returned keys. pub rsa4096/'''0x000000000000000''' Upload your key to the keyserver: {{Cmd|gpg --keyserver keys.openpgp.org --send-key 0x000000000000000}} == Usage == === Step 1: User updates the local repository === {{Cmd|git checkout master|git pull upstream master}} === Step 2: User changes a package === [[File:Circular workflow step1.png|200px|frameless|right]] Say you are making changes to package {{C|app-foo/bar}}. Create a local branch with the changes: {{Cmd|git checkout -b <branch name> master}} Make the changes and make sure to run {{C|[[pkgcheck]]}} to check for basic errors: {{Cmd |git add . |pkgdev manifest |pkgcheck scan --net --commits }} Then commit the changes, preferably using {{C|[[pkgdev]]}}. {{Cmd|pkgdev commit --signoff}} {{Tip|If {{c|pkgdev commit}} fails with an error like "error: gpg failed to sign the data", run the command again as {{c|GIT_TRACE{{=}}1 pkgdev commit ...}} and run the {{c|gpg}} command which fails manually to find the real error. If that still doesn't work then check the [[GitHub Pull Requests#Troubleshooting|Troubleshooting section]]}} If the commit is to close or comment bugs on Bugzilla, these should be [[#Links to bug report(s)|mentioned in the commit message]] as suggested by [https://www.gentoo.org/glep/glep-0066.html#commit-messages GLEP66]. {{C|pkgdev}} supports this through the <code>--bug</code> and <code>--closes</code> options.{{Cmd|pkgdev commit --closes NNNNNN --signoff}} ===Step 3: User makes a pull request=== [[File:Circular workflow step2.png|200px|frameless|right]] Now that the changes have been made and the local branch updated, it is time to send it off to GitHub and make a PR (Pull Request) for the Gentoo Developers. Start by pushing the branch with the changes to your GitHub repository: {{Cmd|git push github <branch name>}} Then [https://help.github.com/articles/creating-a-pull-request/ create a pull request] from your GitHub repository's local branch to the Gentoo repository's master branch. When the changes have been merged, you may delete the local repository's branch with: {{Cmd |git checkout master |git branch -d <branch name> |git push github :<branch name> }} ==Links to bug report(s)== A bot automatically picks up bug reports if the link(s) to the bug in question appear(s) in the body of the commit message. The bot then writes a message in the bug report and/or closes it. That way, other users quickly get to know a patch or a fix has landed in the tree. '''This feature helps Gentoo developers save time as they don't have to switch back and forth between Bugzilla, GitHub, and their terminal to figure out which bug reports may be closed.''' === How does it work?=== The bot can parse two types of header: Bug: https://bugs.gentoo.org/123456 will automatically write a message in the bug report '''without''' closing it. Closes: https://bugs.gentoo.org/123456 will automatically write a message in the bug report, change the status of the bug report to RESOLVED and the resolution to FIXED. If the commit involves several bug reports, they can be mentioned and stack the links. The bot will write a message in each bug report: Bug: https://bugs.gentoo.org/123456 Bug: https://bugs.gentoo.org/456789 Bug: https://bugs.gentoo.org/101010 It also works with the <code>Closes:</code> header: Closes: https://bugs.gentoo.org/123456 Closes: https://bugs.gentoo.org/456789 Closes: https://bugs.gentoo.org/101010 Feel free to add as much information as possible: upstream forums, mailing lists, discussions, links to changelogs, etc. The bot won't post messages all over the place though, but these useful information will appear in the ChangeLog file of the ebuild. ==QA checks == ===gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don't understand.=== [[File:Gentoo-repo-qa-bot All checks have failed.png|thumbnail|right|Checks have failed for this pull request]] We have set up an automated CI system which performs various QA checks when a PR is filed. These checks may result in two possible outcomes displayed next to your PR: <ul class="fa-ul"> <li>a green check-mark meaning everything's fine and your PR isn't offending the tree.</li> <li>a red cross meaning something is up and your PR needs fixing.</li> </ul> Our QA bot is chatty when a red cross shows up. At this point, it might point out two types of error: <blockquote> Issues persisted from underlying repository state: </blockquote> This error means that unfortunately, you forked the tree whilst it was in a very unstable state (meaning broken). Indeed, every now and then developers break the tree and, tough luck, it turns out you forked the tree into your GitHub profile or synced it up at this very moment. But no big deal as there's nothing for you to do. <blockquote> New issues: </blockquote> This error is a bit more serious and means your PR isn't complying with our QA standards. Usually, one or more link(s) are displayed right below for you to visualize in a browser what it's all about. Go ahead, take a look and fix those errors. Push again and wait for the bot to go over your PR again (every 30 minutes) until a green check-mark appears. == Troubleshooting== === Possible issues with signing=== It's possible that a message comes up like {{Cmd|title=Output|1= error: gpg failed to sign the data fatal: failed to write commit object !!! Exiting on git (shell) error code: 128 }} In such a case the <var>GPG_TTY</var> environment variable is to be set. To make sure it is always set, it can be added to the {{Path|~/.bashrc}} or to {{Path|/etc/portage/make.conf}}: {{FileBox|filename=~/.bashrc|lang=bash|1= export GPG_TTY=$(tty) }} Setting {{c|pinentry}} to a terminal-friendly variant, like {{c|pinentry-ncurses}} or {{c|pinentry-tty}} might also help with this issue. The available pinentry variants can be listed with [[eselect]]: {{Cmd|eselect pinentry list|output=<pre> Available pinentry binary implementations: [1] pinentry-qt [2] pinentry-qt4 [3] pinentry-curses [4] pinentry-tty *</pre> }} Set the desired handler with {{RootCmd|eselect pinentry set [number]}} For further information about gpg, please visit to the [[GnuPG]] article. ==See also== *{{See also|Gentoo git workflow}} *{{See also|Project:GitHub/Pull requests}} *{{See also|Standard git workflow}} *{{See also|Submitting_ebuilds}} ==External resources== *[[gentooglep:0063|GLEP 63]] *[[gentooglep:0066|GLEP 66]] [[Category:VCS]] [[Category:Contributing to Gentoo]] [[Category:Gentoo development]]'
New page wikitext, after the edit (new_wikitext)
'{{dirty}} {{InfoBox stack |{{InfoBox github|https://github.com/gentoo/gentoo/pulls|text=Gentoo Pull Requests|raw=true|header=true}} |{{InfoBox github|https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#about-pull-requests|raw=true|text=GitHub PR help}} }} This article explains [[Article description::how to contribute to Gentoo by creating [https://github.com/gentoo/gentoo/pulls pull requests on GitHub].]] [[File:Cycle of usercontributions.png|300px|thumbnail|right|Workflow of a user contribution. The green arrows show the path of contribution. Grey arrows are optional, possible access directions.]] === How to make a pull request === Making a pull request is explained at length in the various how-tos put together by the GitHub folks, here are two must-read how-tos: <ul class="fa-ul"> <li><i class="fa-li fa fa-arrow-circle-right" style="color: blue"></i>[https://help.github.com/articles/fork-a-repo/ Fork the Gentoo repository]</li> <li><i class="fa-li fa fa-arrow-circle-right" style="color: blue"></i>[https://help.github.com/articles/about-pull-requests/ Using pull requests]</li> </ul> {{Important|Currently new packages are added via [[Project:Proxy_Maintainers|proxy-maint project]] and the current manpower isn't enough to handle the flood of new packages. We recommend contributing to [[Project:GURU|GURU overlay]] instead for now, where interesting and popular packages are pulled to ::gentoo. Read more: https://archives.gentoo.org/gentoo-proxy-maint/message/44f7712fb49850288cd840c3541f6d7e}} == Configuration == === Repository's remote configuration === ==== Variant a: User configures a local repository ==== Clone the github mirror of the Gentoo repository under the remote name "upstream" into the {{path|path/to/save}} directory (substitute {{path|path/to/save}} with the directory of choice): {{Cmd|git clone -o upstream <nowiki>https://github.com/gentoo/gentoo.git</nowiki> path/to/save}} Step into the new directory, then view the 'remote' settings {{Cmd|cd $_|git remote -v|output=<pre style="white-space: pre;"> upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) </pre>}} [[File:Github fork.png|frameless|right]] Fork the [https://github.com/gentoo/gentoo Gentoo repository on GitHub] Add it under the remote name "github" to your local repository. {{Cmd|git remote add github <UrlOfYourFork.git>}} Verify the repository's remote settings {{Cmd|git remote -v|output=<pre style="white-space: pre;"> github https://github.com/<github user>/gentoo (fetch) github https://github.com/<github user>/gentoo (push) upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) </pre>}} ==== Variant b: Using the git repository as the ::gentoo repository ==== {{Warning|This setup is not fully functional since the plain developer repository as obtained from github lacks the metadata generated for the official ::gentoo repository.}} {{RootCmd|mkdir /etc/portage/repos.conf/}} Add the following to the file: {{FileBox|filename=/etc/portage/repos.conf/gentoo.conf|lang=ini|1= [gentoo] location = /var/db/repos/gentoo sync-type = git sync-uri = https://github.com/gentoo/gentoo.git auto-sync = yes sync-user = portage:portage }} Add the following, substitute <dev_user_name> with your username as appropriate in the script below. {{FileBox|filename=/etc/portage/postsync.d/99-user-dev-perms|lang=bash|1= #!/bin/bash DEV_USER_NAME=<dev_user_name> find /var/db/repos/gentoo/ -type d -exec setfacl -m u:$DEV_USER_NAME:rwx {} \; find /var/db/repos/gentoo/ -type f -exec setfacl -m u:$DEV_USER_NAME:rw {} \; find /var/db/repos/gentoo/.git -type d -exec setfacl -m u:$DEV_USER_NAME:rwx {} \; find /var/db/repos/gentoo/.git -type f -exec setfacl -m u:$DEV_USER_NAME:rw {} \; }} {{RootCmd|chmod +x /etc/portage/postsync.d/99-user-dev-perms}} Then sync the repository. {{RootCmd|emerge --sync}} [[File:Github fork.png|frameless|right]] Fork the [https://github.com/gentoo/gentoo Gentoo repository on GitHub] Add it under the remote name "github" to your local repository. {{Cmd |cd /var/db/repos/gentoo |git remote add github <UrlOfYourFork.git> }} === Repository's user configuration === [https://docs.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key Configure git to use the target key] for code signing and to '''properly sign-off all your commits''' (a more detailed description of how to create the signingkey is given in the [[#GPG configuration|next section]]): {{Cmd |git config --local user.name "Your Full Name" |git config --local user.email "example@domain.tld" |git config --local user.signingkey 0x000000000000000 |git config --local commit.gpgsign 1 }} Add helpful optional settings: {{Cmd |git config --local pull.ff only |git config --local pull.rebase merges |git config --local push.default simple |git config --local push.gpgsign 0 }} Verify the settings: {{Cmd|git config --local --list}} === GPG configuration === Add the following to {{path|gpg.conf}}: {{FileBox|filename=~/.gnupg/gpg.conf|title=General GPG Setup|1= keyserver hkps://keys.gentoo.org keyserver-options no-honor-keyserver-url cert-digest-algo SHA512 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed }} Now to generate the key: {{Cmd|gpg --full-generate-key}} * Select the algorithm. * Set the key size. * Specify how long the key should be valid (No more than 5 years). * Confirm the information is correct. * Set your name. * Set your passphrase, and confirm it. * It might take some time if you've chosen a high bit length key. Retrieve your GPG public keyID via the following command: {{Cmd|gpg --list-public-keys --keyid-format 0xlong example@domain.tld}} The key id is the portion after the <algorithm>/ on the line beginning with pub as shown in bold below. If you have more than one key with the specified UID you will need to select the correct key yourself from the list of returned keys. pub rsa4096/'''0x000000000000000''' Upload your key to the keyserver: {{Cmd|gpg --keyserver keys.openpgp.org --send-key 0x000000000000000}} == Usage == === Step 1: User updates the local repository === {{Cmd|git checkout master|git pull upstream master}} === Step 2: User changes a package === [[File:Circular workflow step1.png|200px|frameless|right]] Say you are making changes to package {{C|app-foo/bar}}. Create a local branch with the changes: {{Cmd|git checkout -b <branch name> master}} Make the changes and make sure to run {{C|[[pkgcheck]]}} to check for basic errors: {{Cmd |git add . |pkgdev manifest |pkgcheck scan --net --commits }} Then commit the changes, preferably using {{C|[[pkgdev]]}}. {{Cmd|pkgdev commit --signoff}} {{Tip|If {{c|pkgdev commit}} fails with an error like "error: gpg failed to sign the data", run the command again as {{c|GIT_TRACE{{=}}1 pkgdev commit ...}} and run the {{c|gpg}} command which fails manually to find the real error. If that still doesn't work then check the [[GitHub Pull Requests#Troubleshooting|Troubleshooting section]]}} If the commit is to close or comment bugs on Bugzilla, these should be [[#Links to bug report(s)|mentioned in the commit message]] as suggested by [https://www.gentoo.org/glep/glep-0066.html#commit-messages GLEP66]. {{C|pkgdev}} supports this through the <code>--bug</code> and <code>--closes</code> options.{{Cmd|pkgdev commit --closes NNNNNN --signoff}} ===Step 3: User makes a pull request=== [[File:Circular workflow step2.png|200px|frameless|right]] Now that the changes have been made and the local branch updated, it is time to send it off to GitHub and make a PR (Pull Request) for the Gentoo Developers. Start by pushing the branch with the changes to your GitHub repository: {{Cmd|git push github <branch name>}} Then [https://help.github.com/articles/creating-a-pull-request/ create a pull request] from your GitHub repository's local branch to the Gentoo repository's master branch. When the changes have been merged, you may delete the local repository's branch with: {{Cmd |git checkout master |git branch -d <branch name> |git push github :<branch name> }} ==Links to bug report(s)== A bot automatically picks up bug reports if the link(s) to the bug in question appear(s) in the body of the commit message. The bot then writes a message in the bug report and/or closes it. That way, other users quickly get to know a patch or a fix has landed in the tree. '''This feature helps Gentoo developers save time as they don't have to switch back and forth between Bugzilla, GitHub, and their terminal to figure out which bug reports may be closed.''' === How does it work?=== The bot can parse two types of header: Bug: https://bugs.gentoo.org/123456 will automatically write a message in the bug report '''without''' closing it. Closes: https://bugs.gentoo.org/123456 will automatically write a message in the bug report, change the status of the bug report to RESOLVED and the resolution to FIXED. If the commit involves several bug reports, they can be mentioned and stack the links. The bot will write a message in each bug report: Bug: https://bugs.gentoo.org/123456 Bug: https://bugs.gentoo.org/456789 Bug: https://bugs.gentoo.org/101010 It also works with the <code>Closes:</code> header: Closes: https://bugs.gentoo.org/123456 Closes: https://bugs.gentoo.org/456789 Closes: https://bugs.gentoo.org/101010 Feel free to add as much information as possible: upstream forums, mailing lists, discussions, links to changelogs, etc. The bot won't post messages all over the place though, but these useful information will appear in the ChangeLog file of the ebuild. ==QA checks == ===gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don't understand.=== [[File:Gentoo-repo-qa-bot All checks have failed.png|thumbnail|right|Checks have failed for this pull request]] We have set up an automated CI system which performs various QA checks when a PR is filed. These checks may result in two possible outcomes displayed next to your PR: <ul class="fa-ul"> <li>a green check-mark meaning everything's fine and your PR isn't offending the tree.</li> <li>a red cross meaning something is up and your PR needs fixing.</li> </ul> Our QA bot is chatty when a red cross shows up. At this point, it might point out two types of error: <blockquote> Issues persisted from underlying repository state: </blockquote> This error means that unfortunately, you forked the tree whilst it was in a very unstable state (meaning broken). Indeed, every now and then developers break the tree and, tough luck, it turns out you forked the tree into your GitHub profile or synced it up at this very moment. But no big deal as there's nothing for you to do. <blockquote> New issues: </blockquote> This error is a bit more serious and means your PR isn't complying with our QA standards. Usually, one or more link(s) are displayed right below for you to visualize in a browser what it's all about. Go ahead, take a look and fix those errors. Push again and wait for the bot to go over your PR again (every 30 minutes) until a green check-mark appears. == Troubleshooting== === Possible issues with signing=== It's possible that a message comes up like {{Cmd|title=Output|1= error: gpg failed to sign the data fatal: failed to write commit object !!! Exiting on git (shell) error code: 128 }} In such a case the <var>GPG_TTY</var> environment variable is to be set. To make sure it is always set, it can be added to the {{Path|~/.bashrc}} or to {{Path|/etc/portage/make.conf}}: {{FileBox|filename=~/.bashrc|lang=bash|1= export GPG_TTY=$(tty) }} Setting {{c|pinentry}} to a terminal-friendly variant, like {{c|pinentry-ncurses}} or {{c|pinentry-tty}} might also help with this issue. The available pinentry variants can be listed with [[eselect]]: {{Cmd|eselect pinentry list|output=<pre> Available pinentry binary implementations: [1] pinentry-qt [2] pinentry-qt4 [3] pinentry-curses [4] pinentry-tty *</pre> }} Set the desired handler with {{RootCmd|eselect pinentry set [number]}} For further information about gpg, please visit to the [[GnuPG]] article. ==See also== *{{See also|Gentoo git workflow}} *{{See also|Project:GitHub/Pull requests}} *{{See also|Standard git workflow}} *{{See also|Submitting_ebuilds}} * https://wiki.gentoo.org/wiki/Incus/Gentoo_Github_pullrequest_testing ==External resources== *[[gentooglep:0063|GLEP 63]] *[[gentooglep:0066|GLEP 66]] [[Category:VCS]] [[Category:Contributing to Gentoo]] [[Category:Gentoo development]]'
Unified diff of changes made by edit (edit_diff)
'@@ -303,4 +303,5 @@ *{{See also|Standard git workflow}} *{{See also|Submitting_ebuilds}} +* https://wiki.gentoo.org/wiki/Incus/Gentoo_Github_pullrequest_testing ==External resources== '
Old page size (old_size)
12685
Lines added in edit (added_lines)
[ 0 => '* https://wiki.gentoo.org/wiki/Incus/Gentoo_Github_pullrequest_testing' ]
Lines removed in edit (removed_lines)
[]
New page text, stripped of any markup (new_text)
' This article has been flagged for not conforming to the wiki guidelines. Please help Gentoo out by starting fixing things. Resources Gentoo Pull Requests GitHub PR help This article explains how to contribute to Gentoo by creating pull requests on GitHub. Workflow of a user contribution. The green arrows show the path of contribution. Grey arrows are optional, possible access directions. Contents 1 How to make a pull request 2 Configuration 2.1 Repository's remote configuration 2.1.1 Variant a: User configures a local repository 2.1.2 Variant b: Using the git repository as the&#160;::gentoo repository 2.2 Repository's user configuration 2.3 GPG configuration 3 Usage 3.1 Step 1: User updates the local repository 3.2 Step 2: User changes a package 3.3 Step 3: User makes a pull request 4 Links to bug report(s) 4.1 How does it work? 5 QA checks 5.1 gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don't understand. 6 Troubleshooting 6.1 Possible issues with signing 7 See also 8 External resources How to make a pull request[edit | edit source] Making a pull request is explained at length in the various how-tos put together by the GitHub folks, here are two must-read how-tos: Fork the Gentoo repository Using pull requests ImportantCurrently new packages are added via proxy-maint project and the current manpower isn't enough to handle the flood of new packages. We recommend contributing to GURU overlay instead for now, where interesting and popular packages are pulled to&#160;::gentoo. Read more: https://archives.gentoo.org/gentoo-proxy-maint/message/44f7712fb49850288cd840c3541f6d7e Configuration[edit | edit source] Repository's remote configuration[edit | edit source] Variant a: User configures a local repository[edit | edit source] Clone the github mirror of the Gentoo repository under the remote name "upstream" into the path/to/save directory (substitute path/to/save with the directory of choice): user $git clone -o upstream https://github.com/gentoo/gentoo.git path/to/save Step into the new directory, then view the 'remote' settings user $cd $_user $git remote -vupstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) Fork the Gentoo repository on GitHub Add it under the remote name "github" to your local repository. user $git remote add github &lt;UrlOfYourFork.git&gt; Verify the repository's remote settings user $git remote -vgithub https://github.com/&lt;github user&gt;/gentoo (fetch) github https://github.com/&lt;github user&gt;/gentoo (push) upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) Variant b: Using the git repository as the&#160;::gentoo repository[edit | edit source] WarningThis setup is not fully functional since the plain developer repository as obtained from github lacks the metadata generated for the official&#160;::gentoo repository. root #mkdir /etc/portage/repos.conf/ Add the following to the file: FILE /etc/portage/repos.conf/gentoo.conf [gentoo] location = /var/db/repos/gentoo sync-type = git sync-uri = https://github.com/gentoo/gentoo.git auto-sync = yes sync-user = portage:portage Add the following, substitute &lt;dev_user_name&gt; with your username as appropriate in the script below. FILE /etc/portage/postsync.d/99-user-dev-perms #!/bin/bash DEV_USER_NAME=&lt;dev_user_name&gt; find /var/db/repos/gentoo/ -type d -exec setfacl -m u:$DEV_USER_NAME:rwx {} \; find /var/db/repos/gentoo/ -type f -exec setfacl -m u:$DEV_USER_NAME:rw {} \; find /var/db/repos/gentoo/.git -type d -exec setfacl -m u:$DEV_USER_NAME:rwx {} \; find /var/db/repos/gentoo/.git -type f -exec setfacl -m u:$DEV_USER_NAME:rw {} \; root #chmod +x /etc/portage/postsync.d/99-user-dev-perms Then sync the repository. root #emerge --sync Fork the Gentoo repository on GitHub Add it under the remote name "github" to your local repository. user $cd /var/db/repos/gentoo user $git remote add github &lt;UrlOfYourFork.git&gt; Repository's user configuration[edit | edit source] Configure git to use the target key for code signing and to properly sign-off all your commits (a more detailed description of how to create the signingkey is given in the next section): user $git config --local user.name "Your Full Name" user $git config --local user.email "example@domain.tld" user $git config --local user.signingkey 0x000000000000000 user $git config --local commit.gpgsign 1 Add helpful optional settings: user $git config --local pull.ff only user $git config --local pull.rebase merges user $git config --local push.default simple user $git config --local push.gpgsign 0 Verify the settings: user $git config --local --list GPG configuration[edit | edit source] Add the following to gpg.conf: FILE ~/.gnupg/gpg.confGeneral GPG Setup keyserver hkps://keys.gentoo.org keyserver-options no-honor-keyserver-url cert-digest-algo SHA512 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed Now to generate the key: user $gpg --full-generate-key Select the algorithm. Set the key size. Specify how long the key should be valid (No more than 5 years). Confirm the information is correct. Set your name. Set your passphrase, and confirm it. It might take some time if you've chosen a high bit length key. Retrieve your GPG public keyID via the following command: user $gpg --list-public-keys --keyid-format 0xlong example@domain.tld The key id is the portion after the &lt;algorithm&gt;/ on the line beginning with pub as shown in bold below. If you have more than one key with the specified UID you will need to select the correct key yourself from the list of returned keys. pub rsa4096/0x000000000000000 Upload your key to the keyserver: user $gpg --keyserver keys.openpgp.org --send-key 0x000000000000000 Usage[edit | edit source] Step 1: User updates the local repository[edit | edit source] user $git checkout masteruser $git pull upstream master Step 2: User changes a package[edit | edit source] Say you are making changes to package app-foo/bar. Create a local branch with the changes: user $git checkout -b &lt;branch name&gt; master Make the changes and make sure to run pkgcheck to check for basic errors: user $git add . user $pkgdev manifest user $pkgcheck scan --net --commits Then commit the changes, preferably using pkgdev. user $pkgdev commit --signoff TipIf pkgdev commit fails with an error like "error: gpg failed to sign the data", run the command again as GIT_TRACE=1 pkgdev commit ... and run the gpg command which fails manually to find the real error. If that still doesn't work then check the Troubleshooting section If the commit is to close or comment bugs on Bugzilla, these should be mentioned in the commit message as suggested by GLEP66. pkgdev supports this through the --bug and --closes options.user $pkgdev commit --closes NNNNNN --signoff Step 3: User makes a pull request[edit | edit source] Now that the changes have been made and the local branch updated, it is time to send it off to GitHub and make a PR (Pull Request) for the Gentoo Developers. Start by pushing the branch with the changes to your GitHub repository: user $git push github &lt;branch name&gt; Then create a pull request from your GitHub repository's local branch to the Gentoo repository's master branch. When the changes have been merged, you may delete the local repository's branch with: user $git checkout master user $git branch -d &lt;branch name&gt; user $git push github&#160;:&lt;branch name&gt; Links to bug report(s)[edit | edit source] A bot automatically picks up bug reports if the link(s) to the bug in question appear(s) in the body of the commit message. The bot then writes a message in the bug report and/or closes it. That way, other users quickly get to know a patch or a fix has landed in the tree. This feature helps Gentoo developers save time as they don't have to switch back and forth between Bugzilla, GitHub, and their terminal to figure out which bug reports may be closed. How does it work?[edit | edit source] The bot can parse two types of header: Bug: https://bugs.gentoo.org/123456 will automatically write a message in the bug report without closing it. Closes: https://bugs.gentoo.org/123456 will automatically write a message in the bug report, change the status of the bug report to RESOLVED and the resolution to FIXED. If the commit involves several bug reports, they can be mentioned and stack the links. The bot will write a message in each bug report: Bug: https://bugs.gentoo.org/123456 Bug: https://bugs.gentoo.org/456789 Bug: https://bugs.gentoo.org/101010 It also works with the Closes: header: Closes: https://bugs.gentoo.org/123456 Closes: https://bugs.gentoo.org/456789 Closes: https://bugs.gentoo.org/101010 Feel free to add as much information as possible: upstream forums, mailing lists, discussions, links to changelogs, etc. The bot won't post messages all over the place though, but these useful information will appear in the ChangeLog file of the ebuild. QA checks[edit | edit source] gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don't understand.[edit | edit source] Checks have failed for this pull request We have set up an automated CI system which performs various QA checks when a PR is filed. These checks may result in two possible outcomes displayed next to your PR: a green check-mark meaning everything's fine and your PR isn't offending the tree. a red cross meaning something is up and your PR needs fixing. Our QA bot is chatty when a red cross shows up. At this point, it might point out two types of error: Issues persisted from underlying repository state: This error means that unfortunately, you forked the tree whilst it was in a very unstable state (meaning broken). Indeed, every now and then developers break the tree and, tough luck, it turns out you forked the tree into your GitHub profile or synced it up at this very moment. But no big deal as there's nothing for you to do. New issues: This error is a bit more serious and means your PR isn't complying with our QA standards. Usually, one or more link(s) are displayed right below for you to visualize in a browser what it's all about. Go ahead, take a look and fix those errors. Push again and wait for the bot to go over your PR again (every 30 minutes) until a green check-mark appears. Troubleshooting[edit | edit source] Possible issues with signing[edit | edit source] It's possible that a message comes up like user $error: gpg failed to sign the data fatal: failed to write commit object !!! Exiting on git (shell) error code: 128 In such a case the GPG_TTY environment variable is to be set. To make sure it is always set, it can be added to the ~/.bashrc or to /etc/portage/make.conf: FILE ~/.bashrc export GPG_TTY=$(tty) Setting pinentry to a terminal-friendly variant, like pinentry-ncurses or pinentry-tty might also help with this issue. The available pinentry variants can be listed with eselect: user $eselect pinentry listAvailable pinentry binary implementations: [1] pinentry-qt [2] pinentry-qt4 [3] pinentry-curses [4] pinentry-tty * Set the desired handler with root #eselect pinentry set [number] For further information about gpg, please visit to the GnuPG article. See also[edit | edit source] Gentoo git workflow — outlines some rules and best-practices regarding the typical workflow for ebuild developers using git. Project:GitHub/Pull requests Standard git workflow — describing a modern git workflow for contributing to Gentoo, with pkgcheck and pkgdev Submitting_ebuilds — explains how to submit ebuilds for inclusion in the Gentoo ebuild repository https://wiki.gentoo.org/wiki/Incus/Gentoo_Github_pullrequest_testing External resources[edit | edit source] GLEP 63 GLEP 66'
Parsed HTML source of the new revision (new_html)
'<div class="mw-parser-output"><div class="alert gw-box" style="padding: 8px 15px; background-color: #f5f5f5; border-color: #b8adde; color: #4d4370&#32;;"><span class="fa fa-fw fa-pencil"></span> This article has been flagged for not conforming to the <a href="/wiki/Gentoo_Wiki:Guidelines" title="Gentoo Wiki:Guidelines">wiki guidelines</a>. Please <a href="/wiki/Help_improve_Gentoo_by_getting_involved_with_documentation!#Make_articles_conform_to_the_guidelines" title="Help improve Gentoo by getting involved with documentation!">help Gentoo out</a> by starting fixing things.</div> <div id="infobox-stack" class="list-group" style="width: 25em; float: right; clear: right; font-size: 90%; margin-left: 1em;"> <div class="list-group-item text-center" style="padding-top: 3px; padding-bottom: 3px; background-color: #463C65; color: white;"><b>Resources</b></div> <div id="infobox" class="list-group-item" style="display: flex; align-items: center; padding: 5px; min-height: 3em;"><span style="display: inline-block; width: 3em; overflow: hidden; text-align: center;"><span class="fa fa-github fa-fw fa-2x"></span></span><span><a rel="nofollow" class="external text" href="https://github.com/gentoo/gentoo/pulls">Gentoo Pull Requests</a></span></div> <div id="infobox" class="list-group-item" style="display: flex; align-items: center; padding: 5px; min-height: 3em;"><span style="display: inline-block; width: 3em; overflow: hidden; text-align: center;"><span class="fa fa-github fa-fw fa-2x"></span></span><span><a rel="nofollow" class="external text" href="https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#about-pull-requests">GitHub PR help</a></span></div> </div> <p>This article explains how to contribute to Gentoo by creating <a rel="nofollow" class="external text" href="https://github.com/gentoo/gentoo/pulls">pull requests on GitHub</a>. </p> <div class="thumb tright"><div class="thumbinner" style="width:302px;"><a href="/wiki/File:Cycle_of_usercontributions.png" class="image"><img alt="" src="/images/thumb/6/6c/Cycle_of_usercontributions.png/300px-Cycle_of_usercontributions.png" decoding="async" width="300" height="355" class="thumbimage" srcset="/images/thumb/6/6c/Cycle_of_usercontributions.png/450px-Cycle_of_usercontributions.png 1.5x, /images/6/6c/Cycle_of_usercontributions.png 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Cycle_of_usercontributions.png" class="internal" title="Enlarge"></a></div>Workflow of a user contribution. The green arrows show the path of contribution. Grey arrows are optional, possible access directions.</div></div></div> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#How_to_make_a_pull_request"><span class="tocnumber">1</span> <span class="toctext">How to make a pull request</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#Configuration"><span class="tocnumber">2</span> <span class="toctext">Configuration</span></a> <ul> <li class="toclevel-2 tocsection-3"><a href="#Repository.27s_remote_configuration"><span class="tocnumber">2.1</span> <span class="toctext">Repository's remote configuration</span></a> <ul> <li class="toclevel-3 tocsection-4"><a href="#Variant_a:_User_configures_a_local_repository"><span class="tocnumber">2.1.1</span> <span class="toctext">Variant a: User configures a local repository</span></a></li> <li class="toclevel-3 tocsection-5"><a href="#Variant_b:_Using_the_git_repository_as_the_::gentoo_repository"><span class="tocnumber">2.1.2</span> <span class="toctext">Variant b: Using the git repository as the&#160;::gentoo repository</span></a></li> </ul> </li> <li class="toclevel-2 tocsection-6"><a href="#Repository.27s_user_configuration"><span class="tocnumber">2.2</span> <span class="toctext">Repository's user configuration</span></a></li> <li class="toclevel-2 tocsection-7"><a href="#GPG_configuration"><span class="tocnumber">2.3</span> <span class="toctext">GPG configuration</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-8"><a href="#Usage"><span class="tocnumber">3</span> <span class="toctext">Usage</span></a> <ul> <li class="toclevel-2 tocsection-9"><a href="#Step_1:_User_updates_the_local_repository"><span class="tocnumber">3.1</span> <span class="toctext">Step 1: User updates the local repository</span></a></li> <li class="toclevel-2 tocsection-10"><a href="#Step_2:_User_changes_a_package"><span class="tocnumber">3.2</span> <span class="toctext">Step 2: User changes a package</span></a></li> <li class="toclevel-2 tocsection-11"><a href="#Step_3:_User_makes_a_pull_request"><span class="tocnumber">3.3</span> <span class="toctext">Step 3: User makes a pull request</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-12"><a href="#Links_to_bug_report.28s.29"><span class="tocnumber">4</span> <span class="toctext">Links to bug report(s)</span></a> <ul> <li class="toclevel-2 tocsection-13"><a href="#How_does_it_work.3F"><span class="tocnumber">4.1</span> <span class="toctext">How does it work?</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-14"><a href="#QA_checks"><span class="tocnumber">5</span> <span class="toctext">QA checks</span></a> <ul> <li class="toclevel-2 tocsection-15"><a href="#gentoo-repo-qa-bot_is_engaging_in_a_conversation_with_me_in_the_PR._I_don.27t_understand."><span class="tocnumber">5.1</span> <span class="toctext">gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don't understand.</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-16"><a href="#Troubleshooting"><span class="tocnumber">6</span> <span class="toctext">Troubleshooting</span></a> <ul> <li class="toclevel-2 tocsection-17"><a href="#Possible_issues_with_signing"><span class="tocnumber">6.1</span> <span class="toctext">Possible issues with signing</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-18"><a href="#See_also"><span class="tocnumber">7</span> <span class="toctext">See also</span></a></li> <li class="toclevel-1 tocsection-19"><a href="#External_resources"><span class="tocnumber">8</span> <span class="toctext">External resources</span></a></li> </ul> </div> <h3><span class="mw-headline" id="How_to_make_a_pull_request">How to make a pull request</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=1" class="mw-editsection-visualeditor" title="Edit section: How to make a pull request">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=1" title="Edit section: How to make a pull request">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <p>Making a pull request is explained at length in the various how-tos put together by the GitHub folks, here are two must-read how-tos: </p> <ul class="fa-ul"> <li><i class="fa-li fa fa-arrow-circle-right" style="color: blue"></i><a rel="nofollow" class="external text" href="https://help.github.com/articles/fork-a-repo/">Fork the Gentoo repository</a></li> <li><i class="fa-li fa fa-arrow-circle-right" style="color: blue"></i><a rel="nofollow" class="external text" href="https://help.github.com/articles/about-pull-requests/">Using pull requests</a></li> </ul> <div class="alert alert-warning gw-box" style="padding-top: 8px; padding-bottom: 8px;"><strong><i class="fa fa-exclamation-circle"></i> Important</strong><br />Currently new packages are added via <a href="/wiki/Project:Proxy_Maintainers" title="Project:Proxy Maintainers">proxy-maint project</a> and the current manpower isn't enough to handle the flood of new packages. We recommend contributing to <a href="/wiki/Project:GURU" title="Project:GURU">GURU overlay</a> instead for now, where interesting and popular packages are pulled to&#160;::gentoo. Read more: <a rel="nofollow" class="external free" href="https://archives.gentoo.org/gentoo-proxy-maint/message/44f7712fb49850288cd840c3541f6d7e">https://archives.gentoo.org/gentoo-proxy-maint/message/44f7712fb49850288cd840c3541f6d7e</a></div> <h2><span class="mw-headline" id="Configuration">Configuration</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=2" class="mw-editsection-visualeditor" title="Edit section: Configuration">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=2" title="Edit section: Configuration">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <h3><span id="Repository&#39;s_remote_configuration"></span><span class="mw-headline" id="Repository.27s_remote_configuration">Repository's remote configuration</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=3" class="mw-editsection-visualeditor" title="Edit section: Repository&#039;s remote configuration">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=3" title="Edit section: Repository&#039;s remote configuration">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <h4><span class="mw-headline" id="Variant_a:_User_configures_a_local_repository">Variant a: User configures a local repository</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=4" class="mw-editsection-visualeditor" title="Edit section: Variant a: User configures a local repository">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=4" title="Edit section: Variant a: User configures a local repository">edit source</a><span class="mw-editsection-bracket">]</span></span></h4> <p>Clone the github mirror of the Gentoo repository under the remote name "upstream" into the <span style="font-family: monospace; font-size: 95%; color: #3c763d; font-weight: 600;">path/to/save</span> directory (substitute <span style="font-family: monospace; font-size: 95%; color: #3c763d; font-weight: 600;">path/to/save</span> with the directory of choice): </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git clone -o upstream https://github.com/gentoo/gentoo.git path/to/save</code></div></div> <p>Step into the new directory, then view the 'remote' settings </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>cd $_</code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git remote -v</code></div><pre style="white-space: pre;">upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) </pre></div> <div class="floatright"><a href="/wiki/File:Github_fork.png" class="image"><img alt="Github fork.png" src="/images/2/20/Github_fork.png" decoding="async" width="106" height="31" /></a></div><p> Fork the <a rel="nofollow" class="external text" href="https://github.com/gentoo/gentoo">Gentoo repository on GitHub</a> </p><p>Add it under the remote name "github" to your local repository. </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git remote add github &lt;UrlOfYourFork.git&gt;</code></div></div> <p>Verify the repository's remote settings </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git remote -v</code></div><pre style="white-space: pre;">github https://github.com/&lt;github user&gt;/gentoo (fetch) github https://github.com/&lt;github user&gt;/gentoo (push) upstream https://github.com/gentoo/gentoo.git (fetch) upstream https://github.com/gentoo/gentoo.git (push) </pre></div> <h4><span class="mw-headline" id="Variant_b:_Using_the_git_repository_as_the_::gentoo_repository">Variant b: Using the git repository as the&#160;::gentoo repository</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=5" class="mw-editsection-visualeditor" title="Edit section: Variant b: Using the git repository as the ::gentoo repository">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=5" title="Edit section: Variant b: Using the git repository as the ::gentoo repository">edit source</a><span class="mw-editsection-bracket">]</span></span></h4> <div class="alert alert-danger gw-box" style="padding-top: 8px; padding-bottom: 8px;"><strong><i class="fa fa-exclamation-triangle"></i> Warning</strong><br />This setup is not fully functional since the plain developer repository as obtained from github lacks the metadata generated for the official&#160;::gentoo repository.</div> <div class="cmd-box"><div><code style="color: #ef2929; font-weight: bold;">root <span style="color:royalblue;">#</span></code><span class="tripleclick-separator"></span><code>mkdir /etc/portage/repos.conf/</code></div></div> <p>Add the following to the file: </p> <div class="box-caption"><span class="label" style="margin-right: .5em; background-color: #54487A">FILE</span> <strong><code style="border: none; background: none; color: #54487A; margin-right: .5em;">/etc/portage/repos.conf/gentoo.conf</code></strong><strong></strong></div> <div class="mw-highlight mw-highlight-lang-ini mw-content-ltr" dir="ltr"><pre><span></span><span class="k">[gentoo]</span> <span class="na">location</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">/var/db/repos/gentoo</span> <span class="na">sync-type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">git</span> <span class="na">sync-uri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">https://github.com/gentoo/gentoo.git</span> <span class="na">auto-sync</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">yes</span> <span class="na">sync-user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">portage:portage</span> </pre></div> <p>Add the following, substitute &lt;dev_user_name&gt; with your username as appropriate in the script below. </p> <div class="box-caption"><span class="label" style="margin-right: .5em; background-color: #54487A">FILE</span> <strong><code style="border: none; background: none; color: #54487A; margin-right: .5em;">/etc/portage/postsync.d/99-user-dev-perms</code></strong><strong></strong></div> <div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span></span><span class="ch">#!/bin/bash</span> <span class="nv">DEV_USER_NAME</span><span class="o">=</span>&lt;dev_user_name&gt; find<span class="w"> </span>/var/db/repos/gentoo/<span class="w"> </span>-type<span class="w"> </span>d<span class="w"> </span>-exec<span class="w"> </span>setfacl<span class="w"> </span>-m<span class="w"> </span>u:<span class="nv">$DEV_USER_NAME</span>:rwx<span class="w"> </span><span class="o">{}</span><span class="w"> </span><span class="se">\;</span> find<span class="w"> </span>/var/db/repos/gentoo/<span class="w"> </span>-type<span class="w"> </span>f<span class="w"> </span>-exec<span class="w"> </span>setfacl<span class="w"> </span>-m<span class="w"> </span>u:<span class="nv">$DEV_USER_NAME</span>:rw<span class="w"> </span><span class="o">{}</span><span class="w"> </span><span class="se">\;</span> find<span class="w"> </span>/var/db/repos/gentoo/.git<span class="w"> </span>-type<span class="w"> </span>d<span class="w"> </span>-exec<span class="w"> </span>setfacl<span class="w"> </span>-m<span class="w"> </span>u:<span class="nv">$DEV_USER_NAME</span>:rwx<span class="w"> </span><span class="o">{}</span><span class="w"> </span><span class="se">\;</span> find<span class="w"> </span>/var/db/repos/gentoo/.git<span class="w"> </span>-type<span class="w"> </span>f<span class="w"> </span>-exec<span class="w"> </span>setfacl<span class="w"> </span>-m<span class="w"> </span>u:<span class="nv">$DEV_USER_NAME</span>:rw<span class="w"> </span><span class="o">{}</span><span class="w"> </span><span class="se">\;</span> </pre></div> <div class="cmd-box"><div><code style="color: #ef2929; font-weight: bold;">root <span style="color:royalblue;">#</span></code><span class="tripleclick-separator"></span><code>chmod +x /etc/portage/postsync.d/99-user-dev-perms</code></div></div> <p>Then sync the repository. </p> <div class="cmd-box"><div><code style="color: #ef2929; font-weight: bold;">root <span style="color:royalblue;">#</span></code><span class="tripleclick-separator"></span><code>emerge --sync</code></div></div> <div class="floatright"><a href="/wiki/File:Github_fork.png" class="image"><img alt="Github fork.png" src="/images/2/20/Github_fork.png" decoding="async" width="106" height="31" /></a></div><p> Fork the <a rel="nofollow" class="external text" href="https://github.com/gentoo/gentoo">Gentoo repository on GitHub</a> </p><p>Add it under the remote name "github" to your local repository. </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>cd /var/db/repos/gentoo </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git remote add github &lt;UrlOfYourFork.git&gt; </code></div></div> <h3><span id="Repository&#39;s_user_configuration"></span><span class="mw-headline" id="Repository.27s_user_configuration">Repository's user configuration</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=6" class="mw-editsection-visualeditor" title="Edit section: Repository&#039;s user configuration">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=6" title="Edit section: Repository&#039;s user configuration">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <p><a rel="nofollow" class="external text" href="https://docs.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key">Configure git to use the target key</a> for code signing and to <b>properly sign-off all your commits</b> (a more detailed description of how to create the signingkey is given in the <a href="#GPG_configuration">next section</a>): </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local user.name "Your Full Name" </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local user.email "example@domain.tld" </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local user.signingkey 0x000000000000000 </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local commit.gpgsign 1 </code></div></div> <p>Add helpful optional settings: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local pull.ff only </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local pull.rebase merges </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local push.default simple </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local push.gpgsign 0 </code></div></div> <p>Verify the settings: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git config --local --list</code></div></div> <h3><span class="mw-headline" id="GPG_configuration">GPG configuration</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=7" class="mw-editsection-visualeditor" title="Edit section: GPG configuration">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=7" title="Edit section: GPG configuration">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <p>Add the following to <span style="font-family: monospace; font-size: 95%; color: #3c763d; font-weight: 600;">gpg.conf</span>: </p> <div class="box-caption"><span class="label" style="margin-right: .5em; background-color: #54487A">FILE</span> <strong><code style="border: none; background: none; color: #54487A; margin-right: .5em;">~/.gnupg/gpg.conf</code></strong><strong>General GPG Setup</strong></div> <div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span>keyserver hkps://keys.gentoo.org keyserver-options no-honor-keyserver-url cert-digest-algo SHA512 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed </pre></div> <p>Now to generate the key: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>gpg --full-generate-key</code></div></div> <ul><li>Select the algorithm.</li> <li>Set the key size.</li> <li>Specify how long the key should be valid (No more than 5 years).</li> <li>Confirm the information is correct.</li> <li>Set your name.</li> <li>Set your passphrase, and confirm it.</li> <li>It might take some time if you've chosen a high bit length key.</li></ul> <p>Retrieve your GPG public keyID via the following command: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>gpg --list-public-keys --keyid-format 0xlong example@domain.tld</code></div></div> <p>The key id is the portion after the &lt;algorithm&gt;/ on the line beginning with pub as shown in bold below. If you have more than one key with the specified UID you will need to select the correct key yourself from the list of returned keys. </p> <pre> pub rsa4096/<b>0x000000000000000</b> </pre> <p>Upload your key to the keyserver: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>gpg --keyserver keys.openpgp.org --send-key 0x000000000000000</code></div></div> <h2><span class="mw-headline" id="Usage">Usage</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=8" class="mw-editsection-visualeditor" title="Edit section: Usage">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=8" title="Edit section: Usage">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <h3><span class="mw-headline" id="Step_1:_User_updates_the_local_repository">Step 1: User updates the local repository</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=9" class="mw-editsection-visualeditor" title="Edit section: Step 1: User updates the local repository">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=9" title="Edit section: Step 1: User updates the local repository">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git checkout master</code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git pull upstream master</code></div></div> <h3><span class="mw-headline" id="Step_2:_User_changes_a_package">Step 2: User changes a package</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=10" class="mw-editsection-visualeditor" title="Edit section: Step 2: User changes a package">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=10" title="Edit section: Step 2: User changes a package">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <div class="floatright"><a href="/wiki/File:Circular_workflow_step1.png" class="image"><img alt="Circular workflow step1.png" src="/images/thumb/5/5c/Circular_workflow_step1.png/200px-Circular_workflow_step1.png" decoding="async" width="200" height="276" srcset="/images/thumb/5/5c/Circular_workflow_step1.png/300px-Circular_workflow_step1.png 1.5x, /images/thumb/5/5c/Circular_workflow_step1.png/400px-Circular_workflow_step1.png 2x" /></a></div> <p>Say you are making changes to package <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">app-foo/bar</span>. Create a local branch with the changes: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git checkout -b &lt;branch name&gt; master</code></div></div> <p>Make the changes and make sure to run <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator"><a href="/wiki/Pkgcheck" title="Pkgcheck">pkgcheck</a></span> to check for basic errors: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git add . </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>pkgdev manifest </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>pkgcheck scan --net --commits </code></div></div> <p>Then commit the changes, preferably using <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator"><a href="/wiki/Pkgdev" title="Pkgdev">pkgdev</a></span>. </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>pkgdev commit --signoff</code></div></div> <div class="alert alert-success gw-box" style="padding-top: 8px; padding-bottom: 8px;"><strong><i class="fa fa-check-circle"></i> Tip</strong><br />If <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pkgdev commit</span> fails with an error like "error: gpg failed to sign the data", run the command again as <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">GIT_TRACE=1 pkgdev commit ...</span> and run the <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">gpg</span> command which fails manually to find the real error. <p><br /> </p> If that still doesn't work then check the <a href="/wiki/GitHub_Pull_Requests#Troubleshooting" class="mw-redirect" title="GitHub Pull Requests">Troubleshooting section</a></div> <p><br /> </p><p> If the commit is to close or comment bugs on Bugzilla, these should be <a href="#Links_to_bug_report.28s.29">mentioned in the commit message</a> as suggested by <a rel="nofollow" class="external text" href="https://www.gentoo.org/glep/glep-0066.html#commit-messages">GLEP66</a>. <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pkgdev</span> supports this through the <code>--bug</code> and <code>--closes</code> options.</p><div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>pkgdev commit --closes NNNNNN --signoff</code></div></div> <h3><span class="mw-headline" id="Step_3:_User_makes_a_pull_request">Step 3: User makes a pull request</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=11" class="mw-editsection-visualeditor" title="Edit section: Step 3: User makes a pull request">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=11" title="Edit section: Step 3: User makes a pull request">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <div class="floatright"><a href="/wiki/File:Circular_workflow_step2.png" class="image"><img alt="Circular workflow step2.png" src="/images/thumb/a/a9/Circular_workflow_step2.png/200px-Circular_workflow_step2.png" decoding="async" width="200" height="278" srcset="/images/thumb/a/a9/Circular_workflow_step2.png/300px-Circular_workflow_step2.png 1.5x, /images/thumb/a/a9/Circular_workflow_step2.png/400px-Circular_workflow_step2.png 2x" /></a></div> <p>Now that the changes have been made and the local branch updated, it is time to send it off to GitHub and make a PR (Pull Request) for the Gentoo Developers. </p><p>Start by pushing the branch with the changes to your GitHub repository: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git push github &lt;branch name&gt;</code></div></div> <p>Then <a rel="nofollow" class="external text" href="https://help.github.com/articles/creating-a-pull-request/">create a pull request</a> from your GitHub repository's local branch to the Gentoo repository's master branch. When the changes have been merged, you may delete the local repository's branch with: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git checkout master </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git branch -d &lt;branch name&gt; </code></div><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>git push github&#160;:&lt;branch name&gt; </code></div></div> <h2><span id="Links_to_bug_report(s)"></span><span class="mw-headline" id="Links_to_bug_report.28s.29">Links to bug report(s)</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=12" class="mw-editsection-visualeditor" title="Edit section: Links to bug report(s)">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=12" title="Edit section: Links to bug report(s)">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <p>A bot automatically picks up bug reports if the link(s) to the bug in question appear(s) in the body of the commit message. The bot then writes a message in the bug report and/or closes it. That way, other users quickly get to know a patch or a fix has landed in the tree. </p><p><b>This feature helps Gentoo developers save time as they don't have to switch back and forth between Bugzilla, GitHub, and their terminal to figure out which bug reports may be closed.</b> </p> <h3><span id="How_does_it_work?"></span><span class="mw-headline" id="How_does_it_work.3F">How does it work?</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=13" class="mw-editsection-visualeditor" title="Edit section: How does it work?">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=13" title="Edit section: How does it work?">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <p>The bot can parse two types of header: </p> <pre>Bug: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/123456">https://bugs.gentoo.org/123456</a> </pre> <p>will automatically write a message in the bug report <b>without</b> closing it. </p> <pre>Closes: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/123456">https://bugs.gentoo.org/123456</a> </pre> <p>will automatically write a message in the bug report, change the status of the bug report to RESOLVED and the resolution to FIXED. </p><p>If the commit involves several bug reports, they can be mentioned and stack the links. The bot will write a message in each bug report: </p> <pre>Bug: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/123456">https://bugs.gentoo.org/123456</a> Bug: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/456789">https://bugs.gentoo.org/456789</a> Bug: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/101010">https://bugs.gentoo.org/101010</a> </pre> <p>It also works with the <code>Closes:</code> header: </p> <pre>Closes: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/123456">https://bugs.gentoo.org/123456</a> Closes: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/456789">https://bugs.gentoo.org/456789</a> Closes: <a rel="nofollow" class="external free" href="https://bugs.gentoo.org/101010">https://bugs.gentoo.org/101010</a> </pre> <p>Feel free to add as much information as possible: upstream forums, mailing lists, discussions, links to changelogs, etc. The bot won't post messages all over the place though, but these useful information will appear in the ChangeLog file of the ebuild. </p> <h2><span class="mw-headline" id="QA_checks">QA checks</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=14" class="mw-editsection-visualeditor" title="Edit section: QA checks">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=14" title="Edit section: QA checks">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <h3><span id="gentoo-repo-qa-bot_is_engaging_in_a_conversation_with_me_in_the_PR._I_don&#39;t_understand."></span><span class="mw-headline" id="gentoo-repo-qa-bot_is_engaging_in_a_conversation_with_me_in_the_PR._I_don.27t_understand.">gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don't understand.</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=15" class="mw-editsection-visualeditor" title="Edit section: gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don&#039;t understand.">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=15" title="Edit section: gentoo-repo-qa-bot is engaging in a conversation with me in the PR. I don&#039;t understand.">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <div class="thumb tright"><div class="thumbinner" style="width:277px;"><a href="/wiki/File:Gentoo-repo-qa-bot_All_checks_have_failed.png" class="image"><img alt="" src="/images/1/10/Gentoo-repo-qa-bot_All_checks_have_failed.png" decoding="async" width="275" height="90" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Gentoo-repo-qa-bot_All_checks_have_failed.png" class="internal" title="Enlarge"></a></div>Checks have failed for this pull request</div></div></div> <p>We have set up an automated CI system which performs various QA checks when a PR is filed. These checks may result in two possible outcomes displayed next to your PR: </p> <ul class="fa-ul"> <li>a green check-mark meaning everything's fine and your PR isn't offending the tree.</li> <li>a red cross meaning something is up and your PR needs fixing.</li> </ul> <p>Our QA bot is chatty when a red cross shows up. At this point, it might point out two types of error: </p> <blockquote> <p>Issues persisted from underlying repository state: </p> </blockquote> <p>This error means that unfortunately, you forked the tree whilst it was in a very unstable state (meaning broken). Indeed, every now and then developers break the tree and, tough luck, it turns out you forked the tree into your GitHub profile or synced it up at this very moment. But no big deal as there's nothing for you to do. </p> <blockquote> <p>New issues: </p> </blockquote> <p>This error is a bit more serious and means your PR isn't complying with our QA standards. Usually, one or more link(s) are displayed right below for you to visualize in a browser what it's all about. Go ahead, take a look and fix those errors. Push again and wait for the bot to go over your PR again (every 30 minutes) until a green check-mark appears. </p> <h2><span class="mw-headline" id="Troubleshooting">Troubleshooting</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=16" class="mw-editsection-visualeditor" title="Edit section: Troubleshooting">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=16" title="Edit section: Troubleshooting">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <h3><span class="mw-headline" id="Possible_issues_with_signing">Possible issues with signing</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=17" class="mw-editsection-visualeditor" title="Edit section: Possible issues with signing">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=17" title="Edit section: Possible issues with signing">edit source</a><span class="mw-editsection-bracket">]</span></span></h3> <p>It's possible that a message comes up like </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>error: gpg failed to sign the data <p>fatal: failed to write commit object </p> !!! Exiting on git (shell) error code: 128</code></div></div> <p>In such a case the <var>GPG_TTY</var> environment variable is to be set. To make sure it is always set, it can be added to the <span style="font-family: monospace; font-size: 95%; color: #3c763d; font-weight: 600;">~/.bashrc</span> or to <span style="font-family: monospace; font-size: 95%; color: #3c763d; font-weight: 600;">/etc/portage/make.conf</span>: </p> <div class="box-caption"><span class="label" style="margin-right: .5em; background-color: #54487A">FILE</span> <strong><code style="border: none; background: none; color: #54487A; margin-right: .5em;">~/.bashrc</code></strong><strong></strong></div> <div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">GPG_TTY</span><span class="o">=</span><span class="k">$(</span>tty<span class="k">)</span> </pre></div> <p>Setting <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pinentry</span> to a terminal-friendly variant, like <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pinentry-ncurses</span> or <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pinentry-tty</span> might also help with this issue. </p><p>The available pinentry variants can be listed with <a href="/wiki/Eselect" title="Eselect">eselect</a>: </p> <div class="cmd-box"><div><code style="color: #4E9A06; font-weight: bold;">user <span style="color:royalblue;">$</span></code><span class="tripleclick-separator"></span><code>eselect pinentry list</code></div><pre>Available pinentry binary implementations: [1] pinentry-qt [2] pinentry-qt4 [3] pinentry-curses [4] pinentry-tty *</pre></div><p> Set the desired handler with </p><div class="cmd-box"><div><code style="color: #ef2929; font-weight: bold;">root <span style="color:royalblue;">#</span></code><span class="tripleclick-separator"></span><code>eselect pinentry set [number]</code></div></div><p> For further information about gpg, please visit to the <a href="/wiki/GnuPG" title="GnuPG">GnuPG</a> article. </p><h2><span class="mw-headline" id="See_also">See also</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=18" class="mw-editsection-visualeditor" title="Edit section: See also">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=18" title="Edit section: See also">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <ul><li><a href="/wiki/Gentoo_git_workflow" title="Gentoo git workflow">Gentoo git workflow</a> — outlines some rules and best-practices regarding the typical workflow for ebuild developers using <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">git</span>.</li> <li><a href="/wiki/Project:GitHub/Pull_requests" title="Project:GitHub/Pull requests">Project:GitHub/Pull requests</a></li> <li><a href="/wiki/Standard_git_workflow" title="Standard git workflow">Standard git workflow</a> — describing a <b>modern git workflow</b> for contributing to Gentoo, with <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pkgcheck</span> and <span style="font-family: monospace; font-size: 95%; font-weight: bold;" class="tripleclick-separator">pkgdev</span></li> <li><a href="/wiki/Submitting_ebuilds" title="Submitting ebuilds">Submitting_ebuilds</a> — explains how to submit ebuilds for inclusion in the <a href="/wiki/Ebuild_repository#The_Gentoo_ebuild_repository" title="Ebuild repository">Gentoo ebuild repository</a></li> <li><a rel="nofollow" class="external free" href="https://wiki.gentoo.org/wiki/Incus/Gentoo_Github_pullrequest_testing">https://wiki.gentoo.org/wiki/Incus/Gentoo_Github_pullrequest_testing</a></li></ul> <h2><span class="mw-headline" id="External_resources">External resources</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;veaction=edit&amp;section=19" class="mw-editsection-visualeditor" title="Edit section: External resources">edit</a><span class="mw-editsection-divider"> | </span><a href="/index.php?title=Creating_GitHub_Pull_Requests&amp;action=edit&amp;section=19" title="Edit section: External resources">edit source</a><span class="mw-editsection-bracket">]</span></span></h2> <ul><li><a href="https://www.gentoo.org/glep/glep-0063.html" class="extiw" title="gentooglep:0063">GLEP 63</a></li> <li><a href="https://www.gentoo.org/glep/glep-0066.html" class="extiw" title="gentooglep:0066">GLEP 66</a></li></ul> '
Unix timestamp of change (timestamp)
1712643862