关于版本管理:用户文章-原来Steam和Perforce有这种关系

本文作者向华是资深游戏开发工程师,领有8年游戏测试开发教训。他是前原神我的项目P4 Admin,也是一名继续集成开发者。作为Perforce Helix Core的用户,他关注版本控制畛域,为大家带来相干资讯。援用龙智作为DevSecOps研发平安经营一体化解决方案供应商、Perforce受权合作伙伴,继续关注研发生命周期治理畛域动静与倒退,为您进步最新洞察与最佳实际参考,帮忙大型开发团队更好地进行研发资产治理,增强合作,晋升研发效率。立刻分割咱们,理解版本控制的最佳实际与案例。 最近一次偶尔的机会,看到了 Steam 的利用治理后盾——STEAMWORKS。 Steam平台所有的游戏端治理配置都须要在Steamworks平台上实现,正如官网所述,Steamworks是一整套工具与服务,能够帮忙构建和散发。 嚯,这不就是一套CI/CD嘛? 本着钻研一二的态度,申请了主面板中测试项目的权限。 在各项配置界面中,先轻易进行了一些配置的批改,保留后,发现上方呈现了被红框框起来的正告文字。 此利用有未公布的更改。要提交这些更改,您须要应用“公布”选项卡中的公布工具。 揣测一下,应该是变更公布后能力失效,能够了解。这就进入「公布」选项卡看看。 ▲ Steamworks公布选项卡 原来,Steamworks的所有配置元数据后盾用到了Perforce,这也使用户有能力拜访元数据所有的历史变更记录,甚至进行数据的Revert操作。 这给咱们做相似CMDB类型的Service后盾带来一种比拟好的实际思路。过来咱们用过的大多数配置后盾都是一次性存储的,即永远存取最新的配置,用户改掉了就改掉了,如果想找回N天前的版本就很难。 但对于游戏这种可能会常常重复调试的工程,最好在全链路都用上VCS,确保数据历史无忧。 认真再看SteamPipe选项卡中,还能够窥见Steam利用Perforce的一些根本理念。 ▲ Steamworks SteamPipe选项卡 浏览一下,Steam对于多Depot的抵触解决,有点相似于iptables后序规定笼罩先序规定,如许奢侈的抵触解决形式啊! 忽然间,我想到 Steam.exe 这个客户端下载游戏的时候,应该还运行了 p4 sync //SomeDepot/... 命令。 得,可能就是这样。 本篇完结。感激浏览。 题图:City In A Glass Bottle. —— 通过 Midjourney AI 创作。

November 21, 2022 · 1 min · jiezi

关于版本管理:Cornerstone-意外退出打开闪退的解决办法

Cornerstone Mac版是一款很受欢迎的SVN管理工具,然而好多用户在应用过程中呈现Cornerstone意外退出的状况,如何解决Cornerstone意外退出的问题? 解决办法 1、终端输出显示/暗藏.svn文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 或 defaults write com.apple.finder AppleShowAllFiles YES ;ps: 输出暗藏Mac暗藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false 或 defaults write com.apple.finder AppleShowAllFiles NO2、重新启动Finder: 鼠标单击窗口左上角的苹果标记-->强制退出-->Finder-->从新 3、找到cornerStone的偏好设置: 4、批改相应的文件 5、改成绝对平安的值 -1处改为比拟平安的,没有抵触的workingcopy目录 -2处改为No,也就是不记录最初状态 Cornerstone软件资源:https://www.macz.com/mac/56.h...

July 8, 2022 · 1 min · jiezi

关于版本管理:如何通过云效Projects高效的进行产品版本管理

