2017-06-03 2 views
2

J'essaye de pousser un projet dans gitlab de Java. Je l'ai cloné avec succès mais je ne suis pas capable de pousser avec les changements (en ajoutant quelques fichiers supplémentaires ou en ajoutant plus d'informations au fichier existant). Le code ne contient aucune erreur mais il n'est pas mis à jour dans gitlab.Comment faire pour pousser à gitlab à partir de Java API

Voici mon code

File localPath = File.createTempFile("TestGitRepository", ""); 
    if(!localPath.delete()) { 
     throw new IOException("Could not delete temporary file " + 
localPath); 
    } 

    Git git = Git.cloneRepository() 
      .setURI(REMOTE_URL) 
      .setDirectory(localPath) 
      .setCredentialsProvider(cp) 
      .call(); 
    System.out.println("Cloning from " + REMOTE_URL + " to " + localPath); 


      // Git git=Git.open(dir); 
      File file = new File(git.getRepository().getWorkTree(), "file" + new Object().hashCode()); 
      System.out.println("hi"); 
      file.createNewFile(); 

      git.add().addFilepattern(file.getName()).call(); 

      git.commit().setMessage("Add file " + file.getName()).call(); 

      git.push() .setCredentialsProvider(cp) .call(); 

      System.out.println("Pushed from repository: " + localPath + " to remote repository at " + REMOTE_URL); 

Répondre

2

Ce utilise JGit

Pour la validation de syntaxe, l'utilisation, comme dans l'exemple de livre de cuisine jgit/porcelain/CommitAll.java:

git.commit().setAll(true).setMessage("a message").call(); 

Ce sera la équivalent de git commit -a -m "a message"

+0

Merci. Je vais essayer ce code – Ash

+0

@Ash Ne oubliez pas, pour vos autres questions, de lire https://stackoverflow.com/help/accepted-answer – VonC

+0

Maintenant, après avoir ajouté cette ligne de code, il montre dans gitlab mis à jour moins de il y a une minute. Mais comment éditer un fichier cloné et ensuite le pousser dans gitlab. Parce que dans mon code c'est le clonage et immédiatement il pousse, donc je ne peux pas éditer. Mon utilisation est que je veux le cloner et faire quelques changements et repousser à git. J'ai essayé une méthode clone séparée mais je ne sais pas comment appeler le dossier cloné en méthode push. Y a-t-il un moyen de surmonter ce problème? – Ash