我正在尝试使用特定提交哈希获取git repo而不进行克隆!每个例子都想克隆整个回购。这是有道理的,但我想到的回购是巨大的,我需要这样做留下一个小的足迹,因为它是一个码头图像。
提交哈希在URL中 - wget
或curl
可以/应该递归获取但我感觉github正在阻止,因为我得到的只是robots.txt
回购并提交:
https://github.com/phalcon/cphalcon/tree/1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e
我最好的尝试错误:
git fetch https://github.com/phalcon/cphalcon/ 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e
error: Server does not allow request for unadvertised object 1d6d21c98026b5de79ba5e75a3930ce7d1ebcd2e
更新
使用克隆的答案的建议不回答这个问题。我可以克隆/结账没问题。试图在没有本地整个回购的情况下做到这一点
答案 0 :(得分:2)
您将需要一个Git存储库,原因如错误消息所示:
error: Server does not allow request for unadvertised object ...
“未公开的对象”是指没有直接附加名称的对象。 (如果对象有一个名字,你可以要求命名的东西,服务器就会给你这个对象。这假设像“我不允许蓝色猫”这样的抱怨意味着“我允许其他一些颜色的猫“,这也不一定是真的,但它是一种合理的假设。 1 )这意味着你必须通过某种间接方式获得对象,即使用git fetch
。
根据定义,您需要的存储库是原始存储库的克隆或至少部分克隆。您可以使用浅克隆,这是一个不完整的克隆。确切地说,深度是必要的是你无法提前计算的东西:拥有完整克隆的人可以弄明白,一旦你有足够深的克隆,你就可以找到确切的数字。但如果你的克隆太浅,你所知道的就是你的克隆太浅了。
另请参阅Git fetch a specific commit by hash和git shallow clone (clone --depth) misses remote branches。请注意,您可能需要--single-branch
,也可能不需要git fetch --depth <bigger-number>
。克隆一些深度并查看它是否足够,如果没有,请使用ResourceBundle entries = Utf8ClassLoader.getBundle("localization/language", "fa-IR"); // fa-IR is a UTF-8 and RTL language
Enumeration<String> keys = entries.getKeys();
for (String key = keys.nextElement(); keys.hasMoreElements(); key = keys.nextElement()) {
ResourceEntity entity = new ResourceEntity();
entity.setId(new ResourceEntity.PKC(key, locale));
entity.setValue(entries.getObject(key));
resourceDAO.persistOrUpdate(entity);
}
提高深度,直到足够。
1 事实上,这个逻辑似乎是短语“证明规则的例外”的真正起源:它来自拉丁语短语 Exceptio probat regulam in casibus non exceptis 。有关详情,请参阅https://pocketbookuk.com/tag/cicero/和this answer on english.stackexchange.com。