问题标签 [sparse-checkout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
15 回答
182568 浏览

git - 是否可以在不先检出整个存储库的情况下进行稀疏检出?

我正在使用一个包含大量文件的存储库,需要数小时才能签出。我正在研究 Git 是否可以很好地与这种存储库一起工作,因为它支持稀疏签出,但我能找到的每个示例都执行以下操作:

这个命令序列的问题是原始克隆也进行了检查。如果将 -n 添加到原始克隆命令,则 read-tree 命令会导致以下错误:

错误:稀疏结帐在工作目录上没有留下任何条目

如何在不先检查所有文件的情况下进行稀疏检查?

0 投票
3 回答
19895 浏览

git - 将 Git 子模块设置为浅克隆和稀疏结帐?

许多供应商的Objective-C 库(例如,facebook-ios-sdk)指示您将其repo 文件/目录的某个子集复制到您的Xcode 项目中。这样做的一个问题是您不知道您拥有的供应商代码的修订版本。另一个是,如果您对供应商代码进行了更改,那么通过 Git 贡献您的更改并不容易。

作为一种解决方案,我想将每个供应商库添加为我的项目 repo 的 Git 子模块,并带有一些额外的设置(例如,在.gitmodules文件中)。这样,如果另一个人克隆了我的项目并这样做git submodule update --init了,他们的 repo 和子模块将具有与我相同的状态,因为他们将使用我设置的相同默认设置:

  1. 稀疏检出:仅检出子模块的某些文件。
  2. 浅克隆:只克隆子模块的某个 SHA1。

如何为 Git 子模块设置上述设置?

0 投票
5 回答
13431 浏览

svn - 无需重新下载即可更改现有 SVN 工作副本的深度

我有整个 SVN 存储库的工作副本,但由于磁盘空间问题,我想将其更改为稀疏工作副本。

一种方法是:

但是,这将首先删除project1project2,然后重新下载它们。这真的很不方便,因为它们非常大,服务器的上传速度非常低。我尝试了这个(与另一个较小的回购协议的一部分,作为实验):

但是最后一个命令只是撤消前 2 个命令。

如何在不立即更新/更改工作副本的情况下设置工作副本的深度,以便我有机会首先正确配置子目录?

还是有另一种方法来完成我想要的,例如首先复制project1project2到一个安全的位置?

0 投票
1 回答
141 浏览

git - 转换为git时,我应该如何处理单个目录svn checkout?

我很快将把我的应用程序部分从使用svn支持的存储库转换为使用git一个。

我以前用过git-svn,但整个团队都被转移到了git,我被要求成为这一举动的先锋。虽然我很高兴我了解如何完成大部分动作,但有一个方面我还没有解决。

我的配置存储库的一个目录一直用于跟踪独立 Windows 机器上外部应用程序的脚本目录。该应用程序的脚本目录位于应用程序安装目录中,因此svn我在适当的位置检查了该目录。

我希望我能够继续使用这种结构,但我的研究表明,狭窄的克隆git需要你保持相同的相对结构,这在我的情况下会很困难。

明确地说,我想映射 to 的myrepo:config/scripts内容C:\application\scripts

据我所知,我有几个选择:

1. 为这些脚本文件使用单独的存储库。

这可能是首选,因为它允许我将 repo 克隆到正确的位置。

不幸的是,目前没有允许将配置数据(这些脚本就是这些脚本)存储在配置目录下以外的任何地方的结构。因此,这将需要对我们的存储库进行一些重组,而不是直接转换svngit我们希望的。

2. 使用连接点。

我可以将目录的git工作副本放在config其他地方C:\,然后使用连接点使目录显示为应用程序目录的子目录,就像Ger4ish 建议在 unix 上使用符号链接一样。

不幸的是,我没有对该机器的管理员访问权限,所以这并不像最初看起来那么简单。

其他选择?

我想知道是否有我错过的选项。

查看Git 1.7.0 中稀疏结帐问题的答案?我可以得到一些方法,但是保持结构相同的要求以及检查到特定位置的需要意味着这种方法不起作用。

0 投票
5 回答
13994 浏览

git - 带排除的 Git 稀疏结帐

根据这个线程,应该实现Gitsparse-checkout功能中的排除。是吗?

假设我有以下结构:

现在我想presentations/heavy_presentation从结帐中排除,而将其余部分留在结帐中。我还没有设法让它运行。什么是正确的语法?

0 投票
1 回答
205 浏览

git - hg 嵌套存储库设置

我的 mercurial 项目中有一个第三方嵌套的 git 存储库,我想与我的团队共享此存储库的本地设置(稀疏结帐) - 有没有办法自动执行此操作?

/repo/nestedrepo/.git/info/sparse-checkout <- 这是一个本地设置文件,但我希望团队中的每个人在拉取父 repo 时都能得到它。

谢谢

0 投票
2 回答
10043 浏览

svn - 在詹金斯结帐期间排除目录

我在主干下有 20 个目录

如何在Jenkins结帐期间排除(不包括)一些(任意目录。例如,我想拥有除/trunk/a3/b1之外的所有目录。 如何做到这一点?

我已经在SVN checkout ignore 文件夹中找到了答案,但这在 Jenkins 下是不可能的。需要一个更简单的解决方案,我不知道主干下的目录数量,除了我要排除的目录。

另外如何添加自定义 svn 结帐。假设我想执行 svn 命令行工具进行结帐?

0 投票
3 回答
64651 浏览

git - Jenkins 和 Git 稀疏检出

我在 Git 中有一个大型存储库。如何在 Jenkins 中创建一个仅从项目中检出一个子文件夹的工作?

0 投票
3 回答
5660 浏览

git - 为什么排除的文件不断重新出现在我的 git sparse checkout 中?

我使用GCC git 镜像,因为我只使用 C 和 C++ 前端,所以我使用 git 的稀疏检出功能来排除数百个我不需要的文件:

这工作了一段时间,但时不时地我注意到其中一些被排除的文件已经返回,有时很多

我不确定文件何时重新出现,我做了很多切换到不同的分支(远程跟踪和本地),这是一个非常繁忙的存储库,因此经常有新的更改需要拉取。

作为 git 的相对新手,我不知道如何“重置”我的工作树以再次摆脱这些文件。

作为一个实验,我尝试禁用稀疏签出和拉取,以为我可以在之后再次启用 sparseCheckout 以某种方式更新树,但这并没有很好地工作:

所以显然我对我从未要求过的文件进行了本地修改,AFAIK 从未接触过!

git status没有显示这些变化:

我试过git read-tree -m -u HEAD了,但它什么也没做。

所以我的问题是:

  • 为什么文件会重新出现?
  • 如何让它们再次消失?
  • 我如何防止他们回来?
  • 这是否可能与我的.git/info/exclude文件包含对文件中应该排除(即命名为!)的目录中的文件的引用有关sparse-checkout?我按照说明忽略了与 SVN 相同的文件

    $ git svn show-ignore >> .git/info/exclude

所以我的exclude文件包括路径,如

这将在sparse-checkout文件中命名的目录之一之下:

我试图用一个测试仓库重现这个问题,我克隆了几个副本并编辑每个副本,创建/切换/删除分支并合并它们之间的更改,但在我的玩具测试用例中它永远不会出错。GCC 存储库有点大(超过 2GB),并且“失败”之间的时间(大约一两个星期)太长,无法期望人们尝试准确地重现问题。我没有sparse-checkout尝试过在and中使用相同的路径exclude,因为我今天才想到那里可能存在冲突。

几周前,我在 freenode 上的#git 上询问了这个问题,IIRC 基本上被告知“这可能是一个错误,没有人使用稀疏结帐”,但我希望得到更好的答案 ;-)

更新:

我最近一次看到问题实际上发生了(即文件不存在,然后在单个命令之后出现)是从上游源拉取:

显示的更改包括这些重命名:

根据需要,在拉取目录之前,该libgo目录不存在。在拉出该目录并且这些文件(并且没有其他文件)在它下面之后:

我不知道重命名的文件是否丢失了skip-worktree位,我该如何检查?

我很确定在重命名时问题并不总是发生,因为libgfortran/ChangeLog例如上面示例中显示的文件不是新文件或最近重命名的文件。

0 投票
6 回答
79316 浏览

git - 只用 git 克隆一个子目录

我有一个包含子目录的 git 存储库。示例 dirA/dirB。有没有办法git clone在 Unix 服务器上只从子目录(dirB)中提取文件?

除了克隆之外,还有其他 git 命令可以执行此操作吗?

我如何 git 一个特定的文件?