Tag: 版本控制

“责备”命令的简化语义是一件好事吗?

我正在研究一种新的基于织物的数据结构来存储版本控制历史。 这无疑会引发一些宗教的战争,是否是正确的做法,但这不是我现在的问题。 我的问题与输出责任应该给予什么。 当一行代码被添加,删除,并合并到自己多次,并不总是清楚什么修订应该是责怪它。 值得注意的是,这意味着当一段代码被删除时,它的所有logging已经消失了,并且没有责任去除。 我曾经与这个问题交往过的每个人都表示,试图做得更好就是不值得的。 有时候,人们把这个被删除的部分后面的那一行的内容,从删除的那一部分改为修改的时候,就会把这个责任改变了。 据推测,如果该部分是在最后,最后一行得到的责备改变,如果文件结束空责任真的消失在以太,因为几乎没有任何地方留下的责备信息。 由于各种技术原因,我不会使用这个黑客攻击,但是假设持续的,但是这个完全没有logging但事实上的标准实践将是没有争议的(但是可以随意激发我,并将它从你的系统中取出)。 转到我的实际问题。 对于每一行,通常应该指责它们在历史中被添加和删除的完整历史,并且使用三向合并(或者在交叉合并的情况下是随机废话),并且基于这些关系你根据它的历史来确定这条线是否应该在那里,如果它不应该,那么你用现在的修订标记它是新的。 如果一条线出现在不同责任的多个祖先中,则select哪一个任意inheritance。 再次,我认为继续这种完全没有logging但事实上的标准做法是没有争议的。 我的新系统分歧的地方在于,不是根据对整个历史的复杂计算,而是对现行版本是否应该进行复杂的计算,而只是看直接的祖先,如果是在任何他们挑选一个任意的inheritance责任。 我在很大程度上是因为技术上的原因进行了这种改变(其他的指责实现完全可能做同样的事情,由于类似的技术原因和缺乏关怀),但考虑到这一点后,我实际上更喜欢新的行为比旧的更直观,更可预测。 大家怎么想?

Java项目:应该将.classpath .project文件提交到存储库吗?

我应该检查我的.project和.classpath文件吗? 我的朋友告诉我,我应该只检查.java文件和build.xml以保证可移植性。 他说:“.classpath会导致你在不同环境下的可移植性大大降低.project完全是你本地的eclipse设置” 我同意他,但部分。 – 没有签入.project文件会使我的开发效率降低(我不能简单地从目录中“导入”项目代码) – 没有签入.classpath文件似乎对我来说(?)如果我的build.xml仔细写。 任何人都想在这里分享他们的经验?

IntelliJ IDEA 9 + Maven +版本控制的最佳实践

该项目正在使用Maven,所以POM文件是项目信息的主要来源。 在项目文件中有一些有用的设置,这将是很好的保持。 OTOH IDEA似乎在项目文件结构中创build了太多冗余的变化,污染了SVN的历史,有时会产生冲突。 我应该保持.idea目录和* .iml文件在版本控制下? 在全? 部分? 更新:所以我发现为我和我的团队工作的最佳做​​法是迄今为止: 检入所有的IDEA文件,* .iml和.idea目录。 它们包含有价值的信息,每次更新时都会浪费时间来重新创build。 为每个开发者创build私有分支 cd进入.idea目录 svn切换到它的私人分支机构 不要在常规提交中检查IDEA文件 – 它们会污染历史。 检查他们在特殊的承诺。 通过这种方式,您可以将版本控制中的.idea目录的内容保留在版本控制中,但不会妨碍正常提交。 任何开发人员都可以访问任何其他人的IDEA目录。 更新2:由于这个问题已经写好,我已经改变了我的做法,就是没有将任何IntelliJ文件检入到版本控制中,正如许多响应者所build议的那样。 这是我目前Maven和Gradle的做法。 这些工具已经发展到可以始终从原始的.POM或.gradle文件复制关键信息的地步。 当文件改变时,IDE可靠地跟踪改变,所以你不会丢失你的IDE文件,因此不需要检查它们。 更新3: 7年之后问这个问题似乎仍然有关。 相同的最佳实践也适用于Gradle(也可能是SBT):不要检查IDE文件,根据需要从基本的POM,.gradle或SBT文件中重新创build它们。

我需要在Source Control / TFS中维护ReSharper的dotsettings.user文件吗?

我注意到ReSharper已经在我的Source文件夹中创build了dotsettings.user 。 我需要保持在我的源代码pipe理/ TFS? 如果我排除它,后果是什么? 如果我在另一台机器上进行最新操作,我的自定义ReSharper设置是否会丢失? 或者ReSharper从其他本地文件重新创build设置?

TFS,SVN和GIT有什么区别?

我使用Microsoft Visual SourceSafe进行版本控制。 我想改变这种方法,并使用较新的软件进行这项工作。 这三个应用程序有什么区别? 哪一个更好? 这些解决scheme是否与Visual Studio集成?

分享共同/有用的SVN预先提交钩子

什么是SVN的一些常见和/或有用的预提交钩子?

使用版本控制时,在Laravel 4项目中忽略哪些文件/目录?

我有一个Laravel 4项目,我想知道在使用版本控制软件(如Git,Mercury或SVN)时应该忽略哪些文件? 我的项目的结构看起来像下面的屏幕截图。 我对composer php来说很新,所以我不清楚什么是回购。 如果有人可以发布他们的.gitignore文件或他们的SVN忽略财产,它可能是方便的。

TortoiseGit是否准备好黄金时段了?

我是TortoiseSVN简单的忠实粉丝。 我也有兴趣挖掘git,并认为它将适合即将到来的项目。 然而,严格的基于命令行的应用程序可能有点吓人。 我跟踪了一下TortoiseGit项目,看起来好像已经过了1.0了。 现在有没有人在野外使用它? 它是如何运作的? 它是否让你使用git中的所有function?

如何pipe理多个分支项目中的迁移?

我有一个ASP.NET MVC3项目使用entity framework4.3与代码优先的方法。 我使用Migrations来保持数据库是最新的。 该项目是在源代码控制下,我有一些分支机构。 我刚刚意识到的是,当我想将我的一个分支合并到主控中时,会出现问题。 由于我在两个分支都创build了迁移文件,所以当我合并时会有重叠的迁移,这可能会导致冲突。 有多个分支的项目中pipe理迁移的好方法吗? 更新 一种方法是合并,然后删除分支分离时创build的所有迁移文件,然后创build一个新的迁移文件,该文件保存从创build分支到合并为止的所有更改。这将适用于dev-environment,您可以在其中转储数据库并使用所有迁移文件重新构build它。 那么问题就是现场环境。 由于您无法回滚创build分支而没有丢失数据的风险,因此尝试使用新的迁移文件更新实时数据库时会有冲突。

git推到特定的分支

即使阅读了这个问题: git-push-current-branch ,我仍然很难搞清楚我应该怎么写我的git push命令。 正如问题链接中提到的,从文档中不清楚。 我想用我的“现实世界”的例子。 以下是我在分支的顶层执行git status命令时看到的内容: 在分支amd_qlp_tester上 你的分支在5次提交之前在“origin / amd_qlp_tester”之前。 等等… 所以我的分支名称是amd_qlp_tester但它从主分支“分支”(如果我有条款错误,这是因为我的SVN背景)。 但是接下来还有名字“origin / amd_qlp_testser” 那么我怎么说我的push命令呢? 是否有这些: git push origin/amd_qlp_tester? git push origin amd_qlp_tester? git push amd_qlp_tester? git push origin? git push?