git-bundle 仅包含我的存储库中的部分文件

发布于 2024-11-01 02:17:28 字数 440 浏览 3 评论 0 原文

我有一个为我的应用程序编写的库,但现在想在我公司要编写的所有应用程序中使用它。该应用程序和库都位于 git 存储库(存储库 A)中,其中包含我非常想保留的历史记录。该库位于它自己的子文件夹中。

我还有第二个存储库(存储库 B),其中包含一些其他共享代码 - 这在我们编写的应用程序中用作 git 子模块。

我想从存储库 A 中获取库子文件夹并将其放入存储库 B 中而不丢失其历史记录。

我查看了 git-bundle ,但似乎无法指定文件,只能指定分支。

我还考虑过复制存储库并删除我不需要的文件(像这样< /a>),但库文件以不同的名称和不同的文件夹开始,所以我不确定它是如何工作的。

有谁知道实现此目的的最佳方法吗?

I have a library that I wrote for my app but now want to use it in all apps my company is going to write. The app and library both live in a git repository (repository A) with history that I really would like to preserve. The library sits in it's own subfolder.

I also have a second repository (repository B) that contains some other shared code - this is used as a git-submodule in apps that we write.

I would like to take the libraries subfolder from repository A and place it into repository B without losing it's history.

I've looked at git-bundle but don't seem to be able to specify files, only branches.

I've also looked at copying the repository and removing the files I don't want (like this) but the libraries files started out with different names and in different folders so I'm just not sure how that would work.

Does anyone have any ideas of the best way that this could be done?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原来分手还会想你 2024-11-08 02:17:28

请注意,使用 Git 2.36(2022 年第二季度,十一年后),git bundle 本身将支持您的用例:捆绑文件格式得到扩展,以允许部分捆绑,并按照您在制作部分/惰性克隆时给出的类似标准进行过滤。

请参阅 提交 86fdd94提交 4f39eb0, 提交f18b512提交 c4ea513提交 105c6f1, 提交 f0d2f84提交 3e0370a提交09d4a79提交 7940941提交 ffaa137 , 提交 4a4c3f9, 提交 1f52cdf(2022 年 3 月 9 日),作者:Derrick Stolee (derrickstolee
请参阅 提交 4f33a63(2022 年 3 月 9 日),作者:Ævar Arnfjörð Bjarmason (avar)
(由 Junio C Hamano -- gitster -- 合并于 提交 7391ecd,2022 年 3 月 21 日)

bundle:创建过滤的bundle

签字人:Derrick Stolee

之前的更改允许 Git 解析具有“过滤”功能的包。
现在,教 Git 使用此选项创建捆绑包。

需要对代码进行一些重新排列才能将选项解析到正确的位置。
现在我们可能需要功能(新的哈希算法或对象过滤器)的原因有两个,以便将其拉出到我们可以同时检查这两种功能的地方。

--filter 选项被解析为 setup_revisions() 的一部分,但它也需要 --objects 标志。< br>
'git bundle'(man)因为它创建一个包文件行走对象,但也有一个行走在修订范围内,只期望提交。
通过在调用 setup_revisions() 之前设置“revs.tree_objects”和“revs.blob_objects”来进行此解析。



并且,仍然使用 Git 2.36(2022 年第 2 季度):

请参阅提交 5cb2827(2022 年 3 月 28 日) )作者:Ævar Arnfjörð Bjarmason (avar)
请参阅 提交 8ba221e提交 017303e, 提交831ee25提交80f6de4提交 cc91044(2022 年 3 月 22 日),作者 Derrick Stolee (derrickstolee)
(由 Junio C Hamano -- gitster -- 合并于 提交 3928e90,2022 年 4 月 4 日)

bundle:将功能移至 ' 的末尾验证'

签字人:Derrick Stolee

105c6f1 中添加了“过滤器”功能(“bundle” :解析过滤器功能”,2022-03-09,Git v2.36.0-rc0 -- 合并列于第13批)中,但已添加'git 包验证中的一个奇怪的地方'(man) 输出。

此显示输出的测试如下所示:

