使用 Fossil CVS 管理常见组件
我是一名 Fossil(和 CVS 配置)新手,尝试为 Delphi 项目创建和管理一组分布式 Fossil 存储库。
我的开发计算机上有以下目录树:
Projects
Some Project
Delphi Components
LookupListView
Some Client
Some Project For Client
Some Other Project For Client
Source Code
Project Resources
Project Database
我正在设置 Fossil 版本控制,以便版本控制和共享 Projects\Some Client\Some Other Project For Client\Source Code,其中包含数据库项目的 Delphi 2010 源代码。
该项目使用 Projects\Delphi Components\LookupListView,它是一个 Delphi 组件。我需要将此代码包含在我的项目的版本控制系统中。理论上,我将来也需要将它包含在其他化石存储库中。
如果我在源代码或其他客户项目级别创建 Fossil 存储库,我无法将高于该级别的任何代码添加到我的存储库中。处理这个问题的正确方法是什么?我想到的两个解决方案是
1) 为 LookupListView 创建一个单独的存储库,并确保每个使用引用该存储库的项目的存储库的人都“知道”他们也必须获取该项目的当前版本。这似乎违背了通过单次签出即可获得项目的完整当前版本的目的。由于该项目中存在其他常见组件依赖关系,因此该问题被放大。
2) 在 Projects 目录中建立我的 Fossil 存储库,以便我可以签入各个子文件夹中的文件。在我看来,这在添加时涉及大量额外的路径输入,并且还将我的目录结构(Some Client\Some Other Project For Client\Source)强加给存储库的其他用户 - 在这种情况下,实际的客户。
任何建议表示赞赏。
I'm a Fossil (and CVS configuration) novice attempting to create and manage a set of distributed Fossil repositories for a Delphi project.
I have the following directory tree on my development machine:
Projects
Some Project
Delphi Components
LookupListView
Some Client
Some Project For Client
Some Other Project For Client
Source Code
Project Resources
Project Database
I am setting up Fossil version control in order to version and share Projects\Some Client\Some Other Project For Client\Source Code, which contains Delphi 2010 source for a database project.
This project makes use of Projects\Delphi Components\LookupListView which is a Delphi component. I need this code to be included in the versioning system for my project. I will, in theory, need to include it in other Fossil repositories in the future, as well.
If I create my Fossil repository at the Source Code or Some Other Project For Client level, I cannot add any code above that level to my repository. What is the proper way to deal with this? The two solutions that occur to me are
1) Creating a separate repository for LookupListView and make sure that everyone who uses a repository for a project that references it "knows" that they must also get the current version of this project as well. This seems to defeat the purpose of being able to obtain a complete, current version of the project with a single checkout. The problem is magnified because there are other common component dependencies in this project.
2) Establishing my Fossil repository in the Projects directory, so I can check in files from various subfolders. This seems to me to involve an awful lot of extra path-typing when doing adds, and also to impose my directory structure (Some Client\Some Other Project For Client\Source) on the other users of the repository -- in this case, the actual client.
Any suggestions appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我使用 Git,但我的方法可以应用于您的情况。
我的所有组件文件夹都有一个存储库。这使我能够仅用很少的控制台命令来获取所有这些内容(如果我重新安装操作系统或转到另一台计算机等)。
另外,我的每个项目都有一个存储库。如果某些项目使用第 3 方控件,我会创建“组件”子文件夹并执行符号链接(连接) 每个组件集。
这种方法有一些缺点(当您“返回”某个项目的提交历史记录时,组件也可以被修改。如果许多项目使用相同的组件,这可能会导致一些麻烦)。但我还没有遇到任何问题:)
I use Git, but my approach can be applied in your situation.
I have one repository for all my components folder. This gives me an ability to get all of them with only few console commands (in case when I reinstall my OS or go to another computer etc.).
Also I have one repository per each of my projects. If some project uses 3rd party controls I create "components" sub-folder and do symbolic links (junctions) of every components set.
This approach have some disadvantages (when you "go back" in commits history of some project, components can be modified too. And if many projects are using same components this could cause some troubles). But I had no issues yet :)