我们的项目已经使用git一个星期左右了,而且我们都非常享受它(在紧密的协作组中,它变成了一个完全不同的git体验).为了使事情尽可能简单,我们不会进行任何变基或历史修改.但我们确实在第一周犯了一些错误.做了一些不应该做的提交,我们设法将一个功能分支合并到错误的集成分支(1.1而不是1.0).在他们长期进入我们的历史之前,我们没有发现这些事情.
现在我看到很多关于重写历史的警告,但我不确定我是否理解所涉及的危险.我们使用共享的裸存储库,并将所有分支推送到那里进行备份.
我希望如果你重写历史记录(比如删除一个提交),后续提交的完整列表将"丢失"该提交(并且可能不会编译/工作).我也希望如果发生这种情况,我实际上可以选择在历史的顶部解决这个问题(并将这部分历史留作非编译).
任何关于这个主题的文章/教程的参考也会非常好.
我试图找到一个邪恶的插件,其中包括某个jar文件的stoneage版本.我怎么做 ?
我知道java中的包级保护是如何工作的.我读了很多代码(包括许多开源代码),似乎没有人使用它.整个保护级别对我来说似乎有点不对(我在一周的任何一天都有c#内部).
是否存在常用的合法的现实用例?
编辑:在问这个问题后有点太晚了,我意识到我忘了排除包受保护的实现类的"标准"模式,可能提供公共接口的实现.每个人都使用这些,正如回复中多次提到的那样.我仍然认为这个问题有很多很好的回复.
我真的想让maven将"target"文件夹写入另一个设备(ramdisk),我通常认为这是一个不同的路径.有没有符合maven2标准的方法呢?
我试图在Windows上解决这个问题,并且首选符合maven的策略.
我想知道我是否真的有任何使用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工作流对我们的java代码非常有用.
但是xml/html的东西效果不好.简单的无关更改(设计者添加了一个周围的div,一个开发人员更改了一个元素的id)给出了非常糟糕的合并.
我意识到如何处理这个问题可能有几种选择.一个好的git xml合并将是最佳的,或者限制重新格式化xml/html代码.不在如此紧密的地方工作将是另一个(不可接受的)选择.
你如何有效地解决这个问题?
许多svn存储库要求新文件具有svn:eol-style属性.有没有办法确保git-svn发生这种情况?
早期jdk8-ea的javadoc 这样表示有一个java.util.stream.Streamable接口,它似乎有一个同样的关系Stream作为Iterable必须的Iterator.
现在好像我们被困住了Supplier<Stream>,这肯定是不一样的.
发生什么事了Streamable?
随着我们的依赖注入框架(春季注释)的最新成员,创建DI管理组件的边际成本似乎已达到一个关键的新门槛.虽然之前有一个与spring相关的开销(大量的XML和额外的间接性),依赖注入似乎已经开始进入许多模式的地方; 他们陷入困境并"消失".
其结果是与大量组件相关的概念开销变得可接受.有争议的是,我们可以创建一个系统,其中大多数类只暴露一个单一的公共方法,并通过像疯狂一样聚合这些部分来构建整个系统.在我们的例子中,给出了一些东西; 应用程序的用户界面具有一些功能要求,可以塑造最顶层的服务.后端系统控制下半部分.但在这两者之间,一切都在争夺中.
我们不断的讨论真的,我们为什么要分组东西类以及应该怎样的原则?有几件事是肯定的; 门面图案已经死亡并被埋葬.任何包含多个不相关功能的服务也往往会被拆分."无关特征"的解释比我之前所做的更为严格.
在我们的团队中,有两种流行的思路:实现依赖性限制分组; 单个类中的任何功能最好应该是所有注入依赖项的客户端.我们是一个DDD项目,另一个部分认为域限制分组(CustomerService或更细粒度的CustomerProductService,CustomerOrderService) - 注入依赖项的规范化使用并不重要.
那么在松散耦合的DI宇宙中,为什么我们要在类中对逻辑进行分组?
编辑:duffymo指出,这可能正朝着功能性的编程方式发展; 这带来了国家问题.我们有很多"状态"对象代表(小)相关应用程序状态.我们将这些注入任何对此状态有合法需求的服务.(我们使用"状态"对象而不是常规域对象的原因是spring在未指定的时间构造它们.我将此视为一种轻微的解决方法或替代解决方案,让spring管理域对象的实际创建.可能有更好的解决方案这里).
因此,例如任何需要OrderSystemAccessControlState的服务都可以注入这个,并且消费者不容易知道这些数据的范围.一些安全相关状态通常用于许多不同的级别,但在中间的级别上完全不可见.我真的认为这从根本上违背了功能原则.我甚至很难从OO角度调整这个概念 - 但只要注入状态是精确且强类型,那么需要是合法的,即用例是正确的.
git ×5
java ×4
maven-2 ×2
merge ×2
git-rebase ×1
git-svn ×1
html ×1
java-8 ×1
java-stream ×1
maven-plugin ×1
refactoring ×1
xml ×1