将本地仓库批量上传至 Gitee、Github、Gitlab 平台(目前仅支持 Gitee )
工具采用 Go 编写,算是跟 Go 的第一次亲密接触了
up2GitX-{timestamp}
进行推送,不会影响现有的 Remote 配置下载对应平台的二进制包,可直接运行
以 Gitee 为例 ./up2 gitee -h
➜ up2GitX git:(master) ✗ ./up2 gitee -h
This command is used for sync local repo to Gitee
Name: gitee
Usage: ./up2 [Global Options...] gitee [--option ...] [argument ...]
Global Options:
--verbose Set error reporting level(quiet 0 - 4 debug)
--no-color Disable color when outputting message
-h, --help Display this help information
Arguments:
repoSource Tell me which repo dir or list your want to sync, is required
token Provide platform token for skip api rate limit
Examples:
Using dir: ./up2 gitee /Zoker/repos/
Dir example
$ ls -l /Zoker/repos/
drwxr-xr-x 4 zoker 128B Jun 1 19:05 git-work-repo1
drwxr-xr-x 4 zoker 128B Jun 1 19:02 taskover
drwxr-xr-x 4 zoker 128B Jun 1 19:03 blogine
drwxr-xr-x 3 zoker 96B Jun 1 12:15 git-bare-repo3
...
Using file: ./up2 gitee /Zoker/repos.list
File example
$ cat /Zoker/repos.list
/tmp/repos/git-work-repo1
/Zoker/workspace/git-work-repo2
/other/path/to/git-bare-repo3
...
Using Source: ./up2 gitee github:zoker YOUR_TOKEN_HERE(OPTIONAL)
Support import from Github source, replace {zoker} with your expected Github path
It better to provide your own access_token to avoid api rate limit, eg on Github: https://github.com/settings/tokens
Alert: Only Github source and public project supported, other platform like Gitlab, Bitbucket will be added later
这里以上传到 Gitee 为例(镜像 Github 空间到 Gitee 示例)
可以是一个包含很多 Git 仓库的目录,也可以是一个包含很多 Git 仓库绝对路径的文本文件,下面以目录为例
确认这些 Git 仓库是不是你所预期的
输入注册 Gitee 所用的邮箱以及密码,认证成功后会列出可用的 Namespace,你也可以选择新建一个组织。在 Gitee 上,它可以是个人名下、组织名下或者企业名下。(目前仅支持上传到个人和组织,后续接口功能到位会支持企业)
确认要生成的仓库链接是否符合预期,示例中有中文是为了演示错误选项的处理,如果确认无误,选择仓库的公私有属性
可以看到有一个创建成功,一个创建失败,一个已经存在同名地址
对于失败的,会提示我们选择是否跳过或者退出修复错误,这里我们选择跳过
紧接着会提示对于已经存在的项目该怎么处理,你可以选择跳过,也可以选择本地强制覆盖远端,这里我们选择强制覆盖
同步代码完成后会给出每一个代码仓的具体同步状态
这个时候我们前往 Gitee 查看动态
可以看到本地的分支已经推送到 Gitee 平台,这里的同步是会同步所有的本地分支和标签,图中的强制推送就是我们刚刚选择了覆盖,所以工具会强制用本地的代码覆盖远端 Gitee 的代码,所以请想清楚,再做选择。
项目使用go
开发,拉取代码执行go build up2.go
即可
需要注意的是要修改对应的 OAuth 客户端的id
和key
,以 Gitee 平台为例:
修改 gitee.go
文件中的 askForAccount
的 Client 信息
params := fmt.Sprintf(`{
"grant_type": "password",
"username": "%s",
"password": "%s",
"client_id": "xxxx", // client id from Gitee
"client_secret": "xxxx", // client secret from Gitee
"scope": "user_info projects groups enterprises"
}`, email, password)
通过对 Client 的信息的改动可以支持 Gitee 公有云以及大部分的 Gitee 私有云客户。
欢迎提交 Github 以及 Gitlab 的上传支持!
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. Open source ecosystem
2. Collaboration, People, Software
3. Evaluation model