【发布时间】:2012-12-15 14:18:45
【问题描述】:
我想通过命令行curl一个git标签:
curl -O http://someurl
但是当我尝试解压文件时它坏了?有谁知道问题出在哪里?
【问题讨论】:
我想通过命令行curl一个git标签:
curl -O http://someurl
但是当我尝试解压文件时它坏了?有谁知道问题出在哪里?
【问题讨论】:
如果您只需要提取必要的最小值,
git init temp
cd temp
git remote add x http://example.com/repo.git
git fetch x sometag --depth=1
git archive FETCH_HEAD > ../repo.sometag.tgz
cd ..
rm -rf temp
会的
【讨论】:
git clone 相比,您的解决方案有什么好处? (除了一个节省带宽和空间;))
git 本身不提供 http 接口。一个解决方案是改用git archive
git clone http://example.com/myrepo.git
git archive mytag > myrepo-mytag.tar.gz
【讨论】:
rm -Rf myrepo.git 将其删除。但是我的经验是,这种情况经常发生,因此您可以保留克隆并将其用作本地打包平台:) 迟早有人想要在打包之前运行测试或类似的东西,在这种情况下是源已经可用。
您可以从 GitHub 等 git repos 托管服务中 curl 一个 git 标签,因为它有一个提供 tar(或 zip)的 dedicated tarball service(如 Nodeload)。但没有任何其他 git repo 提供相同的服务。
有关 GitHub 的具体示例,请参阅“Having trouble downloading Git archive tarballs from Private Repo”(或此 curl GitHub tutorial):
curl -sL --user "${username}:${password}" https://github.com/$account/$repo/tarball/$tag_name > tarball.tar
curl -L https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
【讨论】:
curl -L https://github.com/tinganho/yeoman/tarball/v.p1.0.9.0 > yeoman.tar.gz && tar -xvf yeoman.tar.gz -C node_modules
node_modules/username-repo-commithash/...)。您需要添加一个额外的步骤来检测最近创建的目录(以${username} 开头),然后重命名它。
ls -1t "${username}*"|head -n1