小编Jos*_*uss的帖子

Git - diff3冲突风格 - 临时合并分支

我正在与merge.conflictStyleset进行合并diff3.通常,这会插入由四(4)组字符分隔的三(3)个部分.

合并Git文档清楚地解释了这些符号对于简单案例的含义(如下所述).

常规diff3:

Here are lines that are either unchanged from the common ancestor, or cleanly resolved because only one side changed.
<<<<<<< yours:sample.txt
Conflict resolution is hard;
let's go shopping.
|||||||
Conflict resolution is hard.
=======
Git makes conflict resolution easy.
>>>>>>> theirs:sample.txt
And here is another line that is cleanly resolved or unmodified.
Run Code Online (Sandbox Code Playgroud)

但是,我得到了一个更复杂的结果,有许多额外的行(见下文).我有一种感觉,这与我正在合并的提交的祖先中进行了大量合并这一事实有关,但我无法弄清楚额外的行是什么意思.我似乎也找不到这种行为的任何文档.

这是我得到的(编辑当然,以保护代码的身份).

(我试图合并的任何提交的代码中都没有冲突标记,所以这不是答案.)

<<<<<<< ours
||||||| base
<<<<<<< Temporary merge branch 1
||||||| merged common ancestors
        if (sendRedirect(result)) …
Run Code Online (Sandbox Code Playgroud)

git merge git-merge diff3

20
推荐指数
1
解决办法
3329
查看次数

Spring Boot 测试中的严格@MockBean

我正在开发一个 Spring Boot 应用程序。对于我的常规服务类单元测试,我可以使用 扩展我的测试类MockitoExtension,并且模拟很严格,这就是我想要的

interface MyDependency {
  Integer execute(String param);
}

class MyService {
  @Autowired MyDependency myDependency;

  Integer execute(String param) {
    return myDependency.execute(param);
  }
} 

@ExtendWith(MockitoExtension.class)
class MyServiceTest {
  @Mock
  MyDependency myDependency;

  @InjectMocks
  MyService myService;

  @Test
  void execute() {
    given(myDependency.execute("arg0")).willReturn(4);
    
    myService.execute("arg1"); //will throw exception
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,将引发异常并显示以下消息(已编辑):

org.mockito.exceptions.misusing.PotentialStubbingProblem: 
Strict stubbing argument mismatch. Please check:
 - this invocation of 'execute' method:
    myDependency.execute(arg1);
 - has following stubbing(s) with different arguments:
    1. myDependency.execute(arg0);
Run Code Online (Sandbox Code Playgroud)

此外,如果从未使用过存根,则会出现以下内容(已编辑):

org.mockito.exceptions.misusing.UnnecessaryStubbingException: 
Unnecessary stubbings detected. …
Run Code Online (Sandbox Code Playgroud)

java mockito spring-boot spring-boot-test

10
推荐指数
1
解决办法
1643
查看次数

Git:Git什么时候进行垃圾收集?

我想知道:Git什么时候进行垃圾收集?我知道在过去必须调用git gc手动启动垃圾收集,但现在它是自动完成的,何时?

另外,是否需要在最新的Git版本中手动调用它?

git version-control garbage-collection git-gc

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

git smart line和单词差异

我想git diff将常规逐行diff与结合在一起git diff --word-diff。逐行比较的问题在于,如果我更改一个或两个单词并使该行基本保持原样,则它们是不必要的-分块过于粗糙。另一方面,如果我改变整行并使用--word-diff,有时diff算法将变得混乱并吐出令人难以置信的diff,插入和删除了大量单词以将一行“变形”为另一行。

是否有一种方法可以指定git应该对此明智的方法,并且仅--word-diff在这样做确实有意义时(当然,逐行)?

regex git diff line-by-line word-diff

5
推荐指数
1
解决办法
984
查看次数

仅变基/重播合并提交

有没有办法自动对大量合并提交进行变基?另一个问题Rebase a Git merge commit 的答案建议使用--preserve-merges,但这也会对非合并提交进行 rebase。

当将功能分支合并到主分支或集成分支,然后发现其他人刚刚推送了更改时,这种行为是不需要的。此外,能够将开发分支重新建立到新的主提交上,或者从开发中删除不会使用的修复也很有用。

例如,考虑到以下情况:

* 7909b1a (origin/master) Merge bug/456
|\
| * f9d43b6 (origin/bug/456) 456 - Change color
|/
| * 32666f3 (HEAD, master) Merge branch 'bug/123'
| |\
|/ /
| * 0939652 (origin/bug/123, bug/123) 123 - Fix Spelling
|/
o 96c9aa9 (tag: v1.1.1)
Run Code Online (Sandbox Code Playgroud)

如果我运行git rebase --preserve-merges origin/master,将产生以下结果:

* (HEAD, master) Merge branch 'bug/123'
|\
| * 8e6ccbe 123 - Fix Spelling
|/
* 7909b1a (origin/master) …
Run Code Online (Sandbox Code Playgroud)

git git-merge git-rebase

5
推荐指数
1
解决办法
1037
查看次数

git push --atomic - 没有失败

我一直在尝试对 使用相对较新的--atomic选项git push,但它对我不起作用,即,即使其他引用失败,它仍然允许某些引用更改。

这里的差异看来,远程服务器上也需要一些东西来接受原子标志。虽然这是有道理的,但似乎默认是使用它。

我正在使用 http 协议推送到 BitBucket 服务器实例。服务器上当前的 Git 版本是“git version 2.8.1”。

是否需要在服务器上配置某些内容才能使其正常工作?

编辑:

下面是一个可以复制的例子。

服务器上的配置:

$ git --version
git version 2.8.1

$ git config --get-all --show-origin  receive.advertiseatomic
file:/home/bitbucket/.gitconfig 1
Run Code Online (Sandbox Code Playgroud)

在客户端:

$ git --version
git version 2.8.2.windows.1

$ git push <local-path>/.git HEAD:refs/heads/wwww HEAD:refs/heads/zzz --force-with-lease=zzz --atomic
error: atomic push failed for ref refs/heads/zzz. status: 7

fatal: The remote end hung up unexpectedly
To <local-path>/.git
 ! [rejected]        HEAD -> wwww (atomic push failed)
 ! [rejected] …
Run Code Online (Sandbox Code Playgroud)

git git-push

5
推荐指数
1
解决办法
1579
查看次数

Java 记录 - 测试 - 修改字段

我有一个专门用于在运行时设置字段的测试框架。目的是设置测试用例。期待升级到 Java 14+ 记录,我注意到现有实用程序(例如ReflectionTestUtils.setFieldPropertyAccessorFactory.forDirectFieldAccess)适用于普通私有最终字段,但不适用于记录字段。

这是 JVM 的限制,还是这些实用程序的限制?

java testing reflection java-record

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