问题标签 [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.
git - 版本控制中的 Git 子模块配置
我正在将我的点文件存储在 Git 中,但我遇到了一些障碍。我想将 Git 存储库 ( contrib/completion/*.bash
) 的一部分的稀疏签出作为子模块包含在内。我可以让它工作,但是在将我的更改提交到存储库并将其克隆到新位置后,稀疏检出配置丢失了。如果我错了,请纠正我,但我相信这是因为 sparse-checkout 配置都存储在父 repo 的 .git 文件夹中。
有没有一种好方法可以将此配置与存储库的其余部分一起克隆?我想达到可以克隆 repo、issue 的地步git submodule init
,然后git submodule checkout
只.git/modules/git/info/sparse-checkout
签出我包含在文件中的目录。
如果有帮助,当前存储库位于https://github.com/bgshacklett/dotbash 。
mks - 如何从命令行确定 MKS 沙箱是稀疏的还是非稀疏的?
如何从命令行确定 MKS 沙箱的稀疏状态?
从 GUI 中,我可以选择一个沙箱并打开“沙箱信息”。如果设置了“稀疏”复选框,则沙箱是稀疏的。
我喜欢从脚本中的命令行确定此状态,将沙箱临时设置为稀疏,对其进行一些操作,然后恢复到原始状态。
该命令si sandboxinfo
不显示稀疏状态。
svn - TortoiseSVN:使用 SVN Checkout 对话框“仅此项目”选项后添加其他文件
我们部门正计划在 Tortoise SVN 中使用“SVN Checkout”选项。在该对话框中,我们选择“仅此项目”选项,然后单击“选择项目”按钮并选择我们要签出的所有相关文件。让我们假设一个用户会犯错,忘记签出一个重要的文件。返回并从主干中选择该文件(或文件列表)的最简单方法是什么?
编辑:
建议更改@Chad 的答案:
A.) 如果您要检出的文件夹或文件的父文件夹在工作副本中不存在,请执行以下操作:
- 打开存储库的Repo 浏览器。
- 右键单击丢失的文件并选择Checkout ...。
- 修复/设置结帐目录到文件应该去的位置(将您单击的文件夹中的文件夹添加到您要检出的文件夹/文件的父文件夹,并确保您使用的是反斜杠字符)
- 单击确定。
- 您将收到“目标文件夹不为空”的警告。继续并选择Checkout into the non empty folder选项。
这些文件将被添加到工作副本中。
免责声明: 如果您不执行第 3 步,签出文件的工作副本将位于与其余文件无关的奇怪位置。
B.) 如果您要检出的文件夹或文件的父文件夹确实存在于工作副本中,请执行以下操作:
- 打开存储库的Repo 浏览器。
- 导航到您要签出的文件的父文件夹(避免必须修复“签出目录”的步骤)
- 右键单击丢失的文件并选择Checkout ...。
- 单击确定。
- 您将收到“目标文件夹不为空”的警告。继续并选择Checkout into the non empty folder选项。
这些文件将被添加到工作副本中。
编辑#2:
建议更新@gbjbaanb 的建议答案:
要将新文件夹/文件包含到工作副本中:
- 右键单击签出文件夹的根文件夹>选择“TortoiseSVN”>选择“Repo-browser”
- 输入凭据(如果在 TortoiseSVN > 设置 > 保存的数据中清除了身份验证)> 单击“确定”
- 右键单击“资源库浏览器”对话框中的文件资源管理器面板或文件详细信息面板中的项目 > 选择“将项目更新到修订版”> 在“更新到修订版”对话框中采用所有默认值 > 单击“确定”
- 输入凭据(如果在 TortoiseSVN > 设置 > 保存的数据中清除了身份验证)> 单击“确定”
注意: 对添加的所有新文件夹/文件重复步骤 #3 和 #4
免责声明: 假设您只是将新文件夹或文件添加到您的工作副本/签出文件夹中。
从工作副本中排除文件夹/文件:
- 右键单击要排除的文件夹或文件
- 选择 Tortoise SVN > 更新到修订版
- 单击“更新到修订”对话框的“更新深度”部分下的“选择项目...”按钮
- 输入凭据(如果在 TortoiseSVN > 设置 > 保存的数据中清除了身份验证)> 单击“确定”
- 取消选中相关文件夹或文件 > 单击“确定”
这就是我在一个非常大的存储库中使用的方法。当我需要它们时,只检查了我需要的位。
git - 将文件稀疏 Git 检出到父目录中
借用一些教程,我可以对 git repo 中的特定文件夹进行稀疏检出。
例如,假设我在此 repo 文件夹中的git-completion.bash
, git-completion.tcsh
, etc 脚本之后。contrib/completion
上面的 sparse-checkout 确实返回了我想要的文件夹,但它似乎有一个嵌套的文件结构:
是否可以像这样将文件拉入父目录?
git - 在同一个仓库中的多个位置签出文件,类似于 SVN 外部
我已将 SVN 存储库移植到 GIT,但之前我有一个 svn:external 文件,但在 GIT 中无法识别。是否可以在具有单一文件源但签出到同一 repo 的其他目录中的 SVN 之类的外部文件中执行?
例如:
我已经阅读了一些关于“sparse-checkout”的内容,但不确定您实际上如何仅引用/签出一个文件。
svn - 深度目录结构的稀疏svn更新
有没有办法对具有深层嵌套目录结构的 SVN 存储库进行稀疏检出。
我正在使用 repo 中所有文件的列表并仅过滤 *.xml 来执行此操作:
svn list --recursive "http://myRepo.com/trunk" > allFiles.txt
我正在尝试执行以下操作:
我试过这个,但收到一个错误,说它正在跳过更新该文件。
如果我手动执行以下操作,我可以在我的结帐中获取文件(我想要一个 --set-depth empty 来获取嵌套 SVN 路径的父目录)。
编辑
我现在有 2 个解决方法都不理想
1. svn update --set-depth empty
我编写了一个 bash 函数,它采用我正在寻找的文件路径执行 svn update --set-depth empty 。例如,project1/dirs/moreDirs/evenMore/file.xml
它会调用:
svn update --set-depth empty updateproject1 updateproject1/dirs updateproject1/dirs/moreDirs updateproject1/dirs/moreDirs/evenMore updateproject1/dirs/moreDirs/evenMore/file.xml
它可以工作,但似乎很慢(也许我可以将多个文件的调用批处理到一个 svn update 调用中)。我不能同时对单独的文件进行多个 svn update 调用,因为 svn 锁定了 repo。
这是完整的脚本:
2. svn cat 获取文件
我也可以只创建文件夹结构的路径和 svn cat 文件,我可以同时对多个文件执行此操作,但这会受到未连接到 svn 的影响(例如,我无法轻松提交或更新来自 svn 的文件没有步行和匹配路径),它不是真正的 svn 结帐。
git - Jenkins 和 Git 信息/稀疏结帐
我在 Git 中有非常大的存储库,并且我在 Jenkins 中创建了一个作业,按照Jenkins 和 Git sparse checkouts的这些步骤从项目中只签出一个子文件夹。问题是当我或我的一些同事从 Jenkins 中清除当前工作区时,info/sparse-checkout 也会被删除。
我怎样才能解决这个问题,而不必每次都为同一个工作创建 info/sparse-checkout?
git - 使用Git - submodule - sparse-checkout时是否可以没有额外的子目录?
我想模仿 svn:externals 之类的行为:我有一个主项目,并且在另一个存储库中有一些“通用”代码。使用 SVN 我会这样做:
我的文件夹结构是:
现在使用 git + submodule + sparse checkout 这要复杂得多,当我添加子模块时,我有一个额外的子目录层;
现在我的文件夹结构是:
通过稀疏结帐,我可以确保只签出 src 文件夹,但与 svn:externals 解决方案相比,我仍然多一层(src):
通用代码有更好的解决方案吗?或者有什么方法可以清理它?我知道一切都会好起来的;就是不太干净。。。
git - 现有文件上的 Git 稀疏签出
我正在尝试对现有项目进行稀疏签出,并签出整个存储库。目前的结构是
数据库/htdocs/包括/
但我只想要 htdocs 目录中的 include 和某些文件夹。
以下内容也是如此:
我进入了
这在我的 git 版本 git 版本 1.7.12.4 (Apple Git-37) 的测试环境中有效,但在 git 版本 1.7.0 的 Ubuntu 机器上不起作用。
在我的服务器上,整个包含文件夹被删除,在 git pull 上它说一切都是最新的。
我在这里想念什么?
svn - 部分 SVN 结帐和更新取决于属性
是否可以使用 SVN 属性来标记编译和运行较大项目的一部分所需的文件/文件夹。例如“config1:used”“config2:unused”。我想做类似(伪命令)的事情:
我知道使用 svn 进行稀疏结帐,但是使用此功能似乎相当复杂。我已经阅读了按文件扩展名过滤的 svn checkout。但这并没有真正得到回答,而且是一样的。
我可以递归地从 svn 中获取所有属性,过滤并仅签出条件为真的文件。但这很慢。与正常结帐相比,更新将非常慢,因为我找不到如何仅获取 proplist 的更新。如果我检出单个文件,更新将无法正常工作。带有 --set-depth=exclude 选项的稀疏目录似乎会删除本地文件,但不会删除 .svn 目录中的数据。所以使用了大量的磁盘空间。