效我的项目合作Projects是一款企业级高效研发项目管理平台, 提供了疾速实际的麻利研发项目管理机制,提供对需要、迭代、缺点各个维度的协同治理以及相干的统计报告,让研发团队高效合作、践行麻利并继续交付产品价值,通过云效Projects高效的进行产品版本治理为不同的产品线、模块建设版本,对集成版本进行相干流动的治理。在版本治理中布局公布内容,能够关联需要、工作、缺点的协同治理。 开启版本治理我的项目管理员和我的项目拥有者进入我的项目后,点击我的项目导航栏的加号,在我的项目利用核心搜寻「版本治理」点击开启即可。开启当前,能够发现我的项目的利用导航减少了「版本治理」,点击即可进入「版本治理」利用的页面。 版本库治理创立版本库进入「版本治理」后,首先须要增加版本库,通过点击按钮并输出名称即可实现版本库的创立。 版本库切换当创立了多个版本库时,能够通过下拉菜单在多个版本库之间进行疾速切换。 版本治理创立版本 进入版本库,点击「创立版本」,通过填写版本名称、备注、开始工夫和预计公布工夫,即可实现版本的创立。 点击创立好的版本,能够进入版本的详情页。 布局公布内容在版本详情页中,点击「增加公布内容」或者右上角的「布局公布内容」,在弹出的资源选择器窗口中能够对该版本蕴含的内容进行抉择。 保护版本状态对于曾经创立好并实现公布内容布局的版本,管理者能够对版本状态进行保护,能够设置未开始、进行中、提早公布和已公布四种状态。 零碎会依据布局在版本中迭代内容的实现状况,主动统计以后版本公布内容的完成度。当版本状态设置为「已公布」时,零碎会提醒确认公布工夫,点击「确定公布」后零碎会将该版本主动挪动到「已公布版本」区域中。 删除版本通过版本详情页右上角进入「版本菜单」,能够进行「删除版本」的操作。 在工作中应用版本 当创立完版本后,就能够在工作(需要、工作、缺点)中应用了。 增加字段我的项目设置 - 工作设置 - 工作类型设置 抉择须要增加字段的工作类型,点击字段配置,如下在需要下增加字段 增加字段「版本」,而后保留退出我的项目设置 在工作详情中应用版本 通过云效Projects高效的进行产品版本治理为不同的产品线、模块建设版本,对集成版本进行相干流动的治理。在版本治理中布局公布内容,能够关联需要、工作、缺点的协同治理。让研发团队高效合作、践行麻利并继续交付产品价值。

September 28, 2021 · 1 min · jiezi

关于版本管理:什么是云效版本管理如何在Devops中产实现版本管理

云效版本治理为不同的产品线、模块建设版本,对集成版本进行相干流动的治理,工作充斥着大大小小的「我的项目」、「工作」:流动策动、工程施行、IT 研发、风险投资等等,在云效版本治理中布局公布内容,能够关联需要、工作、缺点。应用云效版本治理能够让产品更快响应需要变动。 开启版本治理我的项目管理员和我的项目拥有者进入我的项目后,点击我的项目导航栏的加号,在我的项目利用核心搜寻「版本治理」点击开启即可。开启当前,能够发现我的项目的利用导航减少了「版本治理」,点击即可进入「版本治理」利用的页面。 版本库治理创立版本库进入「版本治理」后,首先须要增加版本库,通过点击按钮并输出名称即可实现版本库的创立。版本库切换当创立了多个版本库时,能够通过下拉菜单在多个版本库之间进行疾速切换。 版本治理创立版本进入版本库,点击「创立版本」,通过填写版本名称、备注、开始工夫和预计公布工夫,即可实现版本的创立。点击创立好的版本,能够进入版本的详情页。布局公布内容在版本详情页中,点击「增加公布内容」或者右上角的「布局公布内容」,在弹出的资源选择器窗口中能够对该版本蕴含的内容进行抉择。保护版本状态对于曾经创立好并实现公布内容布局的版本,管理者能够对版本状态进行保护,能够设置未开始、进行中、提早公布和已公布四种状态。零碎会依据布局在版本中迭代内容的实现状况,主动统计以后版本公布内容的完成度。当版本状态设置为「已公布」时,零碎会提醒确认公布工夫,点击「确定公布」后零碎会将该版本主动挪动到「已公布版本」区域中。删除版本通过版本详情页右上角进入「版本菜单」,能够进行「删除版本」的操作。 在工作中应用版本当创立完版本后,就能够在工作(需要、工作、缺点)中应用了。 增加字段我的项目设置 - 工作设置 - 工作类型设置抉择须要增加字段的工作类型,点击字段配置,如下在需要下增加字段增加字段「版本」,而后保留退出我的项目设置在工作详情中应用版本什么是云效版本治理,如何在Devops中产实现版本治理,咱们的工作充斥着大大小小的「我的项目」、「工作」:流动策动、工程施行、IT 研发、风险投资等等。应用云效版本治理做「我的项目化」治理,团队布局工作事指标更清晰,执行更到位,而且实现过程也非常轻松,成员将有全新的合作体验。点击立刻体验

