如何使用jGit限制每个文件版本的提交数量
我们使用如何使用jGit限制每个文件版本的提交数量,git,jgit,Git,Jgit,我们使用jgit来存储一些内部文件的版本,我希望每个文件只允许有限数量的版本。目前,我可以使用以下方法为每个文件添加无限数量的提交: git.add() .addFilepattern(fileName + ".yaml") .call(); git.commit() .setMessage(comment) .setAuthor((String)context.get("userName")
jgit
来存储一些内部文件的版本,我希望每个文件只允许有限数量的版本。目前,我可以使用以下方法为每个文件添加无限数量的提交:
git.add()
.addFilepattern(fileName + ".yaml")
.call();
git.commit()
.setMessage(comment)
.setAuthor((String)context.get("userName"),(String)context.get("userName")+"@xxx.ch")
.call();
我想检查每个文件的git版本数是否大于n,在这种情况下,squash
n-version和n+1版本
,或者只删除n+1版本
。如果回购协议中特定文件的版本数大于n并挤压两个版本或删除n+1版本
,我如何签入jGit?有没有更好的办法
更新:
假设我允许git repo中的每个文件有5个版本,并且在git reflog
中有以下条目:
A---B---C---D---E---F---G---H---I
特定文件具有以下git日志
entires:
B---C---E---F---G---H
我可以设想两种选择:
一个选项:“挤压”将G和H提交到Z。
第二个选项:“删除”提交H
我只在本地机器上的一个分支(主分支)工作。
我查看了问题的答案,但我仍然不确定如何使用“jGit”完成此操作。我们决定不重写repo中文件的历史记录。这不是Git版本控制可以立即完成的事情,每次提交都基于所有以前的提交,每次对文件的更改都基于所有以前的更改,因此,您需要一直使用一些类似于rebase的方法来重写History,这可能相当复杂……谢谢@centic,我可以用jGit对同一分支中的一个或多个提交进行rebase吗?请看我上面的升级问题。