小编kro*_*old的帖子

重写GIT历史的实际后果是什么?

我们的项目已经使用git一个星期左右了,而且我们都非常享受它(在紧密的协作组中,它变成了一个完全不同的git体验).为了使事情尽可能简单,我们不会进行任何变基或历史修改.但我们确实在第一周犯了一些错误.做了一些不应该做的提交,我们设法将一个功能分支合并到错误的集成分支(1.1而不是1.0).在他们长期进入我们的历史之前,我们没有发现这些事情.

现在我看到很多关于重写历史的警告,但我不确定我是否理解所涉及的危险.我们使用共享的裸存储库,并将所有分支推送到那里进行备份.

我希望如果你重写历史记录(比如删除一个提交),后续提交的完整列表将"丢失"该提交(并且可能不会编译/工作).我也希望如果发生这种情况,我实际上可以选择在历史的顶部解决这个问题(并将这部分历史留作非编译).

  • 如果我重写历史(并且所有编译/工作在所有受影响的分支中),我的同事是否需要执行任何特殊命令)?(换句话说,如果我做得好,他们会"知道我已经做过了吗?"
  • 任何具有我不知道的本地更改的用户是否有资格在git pull上合并失败?
  • 我错过了这里必不可少的东西吗

任何关于这个主题的文章/教程的参考也会非常好.

git git-rebase

24
推荐指数
2
解决办法
6006
查看次数

如何在maven2中跟踪插件依赖项?

我试图找到一个邪恶的插件,其中包括某个jar文件的stoneage版本.我怎么做 ?

java maven-2 maven-plugin

23
推荐指数
2
解决办法
9114
查看次数

java中的包级保护有什么用?

我知道java中的包级保护是如何工作的.我了很多代码(包括许多开源代码),似乎没有人使用它.整个保护级别对我来说似乎有点不对(我在一周的任何一天都有c#内部).

是否存在常用的合法的现实用例?

编辑:在问这个问题后有点太晚了,我意识到我忘了排除包受保护的实现类的"标准"模式,可能提供公共接口的实现.每个人都使用这些,正如回复中多次提到的那样.我仍然认为这个问题有很多很好的回复.

java

22
推荐指数
4
解决办法
2万
查看次数

我可以将maven2"target"文件夹移动到另一台设备吗?

我真的想让maven将"target"文件夹写入另一个设备(ramdisk),我通常认为这是一个不同的路径.有没有符合maven2标准的方法呢?

我试图在Windows上解决这个问题,并且首选符合maven的策略.

java maven-2

21
推荐指数
2
解决办法
7709
查看次数

在具有连续重构的项目上使用git/mercurial?

我想知道我是否真的有任何使用git/mercurial的情况.

我工作的项目是java和c#项目,通常有5-20人为共同目标("发布")而努力.大部分的开发商是专业的开发谁重构代码,所有的时间.因此,典型的Linux内核在单独的文件中有大量相对独立的更改,我们有不断变化的重构 - 通常会遇到大量文件和大量代码.没有人害怕在这里改变代码.

现在有了颠覆,我们通过非常接近SVN HEAD来解决这个问题.我们中的一些人甚至在构建服务器的jabber广播上触发了自动svn up.我们大多数人也学会了(或者很快学会)如何规划我们的工作以保持与SVN HEAD的接近.如果你正在进行一次重大的重构,我们会逐步将源树弯曲到新的方向,而不是消失太久.有时您只是计划重构操作并在较少竞争的区域开始.经过这么多年的工作,它成为第二天性.我们大多数人从不离开距离svn头不到2小时的"舒适区".自动构建和svn头是项目"脉冲",我们喜欢它.

当然,我们分支每个版本,但从发布分支回到主干的后退数量迅速减少到足以使其无关紧要(我们已经获得了不错的测试覆盖率).与源的私人分支一起运行数天/周听起来像我们积极想要阻止的事情,并且它不会经常发生.

git和mercurial声音都很酷,git略微更多,因为我更像是McGyver类型而不是James Bond类型.但是当谈到建立实际转换的案例时,感觉就像Linus和我生活在两个不同的星球上.大多数时候,我们希望我们的团队专注于HEAD.

GIT如何让我的版本控制更好?GIT如何让我改进我的流程?我是颠覆恐龙吗?

git version-control refactoring

20
推荐指数
2
解决办法
1758
查看次数

邪恶合并在git?

"man gitglossary "包含邪恶合并的这个定义:

邪恶合并是一种合并,它引入了未出现在任何父级中的更改.

我不确定我理解作者想要达到的观点.为什么这是邪恶的?

git merge

20
推荐指数
4
解决办法
6106
查看次数

如何在git功能分支工作流中处理xml/html?

我们的项目在代码相当近的范围内工作(在代码的相当小的地理区域中并行发生了很多变化),而我们的基于特征分支的git工作流对我们的java代码非常有用.

但是xml/html的东西效果不好.简单的无关更改(设计者添加了一个周围的div,一个开发人员更改了一个元素的id)给出了非常糟糕的合并.

我意识到如何处理这个问题可能有几种选择.一个好的git xml合并将是最佳的,或者限制重新格式化xml/html代码.不在如此紧密的地方工作将是另一个(不可接受的)选择.

你如何有效地解决这个问题?

html xml git merge

20
推荐指数
2
解决办法
8410
查看次数

我可以制作git-svn句柄svn:eol-style?

许多svn存储库要求新文件具有svn:eol-style属性.有没有办法确保git-svn发生这种情况?

git git-svn

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

java.util.stream.Streamable发生了什么?

早期jdk8-ea的javadoc 这样表示有一个java.util.stream.Streamable接口,它似乎有一个同样的关系Stream作为Iterable必须的Iterator.

现在好像我们被困住了Supplier<Stream>,这肯定是不一样的.

发生什么事了Streamable

java java-8 java-stream

17
推荐指数
1
解决办法
2978
查看次数

去松散耦合和依赖注入的香蕉

随着我们的依赖注入框架(春季注释)的最新成员,创建DI管理组件的边际成本似乎已达到一个关键的新门槛.虽然之前有一个与spring相关的开销(大量的XML和额外的间接性),依赖注入似乎已经开始进入许多模式的地方; 他们陷入困境并"消失".

其结果是与大量组件相关的概念开销变得可接受.有争议的是,我们可以创建一个系统,其中大多数类只暴露一个单一的公共方法,并通过像疯狂一样聚合这些部分来构建整个系统.在我们的例子中,给出了一些东西; 应用程序的用户界面具有一些功能要求,可以塑造最顶层的服务.后端系统控制下半部分.但在这两者之间,一切都在争夺中.

我们不断的讨论真的,我们为什么要分组东西类以及应该怎样的原则?有几件事是肯定的; 门面图案已经死亡并被埋葬.任何包含多个不相关功能的服务也往往会被拆分."无关特征"的解释比我之前所做的更为严格.

在我们的团队中,有两种流行的思路:实现依赖性限制分组; 单个类中的任何功能最好应该是所有注入依赖项的客户端.我们是一个DDD项目,另一个部分认为域限制分组(CustomerService或更细粒度的CustomerProductService,CustomerOrderService) - 注入依赖项的规范化使用并不重要.

那么在松散耦合的DI宇宙中,为什么我们要在类中对逻辑进行分组?

编辑:duffymo指出,这可能正朝着功能性的编程方式发展; 这带来了国家问题.我们有很多"状态"对象代表(小)相关应用程序状态.我们将这些注入任何对此状​​态有合法需求的服务.(我们使用"状态"对象而不是常规域对象的原因是spring在未指定的时间构造它们.我将此视为一种轻微的解决方法或替代解决方案,让spring管理域对象的实际创建.可能有更好的解决方案这里).

因此,例如任何需要OrderSystemAccessControlState的服务都可以注入这个,并且消费者不容易知道这些数据的范围.一些安全相关状态通常用于许多不同的级别,但在中间的级别上完全不可见.我真的认为这从根本上违背了功能原则.我甚至很难从OO角度调整这个概念 - 但只要注入状态是精确且强类型,那么需要是合法的,即用例是正确的.

dependency-injection

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