小编sve*_*ner的帖子

如何重写Git历史记录以便所有文件都在子目录中?

我想将多个Git存储库(比如repoA和repoB)合并到一个新的存储库中.新存储库(repoNew)应该在单独的子目录中包含每个repoA和repoB.由于我到目前为止只在本地工作,我可以做我想要的任何存储库.

在这种情况下,似乎标准的方法是使用git filter-branch重写每个repoA和repoB的历史,使它看起来好像它们一直在子文件夹中,然后将它们合并到repoNew中.

第一步是困扰我的事情.我很清楚如何回答历史记录,以便所有文件(除了我已经移动过的文件)都在子目录中?(Dan Molding的答案),这正是我想要的.

他提出了类似的建议:

git filter-branch --prune-empty --tree-filter '
if [[ ! -e repoA ]]; then
    mkdir -p repoA
    git ls-tree --name-only $GIT_COMMIT | xargs -i mv {} repoA
fi'
Run Code Online (Sandbox Code Playgroud)

结果应该是下面的文件夹结构<repoA-GIT-base>现在应该在<repoA-GIT-base>/repoA.然而,这种情况并非如此.以上命令在不同的提交中随机失败,并显示"mv:无法将'src'移动到'repoA/src'之类的消息

如上所述重写历史记录时如何避免错误的提交?

编辑:

您应该考虑.gitignore从移动中排除这样:

git filter-branch --prune-empty --tree-filter '
if [[ ! -e repoA ]]; then 
    mkdir -p repoA;
    git ls-tree --name-only $GIT_COMMIT | 
    grep -ve '^.gitignore$' | 
    xargs -i mv {} repoA; 
fi'
Run Code Online (Sandbox Code Playgroud)

该命令似乎仍然随机失败.我试了好几次,每次在不同的提交中都发生了"无法移动"的失败.我观察到,当我排除.gitignore …

git git-filter-branch git-rewrite-history

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

如何使用JPA验证模型数据?

我试图让JPA验证工作,但似乎忽略了验证注释.我在SO:JPA Entity Validation上找到了JPA验证的这个例子,但它对我不起作用.这些@NotNull@Size注释似乎被忽略了.

如上面提到的答案,我只使用两个类:

Customer.java:

package com.validation.test;

import javax.persistence.*;
import javax.validation.constraints.*;

@Entity
@Table(name = "T_CUSTOMER")
public class Customer {
    @Id
    @NotNull
    @SequenceGenerator(name = "customerIdSeq", sequenceName = "T_CUSTOMER_ID_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "customerIdSeq")
    private Long id;

    @NotNull
    @Size(min = 3, max = 80)
    private String name;

    public Customer() {};

    public Customer(String name) {
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = …
Run Code Online (Sandbox Code Playgroud)

java validation jpa eclipselink

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