1. 一步一步的贡献
备注
虽然使用qgis文档来演示该过程,但下面显示的所有命令和步骤也适用于qgis-WebSite。
如果您正在阅读这些行,肯定是因为您愿意为编写QGIS文档做出贡献,并且正在寻找操作指南。你来对地方了!目前的文档将指导您通过不同的方法来实现这一目标,向您展示要遵循的主要步骤,您可以使用的技巧和您应该知道的陷阱。
如需任何帮助,请毫不犹豫地要求对您试图修复的问题报告发表评论,或写信给 QGIS-community-team list 。更多详细信息请访问 Get involved in documentation 。
现在让我们深入了解这一过程。
文档源使用Git版本控制系统存储,并可在GitHub上获得,网址为https://github.com/qgis/QGIS-Documentation.要修复的问题和要解释的功能的列表可在https://github.com/qgis/QGIS-Documentation/issues.上找到
小技巧
如果您是第一次投稿,并且不知道从哪里开始,您可能会有兴趣处理我们的 welcoming issue reports 。
修改文件有两种不相互排斥的主要方法:
1.1. 使用GitHub Web界面
GitHub Web界面允许您执行以下操作:
编辑文件
预览并提交您的更改
发出拉入请求,将您的更改插入到主存储库中
创建、更新或删除分支
如果您还不熟悉Git和GitHub词汇,您可能需要阅读GitHub Hello-world 学习下面将用到的一些基本词汇和动作的项目。
1.1.1. Fork QGIS-文档
假设您已经有一个 GitHub account ,您首先需要分叉文档的源文件。
导航到 QGIS-Documentation repository 页面,并单击 按钮在右上角。
在您的GitHub帐户中,您将找到QGIS文档资料档案库 (https://github.com/<YourName>/QGIS-Documentation
)。此存储库是官方QGIS文档存储库的副本,您可以在其中进行完全写入访问,并且可以在不影响官方文档的情况下进行更改。
1.1.2. 做出改变
有几种不同的方式可以为QGIS文档提供帮助。我们在下面单独显示它们,但您可以从一个进程切换到另一个进程,而不会造成任何损害。
备选方案1:使用 Edit on GitHub
捷径
QGIS文档网站上的页面可以通过单击 Edit on GitHub
链接位于每页的右上角。
这将在中打开文件
qgis:master
分支,并在页面顶部显示一条消息,告诉您对此repo没有写访问权限,并且您的更改将应用于存储库的新分支。做您的更改。由于该文档是使用reStrutireText语法编写的,因此根据您的更改,您可能需要依赖 writing guidelines 。
When you finish, make a short comment about your changes and click on Propose changes. This will generate a new branch (
patch-xxx
) in your repository.在您点击之后 Propose changes ,GitHub将导航到 Comparing changes 佩奇。
如果您已完成更改,请跳至 Compare changes 在 Share your changes via Pull Request 下面的部分。
如果在将更改提交到QGIS之前需要进行其他更改,请执行以下步骤:
导航到您的QGIS-Documentation分支 (
https://github.com/<YourName>/QGIS-Documentation
)跳到 Modify files 下面。
备注
这个 Edit on GitHub
快捷方式也可以在左边栏底部的下拉菜单中找到。
备选方案2:在您的文档存储库中创建一个临时分支
您可以直接从QGIS文档的分支编辑文件。
首先,确保您的 master
分支机构是最新的 qgis:master
布兰奇。要执行此操作,请执行以下操作:
转到存储库的主页,即
https://github.com/<YourName>/QGIS-Documentation
。这个master
分支机构应处于活动状态,并说明其是否为最新版本qgis/QGIS-Documentation:master
或者不去。如果它在上游分支之前提交,您最好使用上一个 shortcut button alternative 直到您将您的
master
布兰奇。如果它后面只有承诺:
扩展 Fetch Upstream 右侧的下拉菜单。你可以的
Compare 分支,并查看主存储库中的新更改
Fetch and merge :将更改从上游分支转移到您的分支。
让我们点击 Fetch and merge :在此过程之后,您的分支机构被提及为最新的
qgis/QGIS-Documentation:master
。
点击 在分叉的QGIS-Documentation存储库的左上角,并在文本字段中输入唯一名称以创建新的 branch 。新分支的名称应该与您要修复的问题相关。这个 按钮现在应该说 Branch: branch_name
你已经准备好在上面开始新的改变了。
注意
Do your changes in an ad hoc branch, never in the master
branch
按照惯例,避免在您的 master
分支中的修改合并时除外 master
分支机构 qgis/QGIS-Documentation
到您的QGIS文档库的副本中。单独的分支允许您同时处理多个问题,而不会干扰其他分支。如果您犯了错误,您总是可以删除一个分支,然后通过从主分支创建一个新分支来重新开始。
1.1.3. 修改文件
浏览QGIS-Documentation分支的源文件,找到需要修改的文件
按照以下说明进行修改 writing guidelines
完成后,导航到 Commit Changes 框在页面底部,对您的更改做简短的评论,然后点击 Commit Changes 将更改直接提交到您的分支。确保 Commit directly to the branch_name branch. 处于选中状态。
对需要更新以解决该问题的任何其他文件重复上述步骤
1.1.5. 删除合并后的分支机构
您可以在合并更改后删除分支。删除旧分支可以避免存储库中有未使用和过时的分支。
1.2. 使用Git命令行工具
GitHub Web界面是使用您的贡献更新QGIS文档存储库的一种简单方法,但它不提供以下工具:
对提交进行分组并清除更改历史记录
修复与主回购可能发生的冲突
构建文档以测试您的更改
你需要 install git 以便访问更先进和功能更强大的工具,并拥有存储库的本地副本。下面是你可能经常需要的一些基本知识。即使您选择Web界面,您也会发现需要注意的规则。
在下面的代码示例中,以 $
显示您应该在以下时间键入的命令 #
都是评论。
1.2.1. 本地存储库
现在,您已经准备好获取本地克隆 your QGIS-文档库。
您可以使用Web URL克隆您的QGIS存储库,如下所示:
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone https://github.com/<YourName>/QGIS-Documentation.git
前面的命令行只是一个例子。您应该同时调整路径和存储库URL,替换 <YourName>
使用您的GitHub用户名。
检查以下各项:
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
origin 是您的QGIS文档存储库的远程存储库的名称。
master 是默认的主分支。你永远不应该用它来做贡献! Never!
或者,您可以使用SSH协议克隆您的QGIS存储库:
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone git@github.com:<YourName>/QGIS-Documentation.git
如果您使用SSH协议,请检查以下各项:
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin git@github.com:<YourName>/QGIS-Documentation.git (fetch)
origin git@github.com:<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
您可以开始在这里工作,但在长期流程中,当您推送您的贡献(在GitHub流程中称为Pull请求)时,您会遇到很多问题,因为QGIS/QGIS-文档库的主分支将与您的本地/远程存储库不同。然后,您需要跟踪主远程存储库并使用分支。
1.2.2. 添加另一个远程存储库
为了能够跟踪主项目中的工作,请在本地存储库中添加一个新的远程存储库。这个新的远程存储库是QGIS项目中的QGIS文档存储库:
$ git remote add upstream https://github.com/qgis/QGIS-Documentation.git
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
upstream https://github.com/qgis/QGIS-Documentation.git (fetch)
upstream https://github.com/qgis/QGIS-Documentation.git (push)
同样,您可以使用SSH协议在本地存储库中添加远程存储库:
$ git remote add upstream git@github.com:qgis/QGIS-Documentation.git
$ git remote -v
origin git@github.com:<YourName>/QGIS-Documentation.git (fetch)
origin git@github.com:<YourName>/QGIS-Documentation.git (push)
upstream git@github.com:qgis/QGIS-Documentation.git (fetch)
upstream git@github.com:qgis/QGIS-Documentation.git (push)
因此,现在您可以在两个远程存储库之间进行选择:
origin 要将您当地的分支机构推向 your 远程存储库
upstream 将您的贡献合并(如果您有权这样做),或从官方存储库的主分支更新本地存储库的主分支。
备注
upstream 只是一个标签,一种标准的名字,但你可以随心所欲地叫它。
1.2.3. 更新您的基本分支
在使用新的贡献包之前,您应该始终更新本地存储库中的主分支。假设您愿意推动对测试文档的更改,请运行以下命令行:
# switch to master branch (it is easy to forget this step!)
$ git checkout master
# get "information" from the master branch in the upstream repository
# (aka qgis/QGIS-Documentation's repository)
$ git fetch upstream master
# merge update from upstream/master to the current local branch
# (which should be master, see step 1)
$ git merge upstream/master
# update **your** remote repository (aka <YourName>/QGIS-Documentation)
$ git push origin master
现在,您的本地和远程存储库都有自己的 master
分支机构与官方最新消息 master
QGIS的分支--文档。你可以开始做你的贡献了。
备注
如果您希望对已发布的文档做出贡献,请切换分支
与测试文档一起,我们将继续修复 latest release ,这意味着你也可以为它做贡献。遵循上一节的样例代码,替换 master
与相应分部的最新文件。
1.2.4. 为您的生产部门做出贡献
现在您的基本分支已经更新,您需要创建一个专用分支,在其中添加您的贡献。始终在基本分支之外的分支上工作!一直都是!
# Create a new branch
$ git checkout -b myNewBranch
# checkout means go to the branch
# and -b flag creates a new branch if needed, based on current branch
# Let's check the list of existing branches (* indicates the current branch)
$ git branch
master
release_2.18
...
* myNewBranch
# You can now add your contribution, by editing the concerned file(s)
# with any application (in this case, vim is used)
$ vim myFile
# once done
$ git add myFile
$ git commit
以下是关于提交/推送命令的几句话:
尝试只做出一项贡献(原子变化),即只解决一个问题
尝试仔细解释您在提交的标题和描述中所做的更改。第一行是标题,应以大写字母开头,长度为80个字符,不能以
.
. Be concise. Your description can be longer, end with a.
你可以给出更多的细节。使用
#
用一个数字来表示一个问题。前缀为Fix
如果你修复了罚单:你的承诺将关闭罚单。
现在您的更改已保存并提交到您的本地分支,您需要将它们发送到您的远程存储库以创建拉入请求:
$ git push origin myNewBranch
1.2.6. 清理本地和远程存储库
在您的公关被合并到QGIS官方文档后,您可以删除您的分支。如果你以这种方式大量工作,几周内你就会得到很多无用的分支。因此,通过以下方式保持您的存储库清洁:
# delete local branch
$ git branch -d myNewBranch
# Remove your remote myNewBranch by pushing nothing to it
$ git push origin :myNewBranch
并且不要忘记更新 master
分支机构在您的本地存储库中!
1.3. 进一步阅读
除了上面介绍的Github Web界面和Git命令行工具之外,还有 GUI applications 您可以使用创建和管理您对文档的贡献。
当拉入请求中的更改与推送到目标分支的最新更改冲突时,需要先解决冲突,然后才能进行合并:
如果冲突与较少的竞争线路有关,则 Resolve conflicts 按钮在GitHub拉取请求页面中可用。按按钮并按照中的说明解决问题 Resolving a merge conflict on GitHub
如果冲突涉及文件重命名或删除,则需要使用git命令行来解决冲突。通常,您必须首先使用以下命令将分支重新定位到目标分支上
git rebase targetBranch
呼叫并修复报告的冲突。有关更多信息,请访问 Resolving a merge conflict using the command line
有时,在校对过程结束时,您可能会将更改分成多个提交,这不一定值得。Git命令行可帮助您将这些提交压缩为数量更少、更有意义的提交消息。有关详细信息,请访问 Using git rebase on the command line