该捆绑包包含以下 2 个参考:
<提交1> <参考1>
<提交2> <参考2>
该捆绑包使用此过滤器:blob:none
该包记录了完整的历史。

如果我们有一个包含边界提交而不是完整历史记录的瘦包,这看起来很奇怪:

该捆绑包包含以下 2 个参考:
<提交1> <参考1>
<提交2> <参考2>
该捆绑包使用此过滤器:blob:none
该捆绑包需要以下 2 个参考:
<提交3>
<提交4>

尖端引用和边界引用之间的这种分离是不幸的。
将过滤器功能输出移至输出末尾。
更新文档以匹配。

git bundle 现在包含在其 手册页

然后,“git bundle”会打印缺失提交的列表(如果有)。
最后,有关附加功能的信息,例如“对象
打印过滤器”。

退出代码为零表示成功,但会
如果捆绑文件无效,则为非零。

Note that, with Git 2.36 (Q2 2022, eleven years later), git bundle itself will support your use case: the bundle file format gets extended to allow a partial bundle, filtered by similar criteria you would give when making a partial/lazy clone.

See commit 86fdd94, commit 4f39eb0, commit f18b512, commit c4ea513, commit 105c6f1, commit f0d2f84, commit 3e0370a, commit 09d4a79, commit 7940941, commit ffaa137, commit 4a4c3f9, commit 1f52cdf (09 Mar 2022) by Derrick Stolee (derrickstolee).
See commit 4f33a63 (09 Mar 2022) by Ævar Arnfjörð Bjarmason (avar).
(Merged by Junio C Hamano -- gitster -- in commit 7391ecd, 21 Mar 2022)

bundle: create filtered bundles

Signed-off-by: Derrick Stolee

A previous change allowed Git to parse bundles with the 'filter' capability.
Now, teach Git to create bundles with this option.

Some rearranging of code is required to get the option parsing in the correct spot.
There are now two reasons why we might need capabilities (a new hash algorithm or an object filter) so that is pulled out into a place where we can check both at the same time.

The --filter option is parsed as part of setup_revisions(), but it expected the --objects flag, too.
That flag is somewhat implied by 'git bundle'(man) because it creates a pack-file walking objects, but there is also a walk that walks the revision range expecting only commits.
Make this parsing work by setting 'revs.tree_objects' and 'revs.blob_objects' before the call to setup_revisions().


And, still with Git 2.36 (Q2 2022):

See commit 5cb2827 (28 Mar 2022) by Ævar Arnfjörð Bjarmason (avar).
See commit 8ba221e, commit 017303e, commit 831ee25, commit 80f6de4, commit cc91044 (22 Mar 2022) by Derrick Stolee (derrickstolee).
(Merged by Junio C Hamano -- gitster -- in commit 3928e90, 04 Apr 2022)

bundle: move capabilities to end of 'verify'

Signed-off-by: Derrick Stolee

The 'filter' capability was added in 105c6f1 ("bundle: parse filter capability", 2022-03-09, Git v2.36.0-rc0 -- merge listed in batch #13), but was added in a strange place in the 'git bundle verify'(man) output.

The tests for this show output like the following:

The bundle contains these 2 refs:
<COMMIT1> <REF1>
<COMMIT2> <REF2>
The bundle uses this filter: blob:none
The bundle records a complete history.

This looks very odd if we have a thin bundle that contains boundary commits instead of a complete history:

The bundle contains these 2 refs:
<COMMIT1> <REF1>
<COMMIT2> <REF2>
The bundle uses this filter: blob:none
The bundle requires these 2 refs:
<COMMIT3>
<COMMIT4>

This separation between tip refs and boundary refs is unfortunate.
Move the filter capability output to the end of the output.
Update the documentation to match.

git bundle now includes in its man page:

Then, 'git bundle' prints a list of missing commits, if any.
Finally, information about additional capabilities, such as "object
filter", is printed.

The exit code is zero for success, but will
be nonzero if the bundle file is invalid.

酷到爆炸 2024-11-08 02:17:28

您正在寻找git filter-branch。请参阅问题和答案(请务必注意标记为“编辑”的附加部分', 也)。

You're looking for git filter-branch. See this question and answer (be sure to note the additional section marked 'edit', too).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文