如何用JGit找到一个分支的第一次提交?
我想使用Eclipse的JGIT库找到特定分支的第一个提交.例如,如果我有 master -- a -- c -- d -- e \ feature b -- f -- g -- h \ another j -- k -- l // findBranchRoot() is the magic method we want to create repository.resolve("feature").findBranchRoot().getId(); // this would return b repository.resolve("another").findBranchRoot().getId(); // this would return j 有人知道该怎么做吗? 解决方案 您要遇到的问题是,与我同在,在这里 - 符合"在"分支上不是.要看到这一点,请考虑您画的图.这是模棱两可的.不可避免地.你画
0 2024-04-03
编程技术问答社区
如何用ngit(或jgit)将现有 repo 上的跟踪设置为远程 repo?
我正在开发基于GUI的助手实用程序,该实用程序将: INIT本地存储库,INIT(BARE)遥控仓库 基于项目类型的添加.gitignore 提交本地所有文件 将远程存储库添加到本地配置 将主机推到远程仓库 创建一个开发分支并将其推向主人 所有这些都是通过使用ngit安装的无git(.net端口). 但我无法弄清楚如何设置跟踪以跟踪主人/主人,并使用ngit . 我可以轻松地使用 git branch --set-upstream master origin/master 但是,我希望避免本地git安装的依赖性. 解决方案 这是一个Java代码 Git git = Git.open(new File("/home/repos/myrepo")); CreateBranchCommand create = git.branchCreate(); create.setUpstreamMode(SetupUpstreamMode.SET_UPS
0 2024-04-03
编程技术问答社区
JGit : 如何在遍历仓库时获得Branch
缺少JGIT文档似乎在使用RevWalk时如何使用/检测分支. 这个问题东西. 所以我的问题是:如何从RevCommit获取分支名称/ID?或如何在手动前指定哪个分支? 解决方案 通过循环分支找到了一种更好的方法. 我通过调用 在分支上循环 for (Ref branch : git.branchList().call()){ git.checkout().setName(branch.getName()).call(); // Then just revwalk as normal. } 其他解决方案 查看JGIT的当前实现(请参阅其git repo 及其 git:查找一个犯罪分支来自". 即: git branch --contains 仅实现了git branch的某些选项(例如 ListBranchCommand.java ). 其他解决方案 可以使用以下代码来获取"从"从"分支: /
0 2024-04-03
编程技术问答社区
Spring Cloud Config-Git Repository的错误
春季云配置框架: 我正在尝试将Java项目中的春季云配置与后端存储库集成, git 是Bitbucket.基本上,我在不同的情况下更频繁地遇到两个错误. 2020-04-11 17:08:59.265 WARN 2792 --- [ main] .c.s.e.MultipleJGitEnvironmentRepository : Could not fetch remote for master remote: https://user@bitbucket.org/workspace/config-repo.git 在上述情况下,它使用缓存版本和tomcat/countertow服务器启动而没有任何问题. 2020-04-11 17:09:03.774 INFO 2792 --- [ main] o.s.c.c.s.e.NativeEnvironmentRepository : Adding property sourc
0 2024-03-31
编程技术问答社区
如何在JGit中从一个git分支硬复位到另一个?
我有两个分支一个是主人,另一个是一个级别1.现在,Level1是最新的我需要将lade master重置为通常在git bash中的Level1,我可以通过遵循命令. $ git checkout master $ git tag old-master-branch $ git reset --hard level1 $ git merge -s ours origin/master $ git push origin master 这个对我来说很好.我的问题是如何使用JGIT来实现它.我尝试过.但是我无法弄清楚如何设置源和目标分支. 考虑一个场景,我克隆了一个主分支 Git git = Git.cloneRepository().setURI(remote).setCredentialsProvider(new UsernamePasswordCredentialsProvider("obuli", "xxxxxx")).setDirectory(gitPa
0 2024-03-28
编程技术问答社区
USERAUTH使用JGit安全访问git repo的失败,用于PullCommand()。
我正在尝试使用JGIT的API进行以下代码 进行GIT拉动 public class gitHubTest { JSch jsch = new JSch(); // Defining the private key file location explicitly String userHome = System.getProperty("user.home"); String privateKey = userHome + "/.ssh/id_rsa"; String knownHostsFile = userHome + "/.ssh/known_hosts"; Repository localRepo = new FileRepository("/LocalPath/.git"); public gitHubTest() throws Exception { jsch.setConfig("Strict
0 2024-03-19
编程技术问答社区
JGit S3只支持标准-美国桶?
除了使用JGIT的S3存储桶以外,使用其他位置(即通过配置文件等),还是我在这里做错了什么? 如果我尝试使用位于欧盟的JGIT的S3存储桶,JGIT会引发错误 -> jgit push origin master Counting objects: 3 Finding sources: 100% (3/3) Getting sizes: 100% (2/2) Compressing objects: 100% (1/1) Writing objects: 100% (3/3) java.lang.NullPointerException at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:518) at org.eclipse.jgit.transport.AmazonS3.putImpl(AmazonS3.java:505)
2 2024-01-25
编程技术问答社区
在S3上访问jgit的IAM配置
我正在尝试创建IAM权限,以便JGIT可以在我的一个存储桶中访问目录. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3::://*"] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::/"] } ] } 不幸的是,它引发了错误.我不确定需要采取哪些其他允许行动才能起
0 2024-01-25
编程技术问答社区
根据JGit的提交日期来检查特定的修订版
我想使用java jgit库来检索以前提交的文件的修订.该文件每天都会更新,我需要从GIT存储库中访问以前的版本. 我知道如何通过提供所需的修订的提交哈希来结帐特定的修订,如所述在这里使用此命令: git.checkout().setName( "" ).call(); 当前,我克隆了存储库,搜索该文件的最新提交,然后结帐修订版.我现在的过程很麻烦,因为每次都需要重新检查存储库.我宁愿只从特定的修订中导出一个文件(例如主分支). 修订日志 检索存储库的修订日志并获取我感兴趣的文件的提交. private static HashMap getRevisionsByLog(Repository repository, String filePath) { HashMap commitMap = new HashMap(); Git git = new Git(repo
6 2023-11-18
编程技术问答社区
Git: 压制非最新提交的连续提交,而且不是从根开始的提交
我已经回顾了有关 and anding and and and and,最新的投入和挤在根本上,但这两个都不会帮助我挤压非根源的非关注承诺. 这是我的起始场景: D---E---F---G---H---I---J master 和我所需的结果: D---E---Z---I---J master 其中Z是F---G---H的南瓜,F---G---H,D---E和I---J可以是任意长的非分支提交的序列. 第一种方法: [lucas]/home/blah/$ git rebase -i D rebase in progress; onto D You are currently editing a commit while rebasing branch 'master' on 'D'. No changes You asked to amend the most recent commit, but doing so would make it em
2 2023-11-18
编程技术问答社区
将Eclipse JGit连接到GitHub,以便TeamCity可以检查变化
github已与其 无法收集更改,错误:org.eclipse.jgit.errors.noremoterepositoryexception:git@github.com:project/repository.git:error:error:您使用的是带有SHA-1的RSA键允许.请使用较新的客户端或其他密钥类型. 我如何指示团队不使用SHA-1并使用支持的哈希? 我可能会迁移到ED25519密钥,但是我们的Windows代理商不支持它,我必须再次更改团队中的所有键,这意味着我将遇到两个问题. 在2022年与GitHub的SSH RSA钥匙结成Teamcity朋友是否有实用的方法?作为参考,我在2021.2.1上. 解决方案 Teamcity现在具有使用SHA-512与RSA键合作的版本,GitHub将接受.与大多数其他客户不同,TeamCity的较旧版本更喜欢ssh-rsa而不是rsa-sha2-512和rsa-sha2-256,因此他们将在使用RSA键时
26 2023-10-15
编程技术问答社区
使用JGit获取标签的信息
我需要每个提交,以获取关联标签的名称和消息. 我设法获得了与我的提交相关联的标签名称.但是我无法收到消息.我尝试这样的尝试: String nameTag = ""; List call = new Git(git.getRepository()).tagList().call(); // get all tags from repository for (Ref ref: call) { if ((ref.getObjectId().getName()).equals(commit.getName())) { Map names = git.nameRev().add(ref.getObjectId()).addPrefix("refs/tags/").call(); nameTag = names.get(ref.getObjectId()); System.out.
18 2023-10-14
编程技术问答社区
用Java通过ssh克隆git仓库的用户名和密码
我试图用java在ssh上克隆一个git项目.我有git-shell用户的用户名和密码作为凭据.我可以使用以下命令在终端中克隆该项目,没有任何问题. (当然,它首先要求密码) git clone user@HOST:/path/Example.git 但是,当我使用JGIT API 尝试以下代码时 File localPath = new File("TempProject"); Git.cloneRepository() .setURI("ssh://HOST/path/example.git") .setDirectory(localPath) .setCredentialsProvider(new UsernamePasswordCredentialsProvider("***", "***")) .call(); 我有 Exception in thread "main" org.eclipse.jgit.api.error
20 2023-09-27
编程技术问答社区
在jgit中配置 known_hosts
将JGIT与Gitolite一起进行源控制,我有一个应用程序,该应用程序在命令上生成某些代码,并且我们希望将其承诺用于源控制.目的是用快速前进,提交新代码,然后推开. 我有以下方法: private void commitToGitRepository(String updateComment, Config config) throws IOException, NoFilepatternException, GitAPIException { if(git == null) { git = Git.open(new File(config.getDpuCheckoutDir())); } PullCommand pull = git.pull(); pull.call(); } 此方法在pull.call()方法调用上失败,但以下例外: com.jcraft.jsch.JSchException: Unkno
28 2023-09-27
编程技术问答社区
使用JGit的密钥安全地访问Git存储库
我正在使用 jgit 访问远程git repo,我需要使用 ssh . JGIT使用 jsch 提供安全的访问.但是,我不确定如何设置密钥文件和jgit的知识主机文件.我尝试的是如下. 创建了 sshsession factory ,使用subclassing jschconfigsessionfactory : public class CustomJschConfigSessionFactory extends JschConfigSessionFactory { @Override protected void configure(OpenSshConfig.Host host, Session session) { session.setConfig("StrictHostKeyChecking", "yes"); } } 在我访问远程git repo的课程中,进行了以下操作: CustomJschConfigSess
26 2023-09-26
编程技术问答社区
Spring云配置服务器的git连接问题
我在连接存储配置的存储库时看到了Spring Cloud Config Server(Springboot)日志.我不确定由于凭据还是其他东西,它是否无法克隆(不允许使用git-upload-pack).任何指针都很棒. 2021-10-06 22:52:51.763 INFO 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2021-10-06 22:52:51.764 INFO 1 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2021-10-06 22:52:51.765 INFO 1 --- [nio-80
30 2023-09-12
编程技术问答社区
如何使用JGIT从SHA1 ID字符串获得RevCommit或ObjectId?
这个问题是这个问题的反面:如果我获得了特定提交作为字符串的SHA1 ID,我该如何在JGIT中获得ObjectId或关联的RevCommit? 这是一个可能的答案,通过所有RevCommit s: 迭代 RevCommit findCommit(String SHAId) { Iterable commits = git_.log().call(); for (RevCommit commit: commits) { if (commit.getName().equals(SHAId)) return commit; } return null; } 有什么比上面的实现更好的? 解决方案 首先将字符串转换为ObjectId然后让RevWalk查找它可能更容易. ObjectId commitId = ObjectId.fromString("a
10 2023-08-31
编程技术问答社区
JGit : 连接到远端版本库
我通过Google,论坛和JGIT用户指南进行了搜索,但找不到如何与API连接到遥远的存储库. 任何人都有一个榜样,或者只是一个关于如何做到这一点的想法? 感谢您的帮助. 解决方案 当前,JGIT 2.0.0-Snapshot确实提供 org.eclipse.jgit.storage.file.FileRepository org.eclipse.jgit.storage.dfs.InMemoryRepository 混凝土Repository类,这意味着由于org.eclipse.jgit.api.Git采用Repository,因此无法远程工作.由于Git本身并非旨在以我认为您的意思的方式进行远程操作,因此我怀疑我们会很快看到此类功能. 更多: 因此,您需要在本地克隆.您通过发行 来做到这一点 Git.cloneRepository() .setURI(myRemoteURIString) .setDirec
14 2023-08-21
编程技术问答社区
JGit和找头
我试图与JGIT交付头脑: val builder = new FileRepositoryBuilder() val repo = builder.setGitDir(new File("/www/test-repo")) .readEnvironment() .findGitDir() .build() val walk: RevWalk = new RevWalk(repo, 100) val head: ObjectId = repo.resolve(Constants.HEAD) val headCommit: RevCommit = walk.parseCommit(head) 我发现它可以打开回购罚款,但是head值设置为null.我想知道为什么找不到头? 我正在阅读此文档: http://wiki.eclipse.org/jgit/jgit/jgit/user_guide > 存储库的构建就像Doc所说的一样,RevWalk也是如此.我正
16 2023-08-19
编程技术问答社区
JGit克隆库
我试图用jgit固定git存储库,而我对无基本化限制的问题有问题. 我的代码: FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(PATH).readEnvironment().findGitDir().build(); Git git = new Git(repository); CloneCommand clone = git.cloneRepository(); clone.setBare(false); clone.setCloneAllBranches(true); clone.setDirectory(PATH).setURI(url); UsernamePasswordCredentialsProvider user = new UsernamePasswordCredentia
10 2023-08-08
编程技术问答社区