命令行批量建立 github 库

一个需求:如何批量建立 Github 帐号下的库。

Github 库通常的建立方式是通过网页,其次是通过 Github 客户端 Publish。

但这两种方式都无法批量建立库,每新建一个库都需要用户重复操作一遍。

 

查了一下,还真有这样的办法。Github 提供了 Restful API 来帮助企业管理代码库。不光是批量建立,还包括添加删除用户组等等,非常完善。就建库这一需求,Github 提供了这样的一个 API:

https://developer.github.com/v3/repos/

第5节就讲的是如何 Create 一个库,提供了非常详尽的设置参数:

Name Type Description
name string Required. The name of the repository
description string A short description of the repository
homepage string A URL with more information about the repository
private boolean Either true to create a private repository, or false to create a public one. Creating private repositories requires a paid GitHub account. Default: false
has_issues boolean Either true to enable issues for this repository, false to disable them. Default: true
has_wiki boolean Either true to enable the wiki for this repository, false to disable it. Default: true
has_downloads boolean Either true to enable downloads for this repository, falseto disable them. Default: true
team_id integer The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
auto_init boolean Pass true to create an initial commit with empty README. Default: false
gitignore_template string Desired language or platform .gitignore template to apply. Use the name of the template without the extension. For example, “Haskell”.
license_template string Desired LICENSE template to apply. Use the name of the template without the extension. For example, “mit” or “mozilla”.

当然其中大部分参数可以忽略,理论上只有库名是必须的。

所以使用以下命令就可以在不登录网站或者客户端的前提下建立一个库,通过 Sublime Text 等多行文本编辑软件(甚至通过 Excel)编辑一个多行批处理文件,然后运行即可:

库名重复时,Github 会自动报错,并不影响批处理继续执行。

Github wiki 链接规则

Github 为每个代码库提供了一个附带的 wiki。这个 wiki 其实也是个独立的代码库,可以用 git 进行管理,还是挺方便的。不过 Github wiki 在文件结构上有特殊的设计,一开始会觉得有点摸不着头脑。于是就花了点时间做了个实验,得到以下规则:

Github wiki 规则:文件链接

  • 每个 Github wiki 文档至少需要一个标题,否则跳转链接会自动转到 raw.github.com 上去。用若干个 # 来标注一个标题。
  • Github wiki 会把该库里所有的 .md 文件都提到同一个虚拟的 /wiki 目录里。所以无论你目录结构如何复杂,在引用其它 .md 文件时,只需要直接链接到文件名即可。不过这样在使用 Mou 写作预览时可能反而不方便了,所以最简单的办法是把所有 .md 文件都放在根目录里。
  • 仅 .md 如此特殊处理(也许还有其它 Markup 文件),对于图片等其它附件,均保持自己相对路径。
  • 尽管如此,home.md 却属特例。它在虚拟的 /wiki 目录的上一层。所以由它引用到别的文件,均需要加上 /wiki

Github wiki 规则:锚点

  • 任意用 1-6 个 # 标注的标题会自动被添加上同名锚点。在链接中写入锚点即可跳转,比如:  [显示文本](wiki/sample#anchor) 对应 sample.md 内的某个标题: ### Anchor
  • 锚点中英文皆可,使用中文(或其它文字)会自动 Encode 和 Decode。但只有英文(可能有其它语言)可以大小写通用。
  • 由于 .md 本身写链接的限制,多单词锚点的空格用-代替。比如#regist-github对应###Regist GitHub
  • 即使页内锚点,也必须写上文件名,如果不写,锚点链接会自动添加 “wiki-” 前缀,比如: [显示文本](#anchor) 对应的是 #wiki-anchor。
  • 如上,如果对应的标题名真的就是 wiki-Anchor,那么锚点也还是能正常工作的。

Github wiki 官方说明:https://github.com/features/projects/wikis