使用 Git 组织多个项目时出现问题

发布于 2024-10-14 21:25:58 字数 439 浏览 3 评论 0原文

我有这样的项目结构:

root
   |
   +-- SHARE
   +-- Project1
   +-- Project2
   +-- Project3

所有项目都引用项目共享。

所以我在每个文件夹中创建了 4 个存储库。 然后我尝试将 SHARE 作为子模块添加到 Project1,但我没有得到我想要的,因为 Git 将所有源文件从 SHARE 复制到了 Project1\SHARE。我不希望子模块 SHARE 将文件签出到文件夹 SHARE,该文件夹与 Project1 并行。

是否可以将 SHARE 作为 Project1 的子模块引用,而无需从 SHARE 复制源文件? 或者是否有更好的方法来告诉 Project1 的存储库它依赖于存储库 SHARE?

我正在使用带有 VS2010 和 Git 扩展的 Windows7。

I have this project structure:

root
   |
   +-- SHARE
   +-- Project1
   +-- Project2
   +-- Project3

All projects reference the project SHARE.

So I created 4 repos one in each folder.
Then I tried to add SHARE as a submodule to Project1, but I don't get what I want, because Git copied all source files from SHARE to Project1\SHARE. I wan't the submodule SHARE to checkout the files to the folder SHARE, which is parallel to Project1.

Is it possible to reference SHARE as a submodule for Project1 without copying the source files from SHARE?
Or is there a better way to tell the repo for Project1 that it depends on repo SHARE?

I'm using Windows7 with VS2010 and Git Extensions.

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

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

发布评论

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

评论(2

嘿嘿嘿 2024-10-21 21:25:58

子模块的要点是主存储库的版本决定了子模块的版本。如果您不需要此功能,您可能根本不需要搞乱子模块。

现在,如果需要此功能,那么您的结构就没有意义,因为不同的项目可能需要不同版本的 SHARE。这就是为什么建议将 SHARE 复制到每个存储库中,这样它们就不会在尝试获取所需的 SHARE 版本时发生冲突。

The point of submodules is that the version of the main repository determines the version of a submodule. If you don't need this feature, you probably do not need to mess with submodules at all.

Now, if this feature is desired, then your structure doesn't make sense, as different Projects might need different versions of SHARE. That's why it is suggested that SHARE is copied into every repository, so they do not clash trying to get versions of SHARE they want.

深海夜未眠 2024-10-21 21:25:58

如果您的所有项目都可以引用 SHARE 的相同 SHA1,并且所有都会受益于您在 SHARE 中所做的任何修改,那么您应该将所有 4 个目录(3 Projects、1 SHARE)声明为 root 中的子模块,这将是父存储库。

但这也意味着 Project1 本身不会有任何关于它需要的 SHARE 确切版本的记录。
因此,只有当所有 3 个项目都紧密耦合时,您的结构才有意义(您无法在不处理其他两个项目的情况下处理其中一个项目)。

If all of your projects can reference the same SHA1 of SHARE, and would all benefit from any modification you would do in SHARE, then you should declare all 4 directories (3 Projects, 1 SHARE) as submodule within root, which would be a parent repository.

But that also mean that Project1 alone wouldn't have any record of what exact version of SHARE it needs.
So your structure only make sense if all 3 Projects are tightly coupled (you cannot work on one without having to work on the other two).

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