项目文件受版本控制吗?

2024-01-04

我从事一个大型项目,其中除项目文件之外的所有源文件都存储在版本控制中。这是首席开发人员的决定。他的理由是:

  • 协调开发人员工作目录之间的差异非常耗时。
  • 它允许开发人员独立工作,直到他们的更改稳定为止

相反,开发人员最初会获得其他开发人员的项目文件的副本。然后,当添加新文件时,每个开发人员都会通知其他所有人员有关更改的信息。从长远来看,这让我觉得更加耗时。

在我看来,不跟踪项目文件的更改所带来的好处被其危险所抵消。除了对其所需源文件的引用之外,每个项目文件还具有配置设置,如果该文件损坏或出现硬件故障,这些配置设置将非常耗时并且容易出错。其中一些嵌入了几乎不可能恢复的源代码。

我试图让领导相信他的两个理由都可以通过以下方式实现:

  • 就标准文件夹结构达成一致
  • 在项目文件中使用相对路径
  • 更有效地使用版本控制系统

但到目前为止他还不愿意听从我的建议。我检查了svn日志,发现每个主要版本的历史记录都以Add开头。我有一种感觉,他根本不知道如何使用分支功能。

我是否无所顾虑,或者我的担忧是否合理?


你的担忧是有道理的。没有充分的理由从存储库中排除项目文件。他们应该绝对地处于版本控制之下。您还需要标准化自动构建的目录结构,因此您的领导只是推迟了不可避免的事情。

以下是将项目 (*.*proj) 文件签入版本控制的一些原因:

  • 避免不必要的构建中断。每次添加、删除或重命名源文件时,依靠个别开发人员通知团队其他成员并不是一种可持续的做法。将会出现错误,您最终会得到损坏的构建,并且您的团队将浪费宝贵的时间来尝试确定构建损坏的原因。

  • 维护权威的源配置。如果存储库中没有项目文件,则说明您没有足够的信息来可靠地构建解决方案。您的团队是否计划从您的开发人员的一台机器上交付构建版本?如果有,是哪一个?拥有源代码控制存储库的全部目的是维护权威的源配置,您可以从中构建和交付版本。

  • 简化项目管理。当您引入并非每个人都熟悉的项目类型时,让每个团队成员独立更新各个项目文件的单独副本会变得更加复杂。如果您需要引入 WiX 项目来生成 MSI 包或数据库项目,会发生什么情况?

我还认为,为捍卫这种不检查项目文件的策略而提出的两点很容易被反驳。让我们分别看一下:

协调开发人员工作目录之间的差异非常耗时。

源配置应始终使用相对路径进行设置。如果您的源配置(项目文件、资源文件等)中有硬编码路径,那么您就做错了。选择忽视问题并不会让问题消失。

它允许开发人员独立工作,直到他们的更改稳定为止

