我的一位同事对PerForce的可能性感到非常兴奋(我们基本上需要有能力在逻辑上对补丁和更改进行分组,并且获得SCM的本地支持会非常好)。我们目前使用CVS,并且对所有可能性开放。我们只有很少的开发人员使用纯Eclipse并使用ant脚本运行构建。
在跳入水中之前,我想听听其他人,他们出于技术原因可以说“好主意”或“坏主意”。我也想听听这对您的日常工作有多大干扰。
编辑2011年:仅作记录。我们迁移到git-决定性的因素是我们使用Eclipse,而eclipse.org则是git,因此最终可以期待非常好的IDE集成。我们还有些早-直到今年夏天Eclipse3.7为止。今天,git在Eclipse中可以很好地工作。
EDIT 2015:事实证明,由于github和通用的IDE支持以及与Maven的结合,git最终成为无可争议的赢家,最终使Java项目与IDE无关。
2011年11月更新:
正如Tilo大力提倡的那样,使用Git显然是一个更好的选择,原因有很多(分散,私有提交,分支,合并等)。 我完全意识到集中式和分散式VCS之间的区别,如“描述使用版本控制(VCS或DVCS)的工作流程”中所述
但是,在大型 企业中 使用它 并不容易 。 我知道。我在一家大型企业中介绍了Git:
我在“我们最终可以在公司软件中最终迁移到DVCS吗?SVN仍然是开发的’必须’吗? ”中暴露了一般原因(尽管仍然说DVCS是一个非常有效的选择)
但是我确实在“ 分布式版本控制系统和企业-好的组合?”中详细描述了在企业中安装Git的主要痛点。
实际上,我已经在最新的CodeKen2011中 提出了 这些痛点(取代了之前的DevDays2011)。
演讲被称为“ 在大公司中介绍DVCS
”,其推文雄辩地说:
* Grundlefleck:我的总结:不只是简单地混入企业
* ben_sim:@VonC_重新定义了#codeken2011的痛苦:重新编译git及其所有依赖项,以便可以在企业的生产服务器上使用它。
DVCS的窍门是:您仍然需要一个“ 服务器 ”,这是所有开发人员获得其仓库的“祝福”版本的集中位置。
在一家大公司中,那些相互关联的服务器是相互关联的……已经有很多 其他 服务正在运行,这意味着您不能仅在其上 _添加_Git(在该服务器上没有正确的库)。
另外,您将需要自己的ssh和httpd,以便用户将其推入/拉出该服务器。
实际上,我已经在GitHub项目compileEverything中自动完成了Git及其所有依赖项/相关服务的安装过程。
所以,是的,使用Git。 在客户端PC上,您可以在几分钟内安装并开始使用它! 但是在 大型 企业的服务器上?这不是那么容易。
记得2009年:
Git本身不包括“ smart http ”,这意味着ssh / clone 和push 操作具有身份验证的唯一协议是ssh:说服用户生成和管理公钥/私钥至少可以说是有问题的。
即使请求效率很低,也可以使用Https进行拉取和克隆。为了进行推送…安装涉及WebDAV,非常复杂。SmartHttp改变了这一切。
授权层是笨重的(gitosis),而乙醇钠石才刚刚开始。在大型企业中 ,您 需要 一个授权层。 没有任何用户可以访问 任何 存储库,其中一些存储库是非常机密的。
最初的答案,可以追溯到2009年:
在公司内部,在封闭的集中式环境中,Perforce当然是一个不错的选择。 它确实 快速 签出您的工作区,并很好地管理变更集。 它支持“默认情况下锁定”,有助于查看谁在同一文件上工作。
但是, 您必须始终与P4服务器保持同步,并且应该具有适当的基础结构来支持它,包括备份和DRP方案:如果没有服务器,并且继续工作,例如删除文件,它将不会在后续更新中恢复。
我从使用它的团队中听到的主要抱怨(因为我只在该工具上执行了一些管理任务)是“
文件间分支 ”
的概念,起初有点令人困惑,但非常有用。
根据Perforce与您的IDE(此处为eclipse)和编辑器的集成程度,主要的侵入方面是确保工作区保持同步。
Perforce 是一个功能比较强大的版本控制软件,而且是跨平台的,支持 Windows. *nix, Mac,连 cygwin 的版本都有一个。
作为jenkins-pipeline-syntax-for-p4sync的延续,我无法让“轮询SCM”选项用于我的管道作业。以下是我的配置: "Poll SCM"被选中并设置为每10分钟轮询一次 管道脚本包含以下内容:
问题内容: 我是PHP开发人员,我一直认为微优化不值得。如果您确实需要这种额外的性能,则可以编写软件以使其在结构上更快,或者编写C ++扩展来处理缓慢的任务(或者更好的方法是使用HipHop编译代码)。但是今天有个同事告诉我 和 而且我就像“嗯,那确实是没有意义的比较”,但是他不同意我的看法。.他是我们公司中最好的开发人员,并且负责一个每天执行约5000万次SQL查询的网站- - 例如。因此,我在
问题内容: 例如,给定此表的稀疏ID: 我可以使用以下查询从表中获取最高的“ id”: 我得到: 我如何才能在最高“ id”之前获得“ id”(即使值不是连续的)? 问题答案: 是相同的 注意:这是事务性sql语法,根据您的供应商使用rownum或limit 获得第二行,你可以做
问题内容: 我正在使用ng-options从下拉列表中选择值。我希望能够将旧值与新值进行比较。ng- change非常适合抓住下拉菜单的新值,但是如何同时获得新值和原始值? 例如,假设我希望控制器记录以下信息:“您以前的user.name是BILL,您的当前用户名是PHILLIPE。” 问题答案: 使用有角的{{expression}},您可以将原先的user或user.id值作为文字字符串添加到
问题内容: 我被要求为我们的一位客户构建一个小型Web应用程序,并认为这是一个尝试构建Web应用程序的不同框架的好机会。我们构建的大多数应用程序都是基于asp.net Web表单的,我们还没有在MVC架构中做任何事情,但是我渴望通过正确的工具以更结构化的方式构建Web应用程序。 我一直在研究asp.net MVC之类的东西,看起来不错,但是我想知道使用Google AngularJS框架之类的东西