动机:我花了相当多的时间跳过篮球,让我的git存储库保持干净小巧。这意味着避免二进制文件和图像,更喜欢下载/生成脚本而不是原始数据等。在我应用它之前,有一个工具可以帮助我弄清楚提交的实际影响,这对我非常有用。
我的问题有两个部分:大小和整合。
大小:如何在提交之前确定git提交的影响?我已经找到了大量的解决方案" size"问题并不能真正回答我的问题。
我真正想要的是一个脚本,它告诉我以下内容:如果我在添加,提交和推送之前我的存储库在git服务器上的大小是S1
,那么S2
在我添加,提交和推送之后,如何在添加,提交和推送之前找出值X = S2 - S1
?
集成:如何才能将此大小计算最佳地集成到我的标准git流程中?理想情况下,每当我运行X
时,我都希望向我显示此提交大小git status
。例如(参见"影响"):
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
Impact: 1234 bytes
(use "git reset HEAD ..." to unstage)
new file: new_file_1.png
new file: new_file_2.sh
new file: new_file_3.cpp
我可以看到如果不编辑二进制文件,这可能是不可能的 - 如果是这样的话,那么只需手动运行脚本即可。
答案 0 :(得分:1)
写一个脚本。 (批处理,shell,python等)
git stash
计算本地仓库的总大小(递归检查所有目录中的所有文件,使用操作系统的API获取文件大小)并将其分配给变量。 请记得跳过.git文件夹。
git stash pop --index
按早期变量减去新文件大小并打印差异。
git status
。如果您使用编程语言,则可以将git status
(在Java中,ProcessBuilder.getInputStream()
)的输出转换为字符串,然后使用步骤4中的数据将字符串格式化为您想要的内容。
然后你必须在推送之前运行该程序/脚本。
要获得压缩大小,看起来更简单,更可靠的方法是只检查服务器大小git push
,再次检查服务器大小,然后git reset --soft HEAD~
。如果您使用的是Github,则可以使用API获得大小。例如。 https://api.github.com/repos/git/git,查找"size"
。