【问题标题】:How can I limit the number of commits for each file version with jGit如何使用 jGit 限制每个文件版本的提交次数
【发布时间】:2021-03-26 18:49:43
【问题描述】:

我们使用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-versionn+1 version 或者只是删除 n+1 version。如果 repo 中特定文件的版本数大于 n 并压缩两个版本或删除 n+1 version,我如何检查 jGit?有没有更好的方法来做到这一点?

更新:

假设我允许 git repo 中的每个文件有 5 个版本,我在 git reflog 中有以下条目:

A-----B------C------D------E------F------G-- -H--------我

具体的文件有以下git log全文:

B-----C------E------F------G------H

我可以设想两种选择: 一种选择:“壁球”将 G 和 H 提交给 Z。 第二个选项:“删除”提交 H

我只在本地机器上的一个分支(主)中工作。 我查看了this 问题的答案,但我仍然不确定如何使用`jGit 来做到这一点。

【问题讨论】:

  • 这不是 Git 版本控制可以开箱即用的东西,每次提交都基于所有先前的提交,对文件的每次更改都基于所有先前的更改,因此您需要使用一些类似于 rebase 的方法来一直重写 histoy,可能相当复杂......
  • 谢谢@centic 我可以使用 jGit 将一个或多个提交重新设置到同一个分支吗?请参阅上面我更新的问题。

标签: git jgit


【解决方案1】:

我们决定不重写 repo 中文件的历史记录。

【讨论】:

    猜你喜欢
    • 2017-06-23
    • 2017-03-28
    • 2012-05-17
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2014-05-21
    • 2018-12-11
    相关资源
    最近更新 更多