2013-02-03 37 views
0

首先,我们所有的项目都是.Net C#项目。GitHub仓库和本地开发结构

我需要一些建议,以设置我的本地和存储库结构的最佳方式。

我们有一个主要项目作为我们所有项目使用的核心库。我不一定希望拥有一个具有多个项目的存储库,但我确实希望其他项目能够访问主库的项目。为了组织的目的,我希望每个项目都在自己的存储库中。

我有一个想法,我应该在我的本地系统上做到这一点,但是我想在开始设置我的项目之前获得社区意见。

更新

所以类似于Bradley建议我用类似这样的结构去:

All Projects Folder 
    Core Project 
    Another Project 
    Yet another Project 

使用GitHub for Windows可以使用Clone To功能将您的本地存储库中的主要项目夹。因此,在本例中,我将从GitHub for Windows中选择Remote Repository,右键单击要克隆的远程存储库并选择Clone To。我会选择“所有项目文件夹”来放置我的代码。这将为您创建文件夹和项目结构。然后,其他项目可以通过使用该结构内的相对路径来引用对方。我发现在Visual Studio 2012中使用Git Source Provider也可以帮助您查看项目之间的所有未决更改。

回答

1

假设您要将代码分成多个存储库,将一个存储库作为另一个存储库的依赖关系的一种方法是使用git submodules

我个人发现子模块在日常使用中有点痛苦。

结果(例如,git checkout不会自动切换分支时更新子模块过于频繁,开发商已经在不经意间增加了一切,等前回滚一个子模块被忘记git submodule update),我们更喜欢配置的“惯例“方法,并简单地将所有必需的存储库复制为彼此的同胞。在更改两个回购协议时,您只需承诺并推送两个回购协议,并假定其他开发人员正在跟踪两个回购协议中的master分支,并将同时撤消这两个分支。

写一个bash脚本或批处理文件很容易,它可以在新机器上设置它,或者在一台现有机器上立即更新所有回购。

如需更详细的示例,请参阅我的Sharing Code across Projects博客文章。

+0

我看着子模块,但认同它们并不理想。在我看到您的帖子之前,我最终以共享代码跨项目链接的方式表达了相同的想法。所以,我会给你道具。 – DDiVita

1

你可以从这个主项目中获得create and publish a NuGet package,然后让其他项目简单地安装这个NuGet。这样其他人也可以在他们的应用程序中使用这个常见的NuGet。

+0

我喜欢这个想法,但如果我们需要在其他项目中工作时添加或更新核心,我们会失去这种能力,对吗? – DDiVita