我想克隆一个仓库,并且我希望克隆具有原始标签中的所有标签。 我可以像这样手动进行
$ git clone --mirror https://github.com/{org}/{SourceProjectName}.git
$ cd {SourceProjectName}.git
$ git push --mirror https://github.com/{org}/{ProjectName}
似乎libgit2sharp是执行此操作的最佳方法,但是如果有更好的方法,请告诉我。
我不知道如何使用libgit2sharp 看来我必须做一个克隆,然后以某种方式复制引用 然后,我必须遍历所有这些引用并将它们全部上演...然后提交? 我开始着手做所有这些事情,但是感觉就像我在重新发明轮子...
到目前为止我所处的位置:
答案 0 :(得分:1)
我不知道这是否是理想的解决方案,但这似乎可以解决问题:
private void DuplicateGitHubRepo()
{
var clonePath = Path.Combine(Path.GetTempPath(), "Temp-" + Guid.NewGuid() + ".git");
var co = new CloneOptions
{
CredentialsProvider = GetGitCredentials()
};
Repository.Clone(SourceProjectUrl+".git", clonePath, co);
using (var repo = new Repository(clonePath))
{
repo.Network.Remotes.Update("origin", x => x.Url = TargetProjectUrl);
var options = new PushOptions
{
CredentialsProvider = GetGitCredentials()
};
repo.Network.Push(repo.Network.Remotes["origin"],repo.Refs.Select(x=>x.CanonicalName),options);
}
}
答案 1 :(得分:0)
您的链接问题已解决。
git镜像克隆只是一个远程源设置为default
<xsl:template match="/">
<html>
<body>
<!-- header content-->
<xsl:apply-templates select="." mode="header" />
<h2>=======start content==========</h2>
<h2>The customer details are: </h2>
<p>page 1</p>
<p>page 2</p>
<!-- footer content -->
<xsl:apply-templates select="." mode="footer" />
</body>
</html>
</xsl:template>
RemoteCollection.Add()方法如下所示:
+refs/*:refs/*
基本上,第三个参数是您需要设置特殊refspec的地方。