在Git 1.7.0中稀疏结帐? [英] Sparse checkout in Git 1.7.0?

查看:96
本文介绍了在Git 1.7.0中稀疏结帐?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Git 1.7中新的稀疏结帐功能。 0,是否可以像SVN那样获取子目录的内容?我找到了这个例子,但它保留了完整的目录结构体。想象一下,我只是想要'perl'目录的内容,而没有名为'perl'的实际目录。


$ b - 编辑 -



示例:

我的git存储库包含以下路径:

 回购/ .git / 
回购/ perl /
回购/ perl / script1.pl
回购/ perl / script2.pl
repo / images /
repo / images / image1.jpg
repo / images / image2.jpg
repo / doc /
repo / doc / readme.txt
repo / doc / help.txt

我想要的是能够从上述存储库这个布局:

 回购/ .git / 
回购/ script1.pl
回购/ script2.pl

然而,使用当前稀疏的结账功能,它似乎只能得到

  repo / .git / 
repo / perl / script1.pl
repo / perl / script2.pl

这不是我想要的。

解决方案

您仍然需要克隆整个存储库,它将包含所有文件。您可以使用 - 深度标志仅检索有限的历史记录。



一旦存储库被克隆,读取树技巧将您的资源库视图限制为仅位于 .git / info / sparse-checkout 文件中的那些文件或目录。



我写了一个快速脚本来帮助管理稀疏性,因为此刻它有点不友好:

 #!/ bin / sh 
echo> .git / info / sparse-checkout
forin @ $

echo$ i>> .git / info / sparse-checkout
done
git read-tree -m -u HEAD

如果您通过调用 git --exec-path 将此脚本保存为 git-sparse.sh c $ c>,那么你可以运行 git sparse foo / bar / 来只检查foo和bar目录,或者 git sparse'* '让所有的东西都回来。


With the new sparse checkout feature in Git 1.7.0, is it possible to just get the contents of a subdirectory like how you can in SVN? I found this example, but it preserves the full directory structure. Imagine that I just wanted the contents of the 'perl' directory, without an actual directory named 'perl'.

-- EDIT --

Example:

My git repository contains the following paths

repo/.git/
repo/perl/
repo/perl/script1.pl
repo/perl/script2.pl
repo/images/
repo/images/image1.jpg
repo/images/image2.jpg
repo/doc/
repo/doc/readme.txt
repo/doc/help.txt

What I want is to be able to produce from the above repository this layout:

repo/.git/
repo/script1.pl
repo/script2.pl

However with the current sparse checkout feature, it seems like it is only possible to get

repo/.git/
repo/perl/script1.pl
repo/perl/script2.pl

which is NOT what I want.

解决方案

You still need to clone the whole repository, which will have all the files. You could use the --depth flag to only retrieve a limited amount of history.

Once the repository is cloned, the read-tree trick limits your "view" of the repository to only those files or directories that are in the .git/info/sparse-checkout file.

I wrote a quick script to help manage the sparseness, since at the moment it is a bit unfriendly:

#!/bin/sh
echo > .git/info/sparse-checkout
for i in "$@"
do
    echo "$i" >> .git/info/sparse-checkout
done
git read-tree -m -u HEAD

If you save this script as git-sparse.sh into the path reported by calling git --exec-path, then you can run git sparse foo/ bar/ to only "checkout" the foo and bar directories, or git sparse '*' to get everything back again.

这篇关于在Git 1.7.0中稀疏结帐?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