在新分支上为GitHub上的存储库做贡献

时间:2014-08-11 13:17:18

标签: python git python-3.x github

假设有人拥有的存储库只有一个与master兼容的Python 2.7.X主机代码。我想通过对新分支new_branch的更改来为该存储库做出贡献,以提供与Python 3兼容的存储库变体。

我按照here

步骤进行了操作
  1. 我在我帐户的GitHub上分发了存储库
  2. 我在我的本地机器上克隆了我的叉子
  3. 我在本地创建了一个新的分支new_branch
  4. 我做了相关更改
  5. 我承诺并将更改推送到我自己的GitHub上的分支
  6. 我在浏览器上访问官方存储库的GitHub页面,并要求提取请求
  7. 以上工作它执行了从"my_account:new_branch""official_account:master"的拉取请求。这不是我想要的,因为Python 2.7.xPython 3彼此不兼容。我想要做的是在官方存储库中为新分支创建一个PR(例如,使用相同的名称"new_branch")。我怎样才能做到这一点?这有可能吗?

1 个答案:

答案 0 :(得分:2)

你真的不想这样做。但首先我会解释如何做,然后我会回来解释为什么不这样做。

GitHub上的

Using Pull Requests有一个非常好的概述,特别是“更改分支范围和目标存储库”一节。如果您使用主题分支,并且让上游所有者创建同名的主题分支,这是最简单的;然后你只需在菜单中下拉“base:master”,然后选择就在那里,他只需点击“合并”按钮即可,不会有任何意外。

那么,你为什么不想这样做呢?

首先,它不适合GitHub模型。主题分支与主分支并行生存,并且具有多个分支,这使得维护和可视化更加困难。

其次,您需要git URL和https URL代码。您需要人们能够从树顶部共享链接pip install,只需克隆存储库而不是克隆,然后检出不同的分支等。这意味着您的代码必须位于主分支上。

第三,如果您希望人们能够在PyPI上安装3.x版本,在readthedocs等处找到文档,则需要一个包含单个源树的项目。大多数此类网站都有一个最新版本,而不是每个Python版本的最新版本,绝对不是同一版本的多个版本。 (你可以完全安装fork项目,并创建一个单独的foo3项目。但是人们能够pip install foo比让他们尝试更容易,失败,来到SO并问为什么它不起作用,并告诉他们可能有Python 3而需要pip install foo3代替。)

如何将两个版本合并到一个包中? porting docs应该提供最新的建议,但是简单地说:如果可以创建在两个版本上运行的单个代码库,那么这是理想的;如果没有,并且如果您无法通过在安装时运行2to33to2来使工作正常,请为3.x代码创建并行目录(例如,foo3旁边的foo {1}})并在安装时选择适当的目录。 (你总是可以从那开始,逐步向统一的代码库努力。)