August 31, 2021 · 1 min · jiezi

全栈之路版本控制课程一Git如何把本地代码推送到远程仓库20190709v10

欢迎进入全栈之路之版本控制基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对代码的版本控制进行讲解,希望对广大同行带来一些帮助。若有问题请及时留言或加QQ:243042162。 寄语:如果你不去希望,你就不会发现什么东西超出了你的希望。背景项目建立初期都是先搭建基础框架,再把代码放到代码管理服务器上,让项目组成员进行检出从而进行需求的开发。下面将重点介绍实际项目中如何提交代码至git远程仓库。 步骤1.下载安装git自己本身系统是win10,下载地址:https://git-for-windows.githu...2.初始化版本库:git initrain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center$ git initInitialized empty Git repository in C:/WebstormProjects/cmpy-project/p roject-center/.git/3.添加文件到版本库:git add .rain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project- center (master)$ git add .warning: LF will be replaced by CRLF in assets/css/font-awesome.min.css.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/ie/html5shiv.js.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/ie/respond.min.js.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/jquery.min.js.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in assets/js/skel.min.js.The file will have its original line endings in your working directory.4.提交到版本库,并填写提交备注:git commit -m "v1.0"rain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git commit -m "v1.0"[master (root-commit) 260e147] v1.0 53 files changed, 8306 insertions(+)5.把本地库与远程库关联:git remote add origin 你的远程库地址rain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git remote add origin 远程库地址6.推送至远程:git push -u origin master -frain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git push -u origin master -fCounting objects: 65, done.Delta compression using up to 4 threads.Compressing objects: 100% (65/65), done.Writing objects: 100% (65/65), 478.97 KiB | 0 bytes/s, done.Total 65 (delta 2), reused 0 (delta 0)7.查看状态:git statusrain@DESKTOP-R3H1KFK MINGW64 /c/WebstormProjects/cmpy-project/project-center (master)$ git statusOn branch masterYour branch is up-to-date with 'origin/master'.nothing to commit, working tree clean

July 9, 2019 · 1 min · jiezi

CODING 最佳实践:快课网研发效能提升之路

