相关疑难解决方法(0)

将(移动)子目录分离到单独的Git存储库中

我有一个Git存储库,其中包含许多子目录.现在我发现其中一个子目录与另一个子目录无关,应该分离到一个单独的存储库.

如何在将文件的历史记录保存在子目录中的同时执行此操作?

我想我可以制作一个克隆并删除每个克隆的不需要的部分,但我想这会给我一个完整的树,当检查旧版本等.这可能是可以接受的,但我宁愿能够假装两个存储库没有共享历史记录.

为了说清楚,我有以下结构:

XYZ/
    .git/
    XY1/
    ABC/
    XY2/
Run Code Online (Sandbox Code Playgroud)

但我想这样做:

XYZ/
    .git/
    XY1/
    XY2/
ABC/
    .git/
    ABC/
Run Code Online (Sandbox Code Playgroud)

git git-filter-branch git-subtree

1712
推荐指数
15
解决办法
25万
查看次数

git子模块和子树之间的差异

使用git子模块和子树之间有什么概念上的区别?

每种情况的典型情况是什么?

git git-submodules git-subtree

269
推荐指数
6
解决办法
7万
查看次数

在Visual Studio中使用Git的最佳实践?

我正在考虑在工作中从Subversion迁移到Git,并希望了解在Windows上设置Git的最佳方法,以及Visual Studio和Git组合可能产生的任何问题.

目前的设置是TortoiseSVN,Visual Studio 2008和AnkhSVN for .NET应用程序.替换可能是Git Extensions.

有关存储库布局的建议将特别受到赞赏.我们所有的解决方案都使用多个项目,现在我们需要在应用程序之间共享许多自定义程序集.我们的Subversion存储库的当前布局肯定不是最佳的.

更新:我现在使用Git Extensions迁移到Git,它运行得很好.共享代码和资产位于不同的存储库中,并用作子模块.当我开始时,我发现子模块有点混乱,这篇文章非常有帮助.

.net git visual-studio

31
推荐指数
2
解决办法
1万
查看次数

使用Git的项目中的项目

如何设置Git项目以包含其他项目?

例如.我正在开发一个在线地图应用程序.我们开发了一个GPS工具和SF装备.我们同时开发了一个Python Geomapping脚本以及一个不同的关注点(只关心地理映射).我们自己的核心文件将两者结合在一起,并为我们需要的应用程序构建它们.

每个项目必须独立存在 - 对GPS感兴趣的人只对GPS感兴趣 - 但包含所有其他项目的"父"项目必须作为项目可访问.

我花了一些时间试图理解子模块,但它们似乎对所需的东西有太多的独立性.

此外,如果可能的话,如果每个项目都包含一个或两个重叠的脚本,那就太好了.一个Git项目是否可以包含一个不属于其"root"的文件,这样当任何一个团队更新此文件时,两者都可以受益?

这对Git有用吗?Mercurial?主持人(GitHub,Gitorious)是否重要?

我有想法为'父'使用Subversion - 忽略.git文件夹,并使用Gi​​t作为项目(忽略.svn文件夹) - 但这只是最后的手段.

编辑:

解释为什么我不想要子模块:

  1. 用户下载时,zip不包含子模块(此处此处).甚至当合作者试图设置项目时也是如此.这是一个节目塞子.
  2. 子模块被冻结 - 它们(不容易)获取正在指向的项目的最新版本.
  3. 其他原因如下面的奇妙答案和NoPugs的独白中所指出的那样.

子树合并(由Paul在下面介绍)不会这样做:很难从合并到的项目中更新[子树]源,并且该源必须位于"root"文件夹之外.该项目.作为一个Web应用程序,所有页面内部链接到其中的文件夹至关重要,并且测试和更新将直接在该文件夹中完成.(希望这对其他人来说是明确和有用的.)

仍在研究建立"远程分支",但其他想法仍然受欢迎.

git version-control git-submodules

23
推荐指数
1
解决办法
1万
查看次数

什么是组件驱动开发?

组件驱动开发术语开始被广泛使用,尤其是 与控制反转有关.

  1. 它是什么?
  2. 它解决了什么问题?
  3. 什么时候适当,什么时候不适合?

paradigms components ioc-container inversion-of-control

19
推荐指数
5
解决办法
1万
查看次数

何时将大型Git存储库拆分为较小的存储库?

