我正在处理的软件项目最近从ClearCase迁移到Git.我仍在学习基础知识,所以一旦我更熟悉Git及其功能,这个问题可能会在以后解决.
我的问题是: Git是否为开发人员的机器提供了良好的工作流机制,无法连接到中央存储库(即没有网络连接)?
细节
我们的办公室(位置A)有一个集中的Git存储库/服务器.大多数开发人员都可以直接连接到服务器,无论是通过办公室的局域网还是通过VPN.此项目的安全策略不允许从LAN外部到服务器的任何直接ssh/https连接 - 在这种情况下,一切都必须通过VPN.
团队中的开发人员正在客户的工厂(位置C)进行现场工作.开发人员将在位置C处开发仅在离线状态下的开发机器,并且可以使用介质(CD或DVD)将数据传入和传出机器.开发人员需要在离线机器上有一两个代码,因为他将进行错误修复,为客户提供原型设计功能,并充当项目的前线代表.
开发人员还将在家中有一台机器(位置B),他可以使用VPN连接到位置A,并从中央仓库连接到推送/拉出.我们测试了这个,这很好用.
我们正在尝试确定是否可以使用DVD更新位置C的计算机上的存储库.目前的报告是大约1.6GB的源和3GB的第三方二进制文件(由于各个模块之间存在大量的互连,我们还没有打破它.这是一个拥有25年历史的传统研发代码库).在初始克隆之后,为了更新/拉取更改,我们是否需要将整个源刻录到磁盘,或者我们是否可以使用补丁/存档来提高其效率?如果可能的话,我想在位置C透明地维护计算机上的历史记录(我知道应用修补程序会对它进行提交,但我不相信它会为修补程序中的每个项目提取整个提交历史记录).
我们还需要朝着相反的方向前进(因此我希望保持历史).需要将错误修复/功能推送回中央存储库,导出数据的唯一方法是通过DVD.我们需要将整个存储库刻录到磁盘,还是只能通过差异来实现?在这种情况下,保持版本历史记录不太重要,但我希望尽可能保留它.
我们现在正在测试各种方法(Git只为我们活了大约3个工作日),所以我缺乏很多"我们尝试过的东西".我想看看是否有人这样做或做过类似的事情并收集工作流程,工具等的任何建议,以使这更容易.在理想的世界中,一旦我们在位置C设置了存储库,我希望通过CD/DVD向开发人员提供小的更新(只有自上次拉动后的更改集).
细节:Developer Machine将是Windows 7 x64,Central Repository是Atlassian Stash,团队通常使用SourceTree(但是开发人员正在学习Git的Bash命令以便真正理解它).我们对运行脚本持开放态度,
我确实看过这个问题,它暗示补丁文件是一种方法; 但是,要求是不同的.
我遇到了Ivy将大型(ish)工件上传到我们的内部工件服务器(Artifactory 3.9.2)的问题.当我们上传一个400MB的文件时,我们用完了Java堆空间而且它失败了(因此我们的CI构建失败了).我们一直在推动上限,但我们预计会有一些明显更大的工件(大小约为1GB),这将破坏我们稳定的大小.
我们在CentOS7环境中使用Ant 1.10,Ivy 2.4,OpenJSK 1.8.0.141.
这个问题已经被Ivy记录为IVY-1197但是它还没有在trunk构建中修复,所以我想把所描述的解决方法:
解决方法是当用例涉及将大文件上传到需要身份验证的站点时,总是将常春藤用于commons-httpclient,commons-codec和commons-logging
我想将其添加commons-httpclient, commons-codec, and commons-logging到Ivy类路径中,以便Ivy在上传工件期间使用这些.不幸的是,我正在努力使这项工作.说实话,我是Java世界的新手,类路径是一个外国概念; 我是一名C++开发人员,他自愿修复我们系统的这一遗留部分.
我们通过Ant调用常春藤任务.我们引入一个ivysettings.xml文件,其相关结构类似于:
<ivysettings>
<classpath file="${build-utils.basedir}/ivy.lib/commons-httpclient-3.1.jar"/>
<classpath file="${build-utils.basedir}/ivy.lib/commons-codec-1.10.jar"/>
<classpath file="${build-utils.basedir}/ivy.lib/commons-logging-1.2.jar"/>
</ivysettings>
Run Code Online (Sandbox Code Playgroud)
将ivysettings.xml通过在拉build-utils.xml是我们的组件中共享文件:
<project name="build-utils" xmlns:ivy="antlib:org.apache.ivy.ant">
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant">
<classpath>
<fileset dir="${build-utils.basedir}/ant.lib">
<include name="ivy*.jar"/>
</fileset>
</classpath>
</taskdef>
<ivy:settings file="${build-utils.basedir}/ivysettings.xml"/>
<target name="convert-POM-to-Ivy" > <!-- description="Convert a POM file to an Ivy file"; additionally verifies that we've pulled in Ivy correctly -->
<ivy:convertpom pomFile="pom.xml" ivyFile="ivyFileOut.xml" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
我们的ivy.xml每个组件都有一个非常简单的组件:
<ivy-module …Run Code Online (Sandbox Code Playgroud) 我正在尝试彻底检查项目的构建过程.我们有去年从Visual Studio 2005升级到Visual Studio 2013的~330个Visual C++项目.我想利用MSBuild来改善我们现在的串行构建脚本的构建时间.我已经完成了粗略的第一遍,并将发布版本的构建时间从大约2小时减少到大约20分钟.在执行此操作的过程中,我正在将许多常见项目设置合并到.props文件中.在这样做的过程中,我遇到了绊脚石.
我希望将Platform Toolset从一个VSProps文件继承到包含它的所有项目.在我创建的新.props文件的顶部,我提出以下内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="Configuration">
<PlatformToolSet>v120</PlatformToolSet>
</PropertyGroup>
<PropertyGroup Label="UserMacros" />
Run Code Online (Sandbox Code Playgroud)
然后我<PlatformToolSet>v120</PlatformToolset>从单个项目文件中删除了相应的.
唉,事情已经开始走下坡路了.项目(在Visual Studio 2013中)现在在解决方案资源管理器中说出类似的内容CoreGeometry (Visual Studio 2010),项目本身似乎想要引用v100平台工具集.当我建立时,它然后抱怨我:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(362,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version number.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(341,5): error MSB6006: "CL.exe" exited with code -1073741515.
我能够解决这个问题的唯一方法是在.vcxproj上手动设置PlatformToolset,这并不可怕,我只是有点恼火,其他所有属性似乎都继承,但PlatformToolset却没有.
我的问题是:我可以使用.props文件将公共PlatformToolSet继承到没有指定平台工具集的.vcxproj中吗?
第二个问题:我是否应该以这种方式搞乱平台工具集?或者我为自己设置维护噩梦的风险?