【问题标题】:How to find out actually Size of all Github repositories of an organistation如何找出组织的所有 Github 存储库的实际大小
【发布时间】:2017-11-11 16:48:55
【问题描述】:

我们正在将我们的 Github 存储库移动到带有 GitLab-Server 的本地服务器。我们将使用 Jenkins-Server 进行构建。

在此之前,我们想知道两台机器上的硬盘驱动器必须有多大。

-> GitServer 将需要用于存储库的磁盘空间
-> Jenkins-Server 将需要用于存储库的磁盘空间 + 用于构建的空间

为此:有没有办法找出我们所有存储库共有多少磁盘空间——不仅是实际文件大小,而且是整个 git 存储库的大小?

我阅读了有关 API 的信息。 但是做

curl -i -u <myUserName>  https://api.github.com/orgs/<organisationName>

我实际上可以接收元数据,但它似乎没有提供有关实际使用的磁盘空间的任何信息:

HTTP/1.1 200 OK
Server: GitHub.com
Date: Fri, 09 Jun 2017 15:09:07 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1463
Status: 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4980
X-RateLimit-Reset: 1497022865
Cache-Control: private, max-age=60, s-maxage=60
Vary: Accept, Authorization, Cookie, X-GitHub-OTP
ETag: "62fadd06b840f42f8bf9cb69450b9d1b"
Last-Modified: Tue, 30 May 2017 12:33:36 GMT
X-GitHub-Media-Type: github.v3; format=json
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
Access-Control-Allow-Origin: *
Content-Security-Policy: default-src 'none'
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
X-Runtime-rack: 0.068430
X-GitHub-Request-Id: XXXX:XXXX:XXXXXXX:XXXXXXX:XXXXXXX

{
  "login": "XXXXXXXX",
  "id": XXXXXXXXX,
  "url": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "repos_url": "https://api.github.com/orgs/XXXXXXX/repos",
  "events_url": "https://api.github.com/orgs/XXXXXX/events",
  "hooks_url": "https://api.github.com/orgs/XXXXXX/hooks",
  "issues_url": "https://api.github.com/orgs/XXXXXX/issues",
  "members_url": "https://api.github.com/orgs/XXXXXX/members{/member}",
  "public_members_url": "https://api.github.com/orgs/XXXXXX/public_members{/member}",
  "avatar_url": "https://avatars1.githubusercontent.com/XXXXXX",
  "description": "XXXXXX",
  "name": "XXXXXX",
  "company": null,
  "blog": "XXXXXX",
  "location": "XXXXXX",
  "email": "XXXXXXXXXXXXXXXXXXXX",
  "has_organization_projects": true,
  "has_repository_projects": true,
  "public_repos": 0,
  "public_gists": 0,
  "followers": 0,
  "following": 0,
  "html_url": "https://github.com/XXXXXXXXXXXXXX",
  "created_at": "2016-09-14T11:30:47Z",
  "updated_at": "2017-05-30T12:33:36Z",
  "type": "Organization",
  "total_private_repos": 62,
  "owned_private_repos": 62,
  "private_gists": null,
  "disk_usage": null,
  "collaborators": null,
  "billing_email": null,
  "plan": {
    "name": "team",
    "space": 976562499,
    "private_repos": 99999,
    "filled_seats": 15,
    "seats": 15
  },
  "default_repository_permission": null,
  "members_can_create_repositories": true
}

有一个标签space,但它似乎只是可用的最大空间而不是使用的。还有另一个标签disk_usage,但它是null

【问题讨论】:

    标签: git github repository github-api


    【解决方案1】:

    也许git clone --bare他们都检查磁盘大小?

    【讨论】:

    • 首先谢谢!我不知道--bare 选项。无论如何,你可以看到它是 62 个 repos .. 我希望有一种简单的方法,没有或至少在一个一个克隆它们之前......你知道一种复制它们的方法(可能通过脚本)吗?
    • 是的,我想说你应该写一个脚本。
    • --bare 支持 gitlfs 吗?抱歉,之前没提过
    • 我相信它只会作用于指针文件,而不是真正的文件——听起来你可能需要变得更复杂一些。
    • 是的,我今天必须检查一下......昨天我已经能够在没有 --bare 支持 gitlfs 的情况下克隆所有 repos。问题可能是,在我们的自托管 gitlab 上,我们当然不再需要 gitlfs,因为我们可以上传任何我们想要的东西。无论如何:谢谢你的帮助!
    【解决方案2】:

    我最终使用解决了它

    git lfs clone --mirror RepoURL localRepoFolder
    cd localRepoFolder
    git-lfs fetch --all
    du -s
    #cleanup
    cd ..
    rm -rf localRepoFolder
    

    循环中的每个存储库并总结所有大小

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 2020-10-24
      • 2022-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多