我正在努力从SVN迁移到Git.我已经习惯git-svn将历史记录放到一个git存储库中,我已经知道如何使用git-subtree将该存储库拆分为较小的存储库.这个问题不是关于如何进行迁移,而是关于何时拆分以及何时不进行拆分.

我想拆分大型存储库,因为某些目录是自包含的库,也与其他项目共享.以前svn checkout是在库上完成的,无需签出整个项目.在所有这些过程中,我发现可能有数十个目录在自己的存储库中是有意义的,因为它们是1)独立的,2)跨项目共享.

一旦你获得了一些git存储库,使用一个工具可以更容易地处理许多存储库似乎是明智的.一些例子是谷歌的repo,git submodules,git subtree,并创建自定义脚本(看来铬做到这一点).我已经探索了这些不同的方法,并了解如何使用它们.

所以问题是关于从颠覆过渡的方向.

我是否应该尝试坚持使用一个大型git存储库,只在绝对必要时才将其拆分成更小的部分,还是应该将其拆分为数十个或可能数百个较小的存储库? 哪个更容易使用?还有其他我错过的解决方案吗?如果使用多个存储库,我应该使用哪个工具?哪些因素会让某人偏爱另一种方法呢?

注意:需要在Windows,MacOS和Linux上签出源代码.

git version-control repository git-submodules git-subtree

16
推荐指数
1
解决办法
2070
查看次数

在多个客户的Web项目中使用git

有没有更好的建议来控制Web项目,在几个客户项目中使用git进行小的随机更新?

我想使用git进行Web项目的版本控制.与几乎所有其他提案的主要区别在于,这是一个使用HTML,JavaScript和一些PHP文件的Web项目 - 没有中央库被一个或多个程序使用,就像在典型的Linux软件包中一样.

我所有不同的Web项目都是针对不同的客户,基于相同的平台文件,我估计80%的文件是相同的(称为平台),20%是针对不同的客户进行修改以满足他们的需求.这里的问题是,我不知道我们需要客户更新哪些文件 - 详细地说每个客户都不同.

最好的方法是将平台特定文件保存在一个目录中,并将这些文件与客户特定文件重叠在另一个目录中.为了用git来解决这个问题,到目前为止我没有发现什

  • git的子模块(如建议在这里)通常设计成具有供应商开发库的知情人士谁连接它的程序.因此问题是平台和客户文件位于不同的目录中,因此我必须在部署期间将它们混合以创建Web服务器的文件.此外,我必须手动保持目录树同步,这对于10个目录深度层次结构来说将是很多工作.一般来说,很多帖子抱怨使用子模块的大量管理工作,看起来有点矫枉过正.
  • git子树(就像这里提出的)似乎比子模块更简单,但是遇到了不同目录的相同问题,所以我还需要保持dir结构同步并在部署期间混合文件.此外,很难将平台变更从客户回购中推回.
  • GitSlave(就像这里提到的那样)我不确定这对我是否有益.它允许保持几个git repos同步,也许它有助于同步平台的dir结构,但我无法相信
  • 在不同的目录平台和客户文件之间重构(像结果这样的讨论)我觉得这是根本不可能在我的客户的情况,并通过网络项目使用的技术.对于一个客户,此页面需要更新,另一个页面需要更新.即使在引入PHP框架时,客户特定的更改也会分布在整个树中.
  • 签出(像还提出在最近发帖讨论)这看起来很简单的和有希望的,有缺点,即所有客户提供特定的文件是git的外部(这样的外部版本控制).此外,如果文件在平台和客户中更新,git pull会失败 - 它会中止,因此这是不可用的
  • 正如我所知,供应商分支(如此处重新开始),分支机构将被合并回来,而不是针对我的客户特定补丁.这些分支将始终是开放的,仅在从平台(主)向客户更新后合并.这将导致一个巨大的回购保留所有客户和平台信息 - 而不是处理回购的git方式.
  • 在部署期间混合.因此,一种非常务实的方法是将平台文件保存在一个仓库中,客户文件也保存在专用的仓库中.在将文件部署到Web服务器期间,它可以首先编写所有平台文件,而不是通过特定于平台的文件覆盖其中一些文件.混合发生在Web服务器目录中很晚.这也有一个缺点,即每个客户的目录结构必须手动保持与平台结构同步 - 否则部署将过于复杂.

这里最好的方法是什么?

git project web-deployment

14
推荐指数
1
解决办法
1755
查看次数

将遗留代码库从cvs转移到分布式存储库(例如git或mercurial).初始存储库设计所需的建议

介绍和背景

