问题标签 [blame]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
login - Tortoise SVN 使用单登录计算机跟踪更改?
我有一台用于更改文件的开发机器,我们有 SVN 作为我们的 CM 工具。我们只有一次登录到计算机本身。即使我们只有一台计算机登录,是否有办法以某种方式跟踪存储库中的更改?
换句话说...
计算机有 3 个用户:A、B、C
电脑只有一次登录。
因此,如果用户 A 更改某些内容,然后用户 B 更改某些内容。如何区分这两种变化?
svn - Subversion - 提交重新格式化的文件
我首先会说这完全有可能是不可能的——如果不是,那很好(好吧,这很糟糕,但我会活下去)。我知道可能会有一些“好吧,那无论如何会如何工作?” 围墙在做我想做的事,但是嘿嘿。
我想做的是在不更改任何所有权数据的情况下重新格式化 Subversion 存储库中的大量文件,或者将其变为:
进入这个(新行是无主的):
或者这个(新行归我所有,但更改的行不是):
或任何其他排列。
我想这样做,因为存储库中有很多格式错误的代码,我想在不拥有(几乎)整个事情的所有权的情况下清理它,因为能够很方便地击中 Blame在文件的一侧,查看每一行的最后更改,以及这些更改的原因。使用提交消息和所有权重新格式化将删除存储库的大部分内容,并迫使我们在日志中查找真实的人,然后对其进行比较以确保。
如果有人能想出另一种方法来重新格式化代码而不破坏 Blame,我也愿意就此提出建议。
git - Git责备文件的所有版本
我正在使用 Git 存储库,我需要获取文件的“责备”数据(例如 log-tree.c)。所以,我正在使用以下命令
但是,它只显示文件最后版本的数据,但我需要获取该文件每个版本的“责备”信息。那么,我该怎么做呢?
mercurial - Mercurial 注释/责备给出了不正确的原始修订
我最近在跟踪负责源文件中特定行的变更集时遇到了问题。hg blame
给了我一个从未合并到我感兴趣的分支中的修订。
我发现,如果之前进行了类似的不相关更改,Mercurial 仍会将其显示为原始修订。这是一个错误还是应该表现得像这样?如果是后者,你能解释一下原因吗?
这是最小的示例:
这是回购的样子:
现在,当我运行时,hg blame
我希望看到最后一行来自变更集 2,而不是变更集 1。
git - 有没有类似于 bzr qannotate 的 git blame gui?
作为前bzr
用户和新手,git
我正在尝试为git blame
类似于bzr qannotate
. 后者有2个主要观点:
- 带有简短注释信息的文件内容查看器(谁,在哪个版本中更改了行)+基于提交者 ID 和更改年龄的背景着色。
- 文件日志查看器:当我单击文件内容中的行时,我可以看到该行更改时的修订以及有关它的所有日志信息。
截屏:
我看到 XCode IDE 内置了类似的东西,虽然它在编辑器窗口内,因此不是很方便。
到目前为止,我已经尝试过 GitX 0.7.1 和 Mac 版 GitHub——它们都没有“责备”。
我刚刚检查了适用于 Mac 的 SourceTree,虽然它有责备支持,但它相当简陋,显示的内容几乎与 command-line 相同git blame
,尽管我可以双击该行以在另一个窗口中查看相应的修订和更改。那还不如bzr qannotate
。
还有其他我可以使用的 GUI 工具吗?
version-control - “责备”命令的简化语义是一件好事吗?
我正在研究一种新的基于weave的数据结构来存储版本控制历史。这无疑会在它问世时引发一些关于它是否是正确的做事方式的宗教战争,但这不是我现在的问题。
我的问题与输出责备有关应该给。当一行代码被多次添加、删除和合并到自身中时,并不总是清楚应该归咎于哪个修订版本。值得注意的是,这意味着当一段代码被删除时,它曾经存在的所有记录都消失了,删除没有责任。与我讨论过这个问题的每个人都说,试图做得更好根本不值得。有时人们会说,被删除的部分后面的那一行的责任从它实际上是什么变成了该部分被删除时的修订。据推测,如果该部分位于末尾,那么最后一行的责任就改变了,如果文件最终为空,那么责任确实会消失在以太中,因为实际上没有地方可以放置责任信息。
继续我的实际问题。通常要为每一行负责,您会查看在历史记录中添加和删除它的完整历史记录,并使用三向合并(或者,在交叉合并的情况下,随机胡说八道)并基于这些之间的关系您根据其历史确定该行是否应该存在,如果不应该存在,那么您将其标记为当前版本的新版本。如果一行出现在具有不同责任的多个祖先中,那么它会任意选择继承哪一个。同样,我认为继续这种完全没有记录但事实上的标准做法将是没有争议的。
我的新系统的不同之处在于,它不是基于对整个历史的复杂计算来对给定行是否应该在当前修订版中进行复杂计算,而是简单地查看直接祖先,以及该行是否在任何他们选择任意一个来继承责任。我之所以做出这个改变主要是出于技术原因(出于类似的技术原因和缺乏关心,其他责备实现完全有可能做同样的事情)但在考虑了一下之后,我的一部分实际上更喜欢新行为比旧的更直观和可预测。大家怎么看?
git - Git:发现哪些提交曾经触及过一系列行
我无法弄清楚如何git blame
用于获取曾经触及给定行范围的提交集。有类似的问题,但接受的答案并没有让我走得更远。
假设我有一个从第 1000 行开始的定义foo.rb
。它只有 5 行长,但改变这些行的提交数量是巨大的。如果我做
我得到了(至多)五个改变这些行的不同提交的引用,但我也对“背后”的提交感兴趣。
相似地,
几乎是我想要的,但我无法指定行范围git rev-list
我可以传递一个标志来git blame
获取曾经触及这五行的提交列表,或者构建提取此类信息的脚本的最快方法是什么?让我们暂时忽略定义曾经多于或少于 5 行的可能性。
git - 如何在 Git 中查找特定文件中的特定更改
我在 Git 项目中有一个文件,该文件的特定值在某个时候被某人更改了;我不知道是谁或什么时候。我想找到更改的时间,但我不确定如何在 Git 中跟踪它。
我试过使用git diff <sha1> <sha2>
,但这显示了整个项目的差异,而我想检查一个特定的文件。
git - sed: 解析 git --line-porcelain 输出
这与这个问题有关,但我认为它需要一个单独的问题。
git blame --line-porcelain
的输出是这样的
我将如何使用 sed(或 grep 或 awk)解析来过滤掉提交 sha 和提交时间?在上面的示例中,它应该产生:
我宁愿不依赖 ruby,尽管 perl 单线可能没问题。
version-control - 可以在版本控制下的文件中显示作者(支持责备或注释)的合并/差异工具
合并文件时(对我而言)显示每一行的作者会很有帮助。是否有任何差异或合并工具支持它?