10 Star 44 Fork 10

Zoker/up2GitX

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README
MIT

up2GitX - 方便快捷的批量 Git 托管工具

将本地仓库批量上传至 Gitee、Github、Gitlab 平台(目前仅支持 Gitee )

工具采用 Go 编写,算是跟 Go 的第一次亲密接触了

功能特点

  • [简单] 可自动在对应平台创建同名仓库并上传
  • [可靠] 可选择是否本地覆盖远程(如果同名仓库在远端已存在)
  • [方便] 可选择上传到 Gitee 组织或者新建组织上传
  • [灵活] 可通过多种方式导入仓库源(目录、文本列表、Github 源)
  • [快速] 并发5个同时操作(各平台均有限制,5个并发可保证成功率及速度)

注意事项

  • 工具会自动生成临时的一个 Remote up2GitX-{timestamp} 进行推送,不会影响现有的 Remote 配置
  • 工具会调用OAuth授权进行仓库的创建,后续可以在第三方应用管理取消授权
  • 工具在进行处理的过程中会对特殊情况进行交互,请仔细阅读并慎重选择
  • Github 的镜像操作会生成临时目录来存储这些临时的裸仓库,同步完成后,自行删除即可

设计流程

输入图片说明

使用简介

下载对应平台的二进制包,可直接运行

以 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 示例

1、指定 RepoSource

可以是一个包含很多 Git 仓库的目录,也可以是一个包含很多 Git 仓库绝对路径的文本文件,下面以目录为例

输入图片说明

确认这些 Git 仓库是不是你所预期的

2、输入 Gitee 账号信息并选择同步到哪个 Namespace

输入图片说明

输入注册 Gitee 所用的邮箱以及密码,认证成功后会列出可用的 Namespace,你也可以选择新建一个组织。在 Gitee 上,它可以是个人名下、组织名下或者企业名下。(目前仅支持上传到个人和组织,后续接口功能到位会支持企业)

3、确认将要生成的仓库链接并选择公开属性

输入图片说明

确认要生成的仓库链接是否符合预期,示例中有中文是为了演示错误选项的处理,如果确认无误,选择仓库的公私有属性

4、在 Gitee 上创建仓库并展示结果

输入图片说明

可以看到有一个创建成功,一个创建失败,一个已经存在同名地址

对于失败的,会提示我们选择是否跳过或者退出修复错误,这里我们选择跳过

输入图片说明

紧接着会提示对于已经存在的项目该怎么处理,你可以选择跳过,也可以选择本地强制覆盖远端,这里我们选择强制覆盖

5、同步代码到 Gitee

输入图片说明

同步代码完成后会给出每一个代码仓的具体同步状态

这个时候我们前往 Gitee 查看动态

输入图片说明

可以看到本地的分支已经推送到 Gitee 平台,这里的同步是会同步所有的本地分支和标签,图中的强制推送就是我们刚刚选择了覆盖,所以工具会强制用本地的代码覆盖远端 Gitee 的代码,所以请想清楚,再做选择。

构建

项目使用go开发,拉取代码执行go build up2.go即可

需要注意的是要修改对应的 OAuth 客户端的idkey,以 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 私有云客户。

感谢

  • gCli Go 的命令行工具库

贡献代码

欢迎提交 Github 以及 Gitlab 的上传支持!

  1. Fork 仓库
  2. 创建本地分支 (git checkout -b my-new-feature)
  3. 提交更改 (git commit -am 'Add some feature')
  4. 推送到分支 (git push origin my-new-feature)
  5. 创建一个 Pull Request

贡献者

@Zoker

MIT License Copyright (c) 2020 Zoker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

方便快捷的批量 Git 托管工具,将本地仓库批量上传至 Gitee、Github、Gitlab 平台(目前仅支持 Gitee ) expand collapse
Go
MIT
Cancel

Contributors

All

Activities

Load More
can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/kesin/up2GitX.git
git@gitee.com:kesin/up2GitX.git
kesin
up2GitX
up2GitX
master

Search