在git和git-hub中处理两个独立但非常相似的代码库的最佳方法是什么?
我有一个小型shell脚本项目的git存储库.它只有2或3个代码文件,我经常在一个文件中工作.虽然我最初的目标是服务于我的特定目标,但我认为它对其他人来说更有用.我编写了一般用例版本,然后将其修改为特定于我的特定目标.在特定的版本中,我可能会修改变量,输入密码,切换一些代码的顺序,取出for循环......无论如何.
我尝试了两种不同的方法,并且都没有像我认为的那样最佳:
我还看到了如何将两个单独但相似的代码库合并为一个SVN代表?那是关于SVN的.因为我不知道SVN,所以我很难跟随.我认为这是一个不同的问题,因为他并没有试图公开这个代码的一个版本.
具体来说,问题出现在:
大多数情况下,我的问题是想知道如何在git的范围内做到这一点.但是,它也可能影响如何与github进行交互.我的通用版本在github上.专业版不应该在github上.我想,我的分支方法上面没有推两个分支,如果我很小心......但我总是不确定.无论哪种方式,解决方案应该允许有一个公共版本,一个版本只是本地保存...即使它有点复杂或需要小心.
基于这个问题,我尝试使用<codebase>定位外部组件.现在,当我运行该程序时,我收到一条错误消息,指出私有程序集位于appbase之外.我该如何解决这个问题?我看到的一个建议就是签署集会.我做了这个,但后来我的程序找不到程序集.当我取消签名时,我收到outside the appbase错误.如何加载位于其他地方使用<codebase>而不是安装到GAC的程序集?(探测也不起作用,似乎它仍然必须存在于应用程序文件夹中)我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NGameHost"
culture="neutral" />
<codeBase version="1.0.0.0"
href="C:/Program Files/NetworkGame3/api/NGameHost.exe"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud) c# codebase console-application .net-assembly assembly-signing
我接手了一个以前针对WP 7.1平台的Windows Phone项目,随着最近宣布的新平台,它也应该针对WP 8.
我的VS 2010解决方案包含几个项目(数据访问,模型,测试和WP7客户端应用程序),我正在徘徊在如何包含对WP8的支持.
我必须注意,由于使用了Toolkit控件和专门针对WP7.1的其他第三方库,代码库与WP8不兼容.
Visual Studio版本还有另一个问题 - WP7.1可以与VS 2010一起使用,但WP8需要VS 2012. 我应该将整个代码库移动到VS 2012吗?
关于如何以最有意义的方式组织代码库以避免重复和可能的痛苦维护的任何好建议?
我在考虑一个解决方案 - 多个项目与多个解决方案 - 可重用项目方法.代码重复(如两个单独的文件夹/解决方案)应该是最不可能的方法(回退).
我打算在我的.NET 3.5 Windows应用程序的bin文件夹以外的文件夹中保留几个dll.我不确定如何使用codebase元素或探测元素来指定正确的路径.这就是我现在在app.config文件中所拥有的,
<runtime>
<assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="CommonLib" publicKeyToken="f0b5026b59d5645e"
culture="neutral" />
<codeBase version="1.0.0.0" href="SharedFolder\CommonLib.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
我明白了,无法在运行时加载程序集错误.看来我在配置文件中做错了.SharedFolder是添加到项目的文件夹.
问题:
一个庞大的代码库,跨越数百万SLoC,由大量的第二/第三速率程序员(大多数人并不关心)维护(支持/主动增强等).几十年前,很少有智能人员使用下面使用CVS的包装器,当前这一代开发人员正在使用该系统(其中90%的人没有直接使用CVS,或者听说过/使用过另一个命令行源控制系统) .
效果:
使用CVS和跨多个模块的多个团队,不可避免地=> CVS分支合并到主干.这将是一种以最虔诚和仪式可能的方式实践的活动.[=>蛮力; 计划好几个星期,涉及十几个人2/4天.手动处理数百个(有时数千个)源. 有趣的是,涉及的人不是修复的原始所有者,他们只是通过检查差异; 真的,不是在开玩笑!这导致库/模块/功能的完整性存在很多不一致性,并且在这些合并期间花费了太多精力来纠正由于回归导致的缺陷.
而现在,问题是:
什么替代源控制系统可以带来一些积极的变化,并改善程序员/经理和环境中的其他人的生活?
由于身边的每一个人似乎都醉KoolAid(同唱"这 - 是 - 如何-事情,是全熟,处处"),甚至没有给出关于寻找一个替代一想,是时候有人做到这一点.但考虑到那些使用该系统的人,应牢记以下几个方面.
所以,请建议.有希望&&出路吗?:) 我很确定像git这样的东西会被彻底拒绝(他们相信"git只适用于聪明的人")
编辑:我也考虑过Mercurial和BitKeeper,并向链接人员提及过它.希望最好的!谢谢!:)
关于目标和项目概念的XCode文档很有帮助,但我仍然不确定在我的情况下使用的最佳实践.
我在一个SVN存储库中有一个现有的代码库(用于Windows和iOS),它刚刚从一个测试应用程序重构为一个中央库和一个应用程序.这个想法是随着时间的推移,更多应用程序将使用此中央库
XCode项目将一组源文件映射到一个或多个目标,因此我可以为我的整个代码库创建一个项目,为库创建一个目标,为每个应用程序创建一个目标.但是每个应用程序显然都有自己的代码,因此将所有源代码以这种方式放入单个项目似乎有点笨拙.
或者,我可以拥有一个包含多个项目的工作区,每个项目都有一个目标.这更像是我为Windows构建设置的东西,其中Visual Studio解决方案对应于Xcode工作区,VC++项目将整齐地映射XCode项目的组织方式.
但在这种情况下是否存在"正常"/预期的做法,我应该尝试遵循一些非官方标准,以便其他开发人员不要混淆?
我有一个相当复杂的数据类型和记录结构,通过查看不熟悉代码库的人的生产代码并不容易理解。
为了理解它,我创建了这种具有两个优点的虚拟函数:1. 它们在编译时被检查 2. 它们作为某种文档,展示数据类型的整体结构如何和记录混合在一起:
-- benefit 1: a newcomer can quickly make sense of the type system
-- benefit 2: easier to keep track of how the types evolve because of compile-time checking
exampleValue1 :: ApiResponseContent
exampleValue1 = ApiOnlineResponseContent [
OnlineResultRow (EntityId 10) [Just (FvInt 1), Just (FvFloat 1.5), Nothing],
OnlineResultRow (EntityId 20) [Just (FvInt 2), Nothing, Just (FvBool True)]
]
Run Code Online (Sandbox Code Playgroud)
唯一让我有点困扰的是,他们觉得放在生产代码中有点尴尬,因为它们显然是死代码。然而,它们也不是测试,它们只是编译时检查的示例,说明如何从复杂的嵌套类型将值组合在一起。因此,它们显然不属于生产代码,但也不完全属于测试。
拥有这种编译时示例是常见的做法吗?它们应该放在代码库中的什么位置?
我有两个项目,每个项目都有大量的代码库。我想运行一个工具来浏览每个项目中的所有文件,并显示项目中的哪些文件具有相似的代码。我什至不确定是否存在这样的东西,但我记得在学校时,老师们有一个工具,他们在多个学生的所有代码上运行,以识别他们的代码有多相似(以抓住作弊者)。
所以我正在使用这个巨大的代码库,并意识到其中一个结构缺少一个重要的领域.我尽可能密切地查看代码(使用结构)并得出结论,添加额外的字段不会破坏它.
关于我可以搞砸的任何想法?
另外:欢迎设计建议 - 我能做到这一点的最佳方式是什么?
例如(如果我不清楚):
typedef struct foo
{
int a;
int b;
}
foo;
Run Code Online (Sandbox Code Playgroud)
现在是:
typedef struct foo
{
int a;
int b;
int c;
}
foo;
Run Code Online (Sandbox Code Playgroud) 我目前正在学习RMI.
我真的不明白代码库的概念.我读过的每篇论文都暗示,调用Remote对象的客户端可以从代码库加载Method定义.现在问题是:我不需要在类路径中使用描述/接口吗?如果我在运行时只知道它们,我如何调用远程对象上的方法?这甚至不会编译.
我完全忽略了这一点吗?那么代码库到底有什么意义呢?提供代码库似乎需要很多额外的工作和要求
谢谢