不,使用版本控制可以让开发人员独立工作,直到他们的更改稳定为止。如果你们每个人都继续维护自己的项目文件的单独副本,那么一旦有人签入引用新源文件中的类的更改,您就会破坏团队中的每个人,直到他们停止正在做的事情并且仔细更新他们的项目文件。将这种体验与仅从源代码控制中“获取最新”进行比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目文件受版本控制吗? 的相关文章

  • Netbeans 版本控制文件颜色代码?

    我试图找到一个图例来帮助解释 NetBeans 用于描述文件状态的不同颜色 我的一些文件颜色是 Grey Blue Green 还有其他我还没有发现的 如果有帮助 我将使用带有 CVS 的 Netbeans 6 7 这些颜色是什么 绿色意味
  • 将两个相似的远程 git 存储库合并为一个

    我已经做了一些搜索并阅读了 git 书籍和网络上的一些地方 例如 git 但我找不到正确的方法来做到这一点 我有两个 git 存储库 位于两台不同的机器上 这些 git 存储库中的每一个都保存程序的配置 当您比较两个存储库时 配置的某些部分
  • 使用 Git 维护项目

    我有 2 个项目 实际上这 2 个项目彼此大约 80 相同 主要区别在于语言和商业模式 一个是针对使用英语的更多受众 并且有 9 美元 月的商业模式 另一个是使用本地语言与免费增值商业模式 有时 当我想添加新的特性 功能时 我想将其添加到两
  • 从TFS迁移到GIT,共享项目到nuget

    我所在的软件团队由 4 5 名开发人员组成 他们从事一个 TFS 项目 我们正在考虑将整个代码库移至 GIT 该代码库由约 50 个 Visual Studio 2013 解决方案组成 分为约 300 个项目 引用项目中另一个程序集的首选过
  • SQL版本控制方法

    SO 有几个关于 SQL 版本控制的问题 网上有很多资源 但我找不到完全涵盖我想要做的事情的东西 首先 我在这里谈论一个方法论 我熟悉各种源代码控制应用程序 也熟悉 Red Gate 的 SQL Compare 等工具 并且我知道如何编写应
  • Accurev 性能如何?

    当前版本 4 7 的性能如何Accurev http www accurev com 每 100mb 每 GB 的结账时间 每 个文件或 mb 的提交时间 当 100 流时 gui 的响应能力 我刚刚进行了 Accurev 的演示 这些流看
  • 在两个单独的分支或存储库中管理项目后端和前端?

    我启动了一个移动应用程序项目 该项目将具有服务器端和应用程序本身 所以 在master分支我创建了2个项目myapp server and myapp然后我创建了另外 2 个分支backend and frontend我只想将与它们相对应的
  • Jenkins:尽管没有变化,SCM 仍然触发持续构建

    我们遇到一个问题 尽管没有代码更改 SCM 仍在触发构建 SCM 每 15 分钟轮询一次更改 并且仅在发现更改时才触发构建 以下是连续 SCM 轮询日志的几个示例 Started on Nov 15 2013 11 47 14 AM Usi
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 如何恢复 CVS 中的重大更改?

    我的一位同事完全搞乱了我们主 CVS 存储库中目录的内容 我需要将整个模块恢复到去年年底的状态 请问执行此操作的 CVS 命令是什么 他添加和删除了数百个文件 因此简单的 从旧签出和提交中复制文件 是不够的 我有 RTFM 和 STFW 我
  • 使用BFG时可以指定多个文件吗?

    我正在尝试删除通配符无法覆盖的多种类型的文件 我尝试使用多个 delete files 但它不接受它 还尝试将文件全部放在 delete files 之后 但它也不接受它 有没有一种方法可以将它们全部放在一个命令中 如果没有 那么我必须运行
  • 如何存储和计算版本控制历史记录?

    考虑这个简单的 python 代码 它演示了一个非常简单的字典版本控制设计 def build current history current for action key value in history assert action in
  • 本地提交推送到中央服务器

    在工作中 我们使用 perforce 并被鼓励定期对其进行承诺 我对此很满意 然而 我想运行像 Mercurial 这样的东西 这样我就可以在本地提交正在进行的工作并且不一定编译 运行的东西 然后从中定期提交到中央 perforce 服务器
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • Git 日志历史记录

    对于版本控制来说 重要的一件事是知道谁做了什么更改 如果某些内容发生了变化 而我不知道为什么要进行更改 我会查看历史并询问进行更改的人 当我探索 git 时 让我对这个功能有点紧张的一件事是它似乎很容易伪造 是什么阻止我将同事姓名 电子邮件
  • 更改 .cpp、.h 文件的 Visual Studio 默认路径

    我希望 Visual Studio 自动将我的 h 文件放入文件夹 ProjectPath include 中 并将我的 src 文件放入 ProjectPath src 中 这样 如果我使用 创建类向导 它会默认放置好路径 而无需更改文件
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • GitLab 是否通过 git-annex 或其他方式支持大文件?

    我运行一个 GitLab 实例 并希望允许我的用户上传几乎任何大小的文件 众所周知 git 在处理大文件方面仍然存在问题 我知道通过将文件存储在其他地方并仅对元数据进行版本控制来规避此问题的方法 例如git annex git media
  • Visual Studio 2010 中的源代码控制?

    在对 SO Google 和 MSDN 论坛进行了一些搜索之后 我感到很沮丧 因为对于一个看似显而易见的问题 甚至可能是一个愚蠢的问题 信息太少 我需要在 Visual Studio 2010 Professional 中使用源代码管理 我
  • 从 git 中提取特定的提交/文件

    我在 git 存储库中进行了两次提交 并将它们推送到我的 git 服务器 两个提交是 在第一次提交中文件 A 被提交 在第二次提交中 文件 B 被提交 现在在另一台开发服务器上 我只想从 git 服务器中提取第一个提交或文件 A 这个怎么做

