手册:Pywikibot/Gerrit
![]() |
手册:Pywikibot |
---|
|
术语
- Git - 版本控制系统。取代SVN。
- Gerrit - 一个代码审查平台(https://gerrit.wikimedia.org)。 取代Special:CodeReview
- core - 实际(主)分支,以前称为“重写”。
对于用户
Git客户端
Windows用户:我们建议您使用TortoiseGit和Git for Windows。 建议先安装TortoiseGit
macOS / Linux:命令行git
- https://git-scm.com/ or brew install git(Homebrew, macOS)
例如,通过命令行下载核心包:
$ git clone --recursive --branch stable https://gerrit.wikimedia.org/r/pywikibot/core.git
更新:
# Assuming you're already in "core":
$ git pull origin stable
$ git submodule update # Updates i18n messages
如果你很懒,希望能够一次性做到这一点,你可以这样做:
# Assuming you're already in "core":
$ git pull origin stable --recurse-submodules # This updates everything
Note that the repositories are somewhat large (>100MB). If this is an issue, use
$ git clone --recursive --branch stable --depth 3 https://gerrit.wikimedia.org/r/pywikibot/core.git
to just retrieve the latest versions.
使用SVN
As of January 2023, it is still possible to use SVN to download Pywikibot. To do so, follow the instructions on Manual:Pywikibot/Installation/SVN.
Note however, that this will no longer work from January 2024. We suggest to use pip to install and update Pywikibot instead.
链接
您的客户端可能会要求您提供存储库URL。
网址遵循以下格式:
https://gerrit.wikimedia.org/r/pywikibot/[repo name]
.
So for core:
https://gerrit.wikimedia.org/r/pywikibot/core
.
Nightly distributions
You can download the whole packages or browse the source code via download page in Toolforge
- If you need more help on setting up your Pywikibot visit the #pywikibot IRC channel connect or pywikibot@ mailing list.
对于开发者
How to submit patches...configure git/gerrit. etc.
Read the guidelines, then follow steps in Gerrit/Getting started and run this:
#for hacking core
$ git clone --recursive ssh://USERNAME@gerrit.wikimedia.org:29418/pywikibot/core.git
and after modifying codes follow steps in Gerrit/教程
- Windows
- Developer using Windows may also use Gerrit/TortoiseGit tutorial for further informations.
Example (step-by-step)
Do the following, step-by-step:
- if not done already for svn access; create an SSH key, a developer account and add your public key to gerrit as well as to wikitech
- install 'git' package
- install 'git-review' package
- clone and setup your repository:
- clone the git repository with all submodules by using (like
svn checkout
)and wait, this step will take some time$ git clone --recursive ssh://USERNAME@gerrit.wikimedia.org:29418/pywikibot/core.git pywikibot-git
- clone the git repository with all submodules by using (like
- enter the directory
$ cd pywikibot-git
- config git setting for this repository/directory only (not global, in case e.g. you have different pseudo for multiple projects) and
$ git config user.email "EMAIL"
in order to configure this globally, use the$ git config user.name "USERNAME"
--global
parameter
- config git setting for this repository/directory only (not global, in case e.g. you have different pseudo for multiple projects)
- config your terminal/console to output english messages (in order to work properly with git review, see Gerrit/git-review#Troubleshooting)
$ alias git="LANG=C git"
this has to be done every time a new console is started, in order to configure this permanently, put this into your bashrc
or similar setup file
- setup git review for this repository only
$ git review -s
and enter your USERNAME
again, this is an important step - if you forget it, according to Gerrit/Tutorial#Push your change set to Gerrit, the final git review
below (needed to commit your changes for review) will fail - though this can be still solved then
- work with the repository, e.g. commit patches for review:
- switch to the master branch (might not be needed)
$ git checkout master
- update the current branch to revision online (like
svn update
)
- update the current branch to revision online (like
$ git pull
- create your own local temporary branch for working
$ git checkout -b MEANINGFUL_BRANCH_NAME
and try to choose aMEANINGFUL_BRANCH_NAME
with the help of the branch naming tips available – the branch can be removed when not needed anymore with$ git branch -D MEANINGFUL_BRANCH_NAME
- create your own local temporary branch for working
- now write some code; see the Git commands add, rm and mv to add, remove or rename files - when you're ready go to the next step
- commit your changes to your local temporary branch with (you can use
$ git commit --all
-a
instead of--all
and-R
instead of--no-rebase
) and, as used from svn, enter a meaningful commit message, e.g. a short description of your code changes
- commit your changes to your local temporary branch with
- See Gerrit/提交消息指引 .
- optionally check your changes by looking at the committed data and make sure that you are sending what you wanted to
$ git show HEAD
- optionally check your changes by looking at the committed data
- send the data to the online repository, resp. gerrit for review (like
svn commit
)$ git review
- send the data to the online repository, resp. gerrit for review (like
- finally go to Gerrit, click on your change and write a reviewer name in the input box near the "Add Reviewer" button
- optionally/opt-in further settings:
- enable RCS keywords expansion (like svn:keywords
$Id$
) by using git hooks (explained in detail here - german only)
- enable RCS keywords expansion (like svn:keywords
- for core:
$ git config filter.rcs-keywords.smudge 'rcs-keywords.py %f'
$ git config filter.rcs-keywords.clean 'rcs-keywords.py'
- (may be we should consider using the git-rcs-keywords module as mentioned in dealing-with-svn-keyword-expansion-with-git-svn)
- for core:
Phabricator
Patches will be linked to a Phabricator task automatically if you mention 'Bug: T12345' in a line just before 'Change-Id: ....'. See Gerrit/提交消息指引 for more information.
Problems, issues and work-a-rounds
jenkins-bot messages
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-flake8/2591/console : FAILURE in ?s (non-voting)
The patchset committed did not pass flake8 code style checks. That says nothing about the functionality of the code but about the syntax and style.
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-flake8-docstrings-mandatory/560/console : FAILURE in ?s (non-voting)
The patchset committed did not pass mandatory pep257 code style checks. That says nothing about the functionality of the code but about the inline documentation.
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-nose/1448/console : FAILURE in ?s (non-voting)
The patchset committed did not pass pre-merge test suite. That indicates the code fails the basic tests, but a pass says nothing about the functionality of the modified code. There is a more extensive set of tests which developers should run pre-submission, and will run post merge.
This change could not be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.
The pachset cannot be merged automatically into current HEAD. Please consider Build failed due to merge conflict for a solution.
More info about this can be found in Gerrit/Tutorial#How to submit a patch and git review complains about multiple commits.