小编Afr*_*ief的帖子

什么使DVCS中的合并变得容易?

我在Joel的软件上读到:

使用分布式版本控制,分布式部分实际上不是最有趣的部分.

有趣的是,这些系统考虑的是变化,而不是版本.

HgInit:

当我们必须合并时,Subversion会尝试查看两个版本 - 我的修改后的代码和修改过的代码 - 它会尝试猜测如何在一个大的邪恶混乱中将它们粉碎在一起.它通常会失败,产生并非真正冲突的"合并冲突"的页面和页面,只是Subversion无法弄清楚我们做了什么的地方.

相比之下,当我们在Mercurial中单独工作时,Mercurial正忙着保留一系列变更集.因此,当我们想要将我们的代码合并在一起时,Mercurial实际上有更多的信息:它知道我们每个人都改变了什么并且可以重新应用这些更改,而不仅仅是查看最终产品并试图猜测如何放置它一起.

通过查看SVN的存储库文件夹,我的印象是Subversion将每个修订版维护为变更集.据我所知,Hg正在使用变更集快照,而Git纯粹使用快照来存储数据.

如果我的假设是正确的,那么必须有其他方法使DVCS中的合并变得容易.那些是什么?

*更新:

  • 我对技术角度更感兴趣,但从非技术角度来看是可以接受的
  • 更正:
    1. Git的概念模型纯粹基于快照.快照可以存储为其他快照的差异,只是差异纯粹用于存储优化.- 拉法洛·道格尔德评论
  • 从非技术角度来看:
    1. 它只是文化:如果合并困难,DVCS根本不会工作,因此DVCS开发人员投入大量时间和精力使合并变得容易.CVCS用户OTOH习惯于糟糕的合并,因此开发人员没有动力让它工作.(为什么当你的用户为你的垃圾付出​​同样的代价时能做些好事?)
      ......
      回顾一下:DVCS的重点是拥有许多分散的存储库并不断地来回合并变化.如果没有良好的合并,DVCS根本就没用.然而,CVCS仍然可以通过糟糕的合并来生存,特别是如果供应商可以调整其用户以避免分支.- JörgWMittag回答
  • 从技术角度来看:
    1. 录制真实DAG的历史确实有帮助!我认为主要区别在于CVCS并不总是将合并记录为与几个父母的变更集,从而丢失了一些信息.- tonfa评论
    2. 因为合并跟踪,以及每个修订都知道其父母的更基本的事实....当每个修订(每次提交),包括合并提交,知道其父项(对于合并提交,意味着拥有/记住多个父项,即合并跟踪),您可以重建图(DAG =直接非循环图)的修订历史.如果您知道修订图,则可以找到要合并的提交的共同祖先.当您的DVCS知道如何找到共同的祖先时,您不需要将其作为参数提供,例如在CVS中.
      .
      请注意,两个(或更多)提交可能有多个共同的祖先.Git利用所谓的"递归"合并策略,它合并了合并基础(共同的祖先),直到你留下一个虚拟/有效的共同祖先(在一些简化中),并且可以做简单的3路合并.- JakubNarębski回答

检查在Git中合并和/或为什么在SVN中的合并更好?

svn git version-control mercurial dvcs

48
推荐指数
4
解决办法
3546
查看次数

如何在没有bot的情况下在电报中制作超链接?

如何在电报中制作HyperLink?如何在没有bot的情况下在电报中制作超链接?我的网站:http://giakesieuthitd.com/

hyperlink telegram

33
推荐指数
7
解决办法
6万
查看次数

HTTPS和BASIC身份验证

当我使用HTTP BASIC身份验证HTTPS时,用户名和密码是否安全地传递给服务器?

如果你能帮助我一些参考资料,我会很高兴的.

我的意思是,如果我能将StackOverflow问答作为参考,比如作业,报告,考试甚至是技术论文,那就太棒了.但我想我还没有.

ssl https basic-authentication

18
推荐指数
1
解决办法
2万
查看次数

如何说服人们说11975行代码的单个类是坏的?(不是吗?)

