2009-12-28 70 views
4

我试图挂钩我的git存储库与微软的源服务器功能,使调试到我的二进制文件的人会自动从github.com拉源文件。如何在远程回购上“git show”?

git show命令会为我提供我需要的正确文件和版本,但由于调试器没有在具有项目源代码的本地git repo的计算机上运行,​​因此我需要“git show” github而不是本地目录。我想象这样的事情:

git --no-pager "--git-dir=git://github.com/AArnott/dotnetopenid.git" show 93e76d5ff529b6c9921a984c3608c150ed4ee7a3 

当--git-dir参数是本地目录这工作得很好,但是当它是一个远程位置时,它给我的错误,如:

致命的:不是git仓库:“混帐://github.com/AArnott/dotnetopenid.git”

将从远程URL位置拉下特定文件的特定版本的git什么命令?

+0

“它看起来至多我至少需要两个命令”:两个命令可以捆绑成*一个*脚本,不是?甚至是混帐。 – VonC 2009-12-29 09:18:53

+0

客户的调试机器上不存在任何脚本文件。因此,命令必须完全独立,仅依赖于客户必须拥有的命令解释器。这就是说,我考虑过一个PowerShell命令,因为它可以是一个命令行上的大脚本。但到目前为止,我一直没有弄清楚如何做一个浅层克隆,或者只是一个远程回购版本的获取。 – 2009-12-30 18:26:40

+0

难道你不能使用curl或wget从你的github repo下载这些文件吗? – 2017-09-14 18:02:56

回答

7

不幸的是,git不支持获取单个远程文件。有三个解决方法:

  • 使用git fetch获取远程历史记录,然后从本地对象存储区中抓取文件。
  • 使用git archive在stdin上以tar格式获取完整树(例如git archive --remote=url master:somesubdir)。
  • 设置gitweb或类似的东西在服务器上,并通过该文件。
+0

这是很棒的信息。很好的解决方法。谢谢。 – rdegges 2009-12-28 22:27:08

+0

坏消息。但是,谢谢。 – 2009-12-28 22:40:59

+0

麻烦的是我需要一个命令来完成所有的工作。它看起来至多我需要至少两个命令。 – 2009-12-28 22:42:21

1

如果你正在系统上安装二进制文件,并期望人们“调试到你的二进制文件”,似乎你可以安装一些额外的文件,不是吗?

其中之一可能是$ HOME /的.gitconfig(或任何它被称为在Windows上)已在它的别名,喜欢的东西:

[remote "msrepo"] 
    url = http://microsoft/git/url.git 
[alias] 
    msreposhow "git fetch --no-pager msrepo; git show $1" 

那么你可以做一个“混帐msreposhow沙基”在一个步骤中,它将调用别名并在一个步骤中执行两个命令。

+0

“git remoteshow”不是一个有效的命令(无论如何都是1.7.3.1.msysgit.0)。这是一个错字还是我错过的命令? – 2011-02-22 18:37:30

+1

这是一个错字,对不起,StackNewbieUnderFlow。它应该显示对代码中定义的别名的调用。我修复了这个帖子并重新格式化了。 – qneill 2011-03-03 20:02:02