随机推荐

  • Go 如何在 make 或 new 调用中分配内存?

    当我使用 make 或 new 调用创建新切片或结构时 s make int64 10 100 o new MyStruct Go 通过内存分配系统调用分配多少内存 它是否预先分配内存 以便后续调用不会触发新的系统调用 我问这个问题是因为我
  • 使用 Dapper 或通过 Linq 填充一对多关系

    实体 AllSalesTerritory包含List
  • 为什么使用负步长的字符串切片会打印空字符串? [复制]

    这个问题在这里已经有答案了 我有以下程序 str abcd l len str str2 str l 1 0 1 print str2 str2 str l 1 1 1 print str2 为什么第一个print output dcb和第
  • 使用 fortran 覆盖文件

    我正在使用 Fortran 90 程序来写入文件 该文件的第一行应该指示剩余文件中的行数 当满足某个标准且无法事先确定时 程序将写入该文件 基本上 只有在运行结束后我才会知道总行数 我想按以下方式进行 1 打开文件并在第一行写入一些文本 例
  • 计算代码的失败次数!

    这真的很花我的时间 我找不到一种简单的方法来估计以下代码 循环 的 FLOPS 循环的单次迭代有多少 FLOPS float func float atominfo float energygridItem int xindex int y
  • 如何在java中将camelCase字符串转换为下划线,保留一些大写,其余的小写?

    如何在java中将驼峰式字符串转换为下划线并保留一些大写字母 我正在使用这段代码 String inputString Hi How areYouToday String result inputString replaceAll a z
  • nullglob 禁用路径名制表符补全

    我发现shopt s nullglob显然禁用了文件和目录的制表符补全 并且shopt u nullglob恢复它 为什么目录的制表符补全显然依赖于nullglob未设置 我正在使用 Bash4 2 37 1 release在 Debian
  • 使用 compojure 从数据库提供二进制文件

    我有以下路线定义 require compojure core as ccore ring util response as response def main routes ccore defroutes avalanche routes
  • 无法创建持久存储协调器

    我收到以下错误 Terminating app due to uncaught exception NSInternalInconsistencyExprojectception reason Managed object store fa
  • 每 X 秒从 ArrayList 更新一次 JLabel - Java

    我有一个简单的Java程序 它读取一个文本文件 用 空格 分割它 显示第一个单词 等待2秒 显示下一个 等等 我想在Spring中执行此操作或其他一些 GUI 关于如何使用 spring 轻松更新单词有什么建议吗 遍历我的列表并以某种方式使
  • C# 中 AVL 树的性能

    我用C 实现了一个AVL树 其插入矩阵如下 Number of Elements Time taken to insert sec 10 0 067 100 0 073 200 0 112 500 0 388 900 1 205 1000
  • 如何通过 Concourse CI 管道发送电子邮件?

    如何设置在 Concourse 中作业完成或失败时发送的电子邮件 您可以使用https github com pivotal cf email resource https github com pivotal cf email resou
  • iPad 版 iOS 8.3 上 UIAlertView 关闭后键盘会弹出

    随着最新的 iOS 8 3 版本的发布 我们的应用程序开始出现奇怪的行为 完成文本字段编辑后 用户可以单击关闭按钮 弹出一个UIAlertView 当用户点击时discard在警报视图中 警报视图和当前视图被忽略 但不知怎的 键盘在视图消失
  • 从静态方法调用 finish()

    我正在使用 Facebook Android SDK 并希望在用户登录并获取用户对象后关闭我的 Activity 在实践中 我存储了其中的一部分 但无论如何我都想关闭该活动 make request to the me API Reques
  • Asp.Net Core 2.0 中的“HttpPostedFileBase”

    我最近正在开发一个调用 API 的 ReactJS 应用程序 使用 NET Core 2 0 开发 我的问题是如何使用HttpPostedFileBase在 NET Core 2 0 API 中 以获取文件内容并将其保存在数据库中 你没有H
  • python实时写入文件

    我有这段 python 代码 它循环遍历文本文件 urls txt 中的 url 列表 然后跟踪所有 url 的重定向 如果 url 包含特定字符串 则会将其写入名为 redirects txt 的文件中 import urllib req
  • 生产中头变量丢失

    我正在运行 Rails 3 1 后面有 PhusionPassenger 和 NGINX 我通过一个简单的 HttpClient OS X 的 GrahpicalHttpClient 发送请求 我的代码需要标头中的令牌和 ID 来验证调用者
  • 在Prepare()方法中找不到高级通配符映射参数

    从文档中 Struts2 的高级通配符映射 http struts apache org release 2 3 x docs wildcard mappings html 高级通配符 从2 1 9 开始可以在action中定义正则表达式
  • Visual Studio Ultimate 2013 安装失败

    我有一台 CLEVO x7200 Intel i7 970 3 20GHz 12Gb RAM 2x512Gb HDD 2xATI Radeon HD6970M 2Gb Crossfire 我有一个非常恼人的问题 我的笔记本电脑运行 Wind
  • 项目文件受版本控制吗?

    我从事一个大型项目 其中除项目文件之外的所有源文件都存储在版本控制中 这是首席开发人员的决定 他的理由是 协调开发人员工作目录之间的差异非常耗时 它允许开发人员独立工作 直到他们的更改稳定为止 相反 开发人员最初会获得其他开发人员的项目文件