【问题标题】:custom apache ant task git-add (jgit) is not working自定义 apache ant 任务 git-add (jgit) 不工作
【发布时间】:2014-09-09 12:48:04
【问题描述】:

我编写了使用 jgit 的自定义 ant 任务。它应该将本地存储库地址与目录地址一起并将目录中的所有文件添加到索引中。它构建成功,但不幸的是它不起作用。我对此完全陌生,所以我想知道你们中的一些人是否可以帮助我找到问题或我缺少什么。这是我的代码:

package customGitTasks;

import java.io.File;

import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import org.eclipse.jgit.api.AddCommand;
import org.eclipse.jgit.api.Git;


public class GitAdd extends Task{

    private String dir;
    private String repository;

    public void setRepository(String repository) {
        this.repository = repository;
        }

    public void setDir(String dir) {
        this.dir = dir;
        }

public void execute() throws BuildException {
    try {

        Git git = Git.open(new File(repository));
        AddCommand add = git.add();
        add.addFilepattern(dir).call();

    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
}
}

谢谢

【问题讨论】:

    标签: java git ant jgit git-add


    【解决方案1】:

    JGit 提供了一个 git-add ant 任务以及其他 git related tasks(gitadd、gitcheckout、gitclone、gitinit)。
    要么使用该任务 => get the jarfile here,要么查看 sources of gitadd task 以获得灵感。
    注意 - 在 Windows 操作系统上运行时,您需要修补 git-add 任务以使其工作:

    // original line 149
    //return new File(file).getCanonicalPath().substring(prefix.length() + 1);
    
    String result = new File(file).getCanonicalPath().substring(prefix.length() + 1);
    if (File.separatorChar != '/') {
      result = result.replace(File.separatorChar, '/');
    }
    return result;
    

    表示文件分隔符必须是 unix 样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2016-11-22
      • 2021-11-06
      • 1970-01-01
      相关资源
      最近更新 更多