JGit - 无法跟踪新创建的分支

时间:2017-05-25 15:12:50

标签: git-branch jgit

我想在现有存储库中创建一个分支,然后跟踪该分支。创建分支成功,新创建的分支仍在跟踪主分支。我尝试了几种不同的解决方案,但结果相同 - 创建了分支,但跟踪了主。

首先我克隆存储库:

Git.cloneRepository()./*set creds*/.setURI(..).setDirectory(...).call

到目前为止一切顺利。

接下来,从克隆生成的git文件构建存储库。

FileRepositoryBuilder builder = new FileRepositoryBuilder();
Repository repo = builder.setGitDir(gitFile).readEnvironment().findGitDir()
    .build();

此时,我已经尝试checkOut分支,createBranch设置为true,并分两步完成 - 创建,然后检出。这是两步法:

git.branchCreate()
        .setForce(true)
        .setName(branchName)
        .setStartPoint("origin/master")
        .call();
git.checkout()
        .setName(branchName)
        .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK)
        .setStartPoint("origin/"+branchName)
        .call();

我尝试过的其他事情:

  • 将上游模式设置为SeetupUpstreamMode.SET_UPSTREAM
  • 在创建步骤
  • 上设置起始点为branchname
  • 没有单独结帐,但在结帐时设置creatBranch(true)
  • 在创建和结帐之间推送

结果总是.git / config文件看起来像:

[remote "origin"]
    url = ssh://..
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true
[branch "newbranch1"]
    remote = origin
    merge = refs/heads/master << TRACKING master, not newbranch1

在我使用常规git(而不是jgit)创建的分支上,配置文件看起来像:

[remote "origin"]
    url = ssh:...
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true
[branch "newbranch2"]
    remote = origin
    merge = refs/heads/newbranch2 << WANT THIS

关于如何让我的新分支跟踪分支而不是主分支的任何想法?

使用jgit-4.6.0.201612231935

2 个答案:

答案 0 :(得分:1)

我认为您无法使用JGit的CreateBranchCommand跟踪不存在的分支。 setStartPoint()仅用于指定新分支最初应指向的位置。

但是,您可以使用

直接操作存储库配置
StoredConfig config = repository.getConfig();
config.setString( "branch", "newbranch", "remote", "origin" );
config.setString( "branch", "newbranch", "merge", "refs/heads/newbranch" );
config.save();

这能解决您的问题吗?

答案 1 :(得分:0)

以下是最终的工作代码:(谢谢RüdigerHerrmann)

import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.sec.gov/litigation/suspensions.shtml")
r.content

soup = BeautifulSoup(r.content)
print soup.prettify()

links = soup.find_all("a")

for link in links:
        print "<a href= '%s'>%s</a>" %(link.get("href"), link.text)

g_data = soup.find_all("p", {"id": "archive-links"}) 
print g_data

for item in g_data:
    print item.text