我想在现有存储库中创建一个分支,然后跟踪该分支。创建分支成功,新创建的分支仍在跟踪主分支。我尝试了几种不同的解决方案,但结果相同 - 创建了分支,但跟踪了主。
首先我克隆存储库:
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();
我尝试过的其他事情:
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
答案 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