我们正在改变源代码控制系统,我们目前正在评估git和mercurial.总代码库大约有600万行代码,因此不是很大,也不是很小.

首先让我简单介绍一下当前存储库设计的外观.

我们有一个完整代码库的基本文件夹,在该级别下面有几个不同的上下文中使用的各种模块.例如,"dllproject1"和"dllproject2"可以看作完全独立的项目.

我们正在开发的软件是我们称之为配置器的软件,可以根据不同的客户需求进行无休止的定制.总共我们可能有50个不同的版本.但是,他们有一个共同点.它们共享一些必需的模块(mandatory_module1 ..).这些文件夹基本上包含内核/核心代码和公共语言资源等.然后,所有自定义都可以是其他模块(module1 ..)之间的任何组合.

由于我们目前正在使用cvs,因此我们在CVSROOT/modules文件中添加了别名.他们可能看起来像:

core –a mandatory_module1 mandatory_module2 mandatory_module3
project_x –a module1 module3 module5 core
Run Code Online (Sandbox Code Playgroud)

因此,如果有人决定使用project_x,他/她可以快速检查所需的模块:

base>cvs co project_x
Run Code Online (Sandbox Code Playgroud)

问题

直观地说,将基本文件夹作为单个存储库感觉是错误的.作为程序员,您应该能够查看当前正在使用的项目所需的确切代码子集.你对此有何看法?

另一方面,将每个模块放在不同的存储库中感觉更为正确.但这使得程序员更难以检查出他们需要的模块.您应该能够通过一个命令执行此操作.所以我的问题是:在git/mercurial中是否有类似的方法来定义别名?

任何其他问题,建议和指示都非常欢迎!

PS.我已经搜索了类似的问题,但并不觉得他们中的任何一个都100%适用于我的情况.

git cvs mercurial dvcs

12
推荐指数
2
解决办法
4246
查看次数

ClearCase UCM - 使用组件的最佳实践

我们正在将一个相当大的代码库从VSS迁移到Clearcase w\UCM,并且正在考虑将我们的源代码组织到一个项目中的一个或多个组件中.我们应该记住哪些最佳实践\潜在的陷阱?

源被组织成层(数据层,业务层,GUI层).团队相当小,开发人员倾向于拥有代码库的某一层,并且由于并行开发工作,我们预计会有相当多的分支.

clearcase

8
推荐指数
1
解决办法
5938
查看次数

你如何组织你的代码库?

我很想知道人们如何组织他们的代码库,特别是关于可重用组件.我在下面以OO术语进行讨论,但我对如何组织其他类型语言的库感兴趣.

例如:

  • 您是否适合所有类课程项目,或者您更喜欢将所有内容保存在单个项目中?
  • 您是否重用了预先构建的DLL,或者您是否在当前工作中包含以前项目中的各个类?如果是个别课程,您是否在项目之间共享它们以确保所有课程都保持最新或允许分支?
  • 你的可重用元素有多大?他们有多关注?他们是如何关注的?
  • 您通过首选实践获得了多大程度的重用?

等等

编辑

我不是在寻找具体的指导,我只是对人们的想法和实践感兴趣.我特别感兴趣的是在不同项目之间重用代码,而不是在单个项目中.(不幸的是,这里使用"项目"具有误导性 - 我的意思是在为客户进行的实际项目之间重用,而不是Visual Studio意义上的项目.)

organization reusability package-design

7
推荐指数
1
解决办法
1621
查看次数

您是否对版本控制或整个项目或两者进行版本控制?

好的,所以我有一个Django项目.我想知道我是否应该将每个应用程序放在自己的git存储库中,或者将整个项目放入git存储库更好,或者我是否应该为每个应用程序都有一个git repo以及git repo for该项目?

谢谢.

git django version-control

7
推荐指数
1
解决办法
2026
查看次数

模块化Maven项目和多个Git存储库

我已将我一直在编写的代码从单个maven项目分离到多个maven项目.我最终得到的项目可以被未来的项目使用,它们几乎都是库.到目前为止,我一直在使用单个Git存储库,因为所有内容都在一个项目中.但是在模块化之后,我想知道是否应该为每个Maven项目创建一个Git存储库.我认为这是正确的做法,但我想听听其他人对此的看法.既然项目可以作为独立组件工作,那么它们也值得拥有自己的Git存储库?另一种选择是为我目前正在处理的项目开发同一Git存储库中的所有项目.

java git java-ee maven

6
推荐指数
1
解决办法
1765
查看次数