在阅读[关于11000行C++源文件怎么办?]帖子时,我有dejavu的感觉,但我不认为我可以自己开始采取行动,因为我没有权力采取行动.所以我认为第一步是说服组织中的人们认为大块代码是坏的.

我有一个类似的情况,有一个单独的类有11975行代码,每次有新功能,这个类很有可能变得越来越大.

c++ design-patterns anti-patterns

17
推荐指数
3
解决办法
1237
查看次数

HTTPS,URL路径和查询字符串

这是我之前关于基于HTTPS的BASIC身份验证的问题的后续帖子

如果我使用HTTPS,资源和查询字符串的路径是否安全地传递到服务器?


URI: http:// server/path/to/a/resource?with = a&query = string
Server: server
path:/path/to/a/resource
query string: with = a&query = string

ssl https

16
推荐指数
2
解决办法
5702
查看次数

有没有办法改变TortoiseHg中绘制图形的方式?

习惯于ClearCase如何绘制图形,我发现Mercurial和TortoiseHg的方式乍看之下令人困惑.

就是我希望它代表的方式: 树枝的静态位置(好) 具有分支的静态位置.例如,维护分支始终向左/向右,最好是直线而不是现在的意大利面弯曲分支(见下面的链接).

就是它使用TortoiseHg Explorer的样子.该图来自测试库.:-) TortoiseHg中的图表(坏)

有没有办法改变Mercurial中绘制图形的方式?

[编辑]

查看MacHg及其绘制图表的方式.这更符合我自己想要看到的内容. MacHg中的静态/稳定图

mercurial graph tortoisehg

16
推荐指数
1
解决办法
1927
查看次数

Dart 1.8中的异步/等待功能

它是1.8版本中的实验性功能,如枚举还是不是?我如何在Dart编辑器中使用它?是否有一篇很好的文章或示例应用程序可以让我开始这个?

当它仍然是一个实验性功能时,推荐用于酒吧套餐?是否可以在pub包中使用该功能?

dart dart-editor

11
推荐指数
1
解决办法
1720
查看次数

Delphi:Indy - 如何让错误的响应体?

Delphi6和XE3.

我想得到一个请求的真实响应主体.但是服务器产生错误500.然后Indy用响应的描述替换响应文本.

这个主页也是为了在非异常操作中回答500而设计的,我们需要确定从响应文本中做什么.

当状态代码为500时,我可以从IdHTTP或Exception对象获取响应文本吗?

感谢您的任何信息!

delphi http indy httpresponse

9
推荐指数
1
解决办法
6073
查看次数

如何制作PInvoke友好的原生API?

如何使本机API成为PInvoke友好的?

有关于如何修改本机程序,以P中使用的一些技巧/调用这里.但在我写一个原生程序之前,我应该注意哪些事情让我的程序/库PInvoke友好?

使用C或C++很好.


更新:
如果我编写一个C API,那么我需要做些什么才能使用C#语法进行P/Invoke-able,如下所示:

[DLLimport("MyDLL.dll")]
Run Code Online (Sandbox Code Playgroud)

是否可以对本机C++代码/库执行相同的操作?


关于制作P/Invoke友好本机API的一些技巧的摘要/改
述:+参数应该是本机类型(int,char*,float,...) +如果动态内存被分配和传递,则
参数越少越好
+托管代码,确保创建一个"更清洁"的功能,也是p/invoked
+提供样本和/或单元测试,说明如何从.NET
+ 调用API 提供C++/CLI包装器

.net c c# c++ pinvoke

6
推荐指数
1
解决办法
723
查看次数

窗口句柄(HWND)是唯一的,还是可以重复使用?

我在想是否有相同价值的句柄?

为了澄清我的问题,让我们说我打开记事本,键入一些文本,保存它然后关闭记事本.如果我重复这一千次(甚至更多次),我是否有机会看到第一次使用的记事本主窗口使用相同的窗口句柄(HWND)值?如果是这样,为什么?

windows window-handles

6
推荐指数
2
解决办法
3131
查看次数