Пользовательская задача git push ant не будет работать в JGit

1

Я пытаюсь выполнить свою собственную задачу git-push ant с помощью JGit, которая должна указывать указанную ветку в удаленный репозиторий, но, похоже, она не работает.

Вот мой код Java для задачи:

  public void setRepository(String repository) {
      this.repository = repository;
  }
  public void setPassword(String password) {
      this.password = password;
  }   
  public void setUsername(String username) {
      this.username = username;
  }     
  public void setUri(String uri) {
      this.uri = uri;
  }     
  public void setBranch(String branch) {
      this.branch = branch;
  }


  public void execute() throws BuildException {
    try{

        Git git = Git.open(new File(repository));            
        CredentialsProvider cp = new UsernamePasswordCredentialsProvider(username, password);
        RefSpec spec = new RefSpec("refs/heads/" + branch + ":refs/heads/" + branch);

        PushCommand pushCommand = git.push();
         pushCommand.setCredentialsProvider(cp).setRemote(uri).setForce(true).setRefSpecs(spec).call();


    }catch (Exception e) {  
        log(e, Project.MSG_ERR);
        throw new BuildException("Could not push repository: " + e.getMessage(), e);

    }

И вот строка из файла сборки Antache Ant:

<gitpush 
    repository="./myrepo" 
    uri="ssh://[email protected]/repo/project.git" 
    branch="mybranch" 
    password="77CJr2xr" />

Я создаю новую ветку и пытаюсь запустить эту задачу. Задача выполняется без исключений, но не влияет на удаленный репозиторий. Я очень новичок в git, так что это может быть глупая ошибка. Я что-то делаю с RefSpec?

  • 0
    PushCommand#call() возвращает PushResult который в свою очередь содержит коллекцию RemoteRefUpdate . Вы проверяли это? Они должны дать вам понять, что толчок на самом деле сделал.
  • 0
    Я получаю сообщение: error: denying non-fast-forward refs/heads/mybranch (you should pull first) попытались error: denying non-fast-forward refs/heads/mybranch (you should pull first) ответ в Google, но безуспешно. Возможно, я сделал что-то не так, создав новую пустую ветку, используя git checkout --orphan mybranch с git rm --cached -r . а затем добавить некоторые файлы к нему?
Теги:
ant
jgit

1 ответ

2
Лучший ответ

Сообщение об ошибке, denying non-fast-forward refs/heads/..., возвращается, если кто-то еще нажал на ту же ветку после того, как вы последний раз набрали или клонировали, и перед тем, как попытаться нажать.

you> git clone ...

bob> git clone ...
bob> git commit
bob> git push

you> git commit
you> git push   <<-- error: denying non-fast-forward

receive.denyNonFastForwards конфигурации receive.denyNonFastForwards удаленного репозитория определяет, разрешены ли обновления без пересылки. Обычно это недопустимо, так как это изменяет историю удаленного репозитория. В приведенном выше примере Боб совершает ошибку.

Найдите "git push-ошибку, отрицающую не-быструю перемотку", чтобы узнать больше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню