我想创建一个工具,在克隆所述存储库之前检查我是否已经拥有远程存储库的本地克隆.要做到这一点,我需要一种方法来测试B是否与存储库A相同 - 我猜我的意思是他们有可合并的历史记录.B的名称可能与A不同,可能还有其他分支 - 通常的用例.
有没有办法做到这一点?我有一个初步的想法如何做到这一点,但我想也许这里有人有一个明确的答案.
获取分支列表并搜索公共分支(通过哈希).然后对于公共分支,检查初始提交是否相同(通过哈希).那时我会说'够好'.我想我没事,除非有人一直在搞乱历史,这是我愿意忽视的用例.要做到这一点,我需要一种方法来获取分支并从远程存储库提交信息,而无需进行克隆.我可以使用ssh和bash来解决这个问题,但是仅使用git的解决方案会更好.
对这个半生不熟的想法的反馈也很受欢迎.
引用的问题是寻找唯一的存储库ID,或者创建一个存储库ID.没有这样的野兽存在,即使它确实存在,它是否与此相关仍然值得怀疑,因为我想确定两个存储库是否具有可合并的历史(即我可以在两者之间获取和合并) - 一个稍微更好定义的问题.我愿意忽略用户修改历史记录的可能性,但也很想听听如何处理这种情况.
我需要能够唯一地标识Mercurial存储库,并将该标识符放在克隆时包含的文件中.如果我可以将标识符放在.hg文件夹中的文件中,这比简单地将正常文件添加到repo更好.
我知道我可以从提交的第一个更改中获得接近某个标识符.我知道hgrc文件不能用于存储标识符,因为它没有被克隆.
所以,我的问题是:克隆的.hg文件夹中是否有另一个文件可用于放置标识符?谢谢.
用于存储库数据的GitHub v.3 API返回给定存储库的整数标识符。id该标识符是返回数据中字段的值。在此示例中,它是数字 1296269:
[
{
"id": 1296269,
"owner": {
"login": "octocat",
... stuff omitted for brevity ...
},
"name": "Hello-World",
"full_name": "octocat/Hello-World",
... stuff omitted for brevity ...
}
]
Run Code Online (Sandbox Code Playgroud)
给定的标识符值在分配给存储库后是否会被重复使用,即使存储库或其所有者帐户随后被删除?换句话说,标识符是否唯一且永久,并且从未重复用于任何其他存储库?
在这种情况下,我的意思并不是简单地重命名存储库;而是指简单地重命名存储库。这不会被视为在相同意义上“重用”它,也不会将存储库的内容完全替换为其他内容。如果你愿意的话,我想具体了解 GitHubid值是否曾经被“回收”。
(老实说,我在 GitHub 文档和网络中进行了搜索,但无论如何都找不到声明。如果我错过了,我深表歉意,并很乐意指出适当的文档。)