我有一个很大的(几个GB)Git存储库。我希望某些应用程序在该存储库中创建小文件并提交更改。这应该在不检查磁盘上的千兆字节的情况下发生。
我找到了一个JGit代码示例,其中将远程存储库克隆到内存中的存储库中。
我可以使用JGit(如下所示)将文件添加到远程存储库而无需在本地检出文件(即,不将千兆字节的数据传输到将运行该代码的计算机上)吗?
DfsRepositoryDescription repoDesc = new DfsRepositoryDescription();
InMemoryRepository repo = new InMemoryRepository(repoDesc);
Git git = new Git(repo);
git.remoteAdd();
git.commit();
更新1:整个目录的大小(跟踪文件加.git
)为1.2G
。一个人的大小.git
是573M。
% du -hs .
1.2G .
% du -hs .git
573M .git
请注意,在RAM中检出将从远程下载完全相同的数据。1,2G
克隆完成后,它将仅在RAM中使用,而不是在磁盘上使用。
您可能还想了解如何使用JGit api创建和添加“文件”,以查看这是否是将所需数据添加到存储库中的便捷方法。
如果要限制从git服务器下载的内容的数量,可以创建一个浅表克隆。
看到这样的答案例如:
git clone --depth 1 <repo_url> -b <branch_name>
这将下载最新提交的内部文件(您的情况下为500M的压缩版本),并运行此提交的实际签出(500M)。
您可以根据需要在磁盘或RAM上运行它。
在您的情况下,这仍然需要600-700M的使用量,包括在RAM或磁盘中,包括检出的文件,
但它只会下载〜100M (我猜测:通过运行浅表克隆来检查实际大小来自服务器的命令)从服务器获取头提交的压缩版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句