Manual:Pywikibot/Gerrit
用語
- Git - バージョン管理システム。SVNの後継。
- Gerrit - コード・レビュー・プラットフォーム (https://gerrit.wikimedia.org)。 Special:CodeReviewの後継。
- core - 有効な (マスター) ブランチ、旧称は"rewrite"。
利用者向け
Git クライアント
- Windows ユーザー: 私たちは TortoiseGit を Git for Windowsと共に使用することをお勧めします。 まずは[1]ことをお奨めます。
- 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
更新するには:
# 既に"core"に入っていると仮定すると
$ git pull origin stable
$ git submodule update # Updates i18n messages
もし手間を省いて、すべてを一括して実行したいなら、こういう方法があります:
# 既に"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 2024, it is no longer possible to use SVN to download Pywikibot. We suggest to use pip to install and update Pywikibot instead.
URL
クライアントからリポジトリのURLを問い合わせてくるかもしれません。
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
- ご使用の Pywikibot のセットアップにさらなるヘルプが必要な場合は、IRC チャンネル #pywikibot 接続 または pywikibot@ メーリング リストにお問い合わせください。
開発者向け
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 チュートリアル 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
- 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: ....'. 詳細情報は Gerrit/コミット メッセージの指針 を参照してください。
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.