快课企业移动学习平台是上海快微网络科技有限公司自主研发的企业级 SaaS 平台,提供移动学习、考试练习、培训管理、知识分享、统计分析等学习和培训功能,为员工、经销商及客户等全价值链合作伙伴提供全面的知识服务。本文将详细介绍快课网的研发团队是如何使用 CODING 研发管理系统提高研发效能。为什么选择 CODING快课网从创立至今已有 4 年多,作为一个规模比较小的创业团队,我们一直在寻找和尝试各种能提升研发效能的管理方案,这样能够帮助团队节省时间,更加专注于业务。第一步就是上云,我们一开始使用的是阿里云,通过容器化、弹性计算和可视化管理帮助我们节省了不少运维成本。但是仅有这些还不够,要开发还需要搭建很多服务,例如 BUG 跟踪管理、代码版本管理和同步、npm 私服、maven 私服、docker 私服等等。虽然后台团队通过使用 docker 让搭建服务方便了不少,但是我们还不满足。大量的服务为研发团队带来了极高的管理成本。再加上不菲的服务器成本、所使用的开源项目更新较慢等原因导致很多问题短时间内都解决不了,同时很多管理方案还不支持中文。所以我们决定寻找一个集成度比较高的国内的商业平台来帮助我们进行研发流程管理。当时的想法很简单,只要功能齐全,收费能够弹性一些就好。在尝试了很多平台之后,我们最后决定使用 CODING,主要是看中 CODING 的网络连接速度比较快,界面简洁,交互比较友好,功能齐全,反馈处理也非常及时,可以很好地帮我们解决代码托管和 BUG 管理等研发流程问题。我们最开始使用的是 CODING 个人版的团队功能,在 CODING 推出企业版之后我们团队很快迁移到了企业版,相对于个人版来说企业版功能更完善,管理起来也更方便,后续还有持续集成和部署相关功能升级,这些功能正是我们团队所需要的。目前快微团队的整个开发是在 CODING 和阿里云上完成的,CODING 主要用来管理代码、里程碑和持续集成等研发流程。版本规划与任务流程里程碑是我们使用比较多的功能之一。最初,我们使用 CODING 的里程碑来规划版本,比如 1.0 版本对应的里程碑就叫做 1.0,每个任务都是版本中的功能点。后来由于新版本的重构采用了分布式服务化开发,由多个子项目组成。由于各个子项目地版本相对独立导致粒度太细不方便产品的规划,便做了一些调整。目前里程碑主要是用来做长周期的规划,每一个任务都是一个小的项目,由一个或多个人来完成,比如将课件服务 1.1 版本分就单独为一个任务。快课技术团队目前的绩效考核也是基于 CODING 的任务管理和里程碑实现的:由产品发布相关版本的产品说明书,包含原型图和功能点文档部分。创建任务,分派给项目负责人,项目负责人需要评估任务的工作量。工作量给定的有参考标准,将最简单的帐号密码登录接口的工作量定为 1,最小为 1。评估工作量之后进行审核,确定起止时间和奖金。进入开发阶段,开始倒计时。开发完成之后进行验收,由技术审查代码(每次发起合并请求也有审查),产品检查 UI 交互,顺利完成验收则关闭任务,将工作量的值作为绩效值。对于不能按期完成的任务,进行惩罚措施,每逾期一天扣 10% 绩效。对于工作量比较大的任务,可以由一个人主要负责,多人完成,负责人需要为每个人安排详细的工作内容,最终由负责人按贡献比例分配绩效和奖金。这样累计下来,每半年或一年可以根据绩效进行一次评定,给表现好的员工涨薪。分支管理快课目前的分支管理方案与 CODING 文档中的最佳实践比较接近,master 作为主分支只发布正式版本,新增一个 dev 分支作为开发中的分支,并且同时对这两个分支设置保护,禁止直接推送代码到这两个分支上。快课的每个子项目都在项目配置文件里写有明确的版本号,后端 maven 项目写在 pom.xml 中,前端 node 项目写在 package.json 中。开发中的版本号一律带有 SNAPSHOT 后缀,以表示这是快照版本,会不断发生变化,不能在生产环境使用。比如正在开发 1.1 版本,此时 master 分支的版本号是 1.0.0(随着补丁的增加,最后一位也会不断增加,比如版本号有可能为 1.0.9),dev 分支的版本号是 1.1.0-SNAOSHOT。当需要开发一个新版本的时候,首先基于 dev 分支新起一个分支,可以根据实际情况来命名新分支,比如可以叫 dev-v1.1 或者 dev-tom 等等,没有限制。在新分支上完成开发之后,在 CODING 上发起合并请求申请合并到 dev,此时合并请求的标题和内容必须写的详细一些,审核之后进行合并,合并的同时删除原分支,只在 CODING 上保留 master 和 dev 两个分支。最终所有新开发内容都完整合并到 dev 分支后,测试通过,再从 dev 分支新起一个分支,更改版本号为正式版本号,进行推送并新建合并请求,合并到 master 分支上。对于已经上线的版本,如果有 bug 需要修改,则从 master 分支新起分支进行修改,完成后将版本号最后一位 +1,然后推送并新建合并请求合并到 master。持续集成我们团队很有幸获得了 CODING 持续集成功能的内测资格,之前也有尝试过自建 Jenkins 服务,对持续集成有一定积累能很快上手,于是我们便开始转向 CODING,毕竟一站式的 DevOps 工具链服务更方便,可以给研发团队节省很多精力。CODING 对 Jenkins 进行了封装,只需要在项目根目录下创建一个 Jenkinsfile 文件,配置好之后推送上去,推送完成之后在后台开启持续集成即可。持续集成主要用在后端 maven 项目上,来做规范检查(checkstyle 插件)、单元测试和代码质量检查(spotBugs 插件),这样当团队成员在创建合并请求时,管理者可以看一下代码是否规范并跑通了必要的测试,在 CODING 上构建成功后才能继续对修改进行审查。自动化构建为研发提供了很大的便利,避免了一些人为的不稳定因素,也为项目管理者节省了不少时间。目前快课的项目都是直接发布到 docker 私服上的,推送成功之后修改 k8s 中的镜像版本来完成自动部署。我们也期待 CODING 未来会上线的部署管理功能,能支持在目前的构建基础之上自动发布 docker 镜像,然后再自动更新 k8s 相关配置的镜像版本,补充 CI/CD 功能,这样的话就能更好的实现研发流程的自动化了。点击立即体验一站式 DevOps 工具链 ...

February 12, 2019 · 1 min · jiezi