centic9 / jgit-cookbook

Provides examples and code snippets for the JGit Java Git implementation
Apache License 2.0
1.76k stars 507 forks source link

Could not push to Remote Repository on github pages #70

Closed tranninhnhatgau closed 4 years ago

tranninhnhatgau commented 4 years ago

Dear JGit Cookbook Developers, I am very happy with your guide when I found this!

I have done with some task like Clone Remote Repository, it works well.

But I could not push some new files on remote Repository to github, I want to upload some file into my github repository here https://tranninhnhatgau:200213200213200213@github.com/tranninhnhatgau/tranninhnhatgau.git

But it raise error as below:

Cloning from https://tranninhnhatgau:200213200213200213@github.com/tranninhnhatgau/tranninhnhatgau.git to C:\Users\*~1.LOC\AppData\Local\Temp\TestGitRepository7048146356004889332
Cloning from file://C:\Users\*~1.LOC\AppData\Local\Temp\TestGitRepository7048146356004889332 to C:\Users\*~1.LOC\AppData\Local\Temp\TestGitRepository7018905737604261703
Result: Git[Repository[C:\Users\*~1.LOC\AppData\Local\Temp\TestGitRepository7018905737604261703\.git]]
Exception in thread "main" org.eclipse.jgit.api.errors.TransportException: origin: not found.
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:191)
    at org.dstadler.jgit.unfinished.PushToRemoteRepository.main(PushToRemoteRepository.java:78)
Caused by: org.eclipse.jgit.errors.NoRemoteRepositoryException: origin: not found.
    at org.eclipse.jgit.transport.TransportLocal$1.open(TransportLocal.java:132)
    at org.eclipse.jgit.transport.TransportBundleFile$1.open(TransportBundleFile.java:107)
    at org.eclipse.jgit.transport.Transport.open(Transport.java:552)
    at org.eclipse.jgit.transport.Transport.openAll(Transport.java:368)
    at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:155)
    ... 1 more

Here is my code:

package org.dstadler.jgit.unfinished;

/*
   Copyright 2013, 2014 Dominik Stadler

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 */

import org.apache.commons.io.FileUtils;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;

import java.io.File;
import java.io.IOException;

/**
 * Note: This snippet is not done and likely does not show anything useful yet
 *
 * @author dominik.stadler at gmx.at
 */
public class PushToRemoteRepository {

//    private static final String REMOTE_URL = "https://github.com/github/testrepo.git";
    private static final String REMOTE_URL = "https://tranninhnhatgau:200213200213200213@github.com/tranninhnhatgau/tranninhnhatgau.git";
    //https:tranninhnhatgau:200213200213200213//github.com/tranninhnhatgau/tranninhnhatgau.git
    //git clone https://myusername:mypassword@github.com/path_to/myRepo.git

    public static void main(String[] args) throws IOException, GitAPIException {
        // prepare a new folder for the cloned repository
        File localPath = File.createTempFile("TestGitRepository", "");
        if(!localPath.delete()) {
            throw new IOException("Could not delete temporary file " + localPath);
        }

        // then clone
        System.out.println("Cloning from " + REMOTE_URL + " to " + localPath);
        try (Git result = Git.cloneRepository()
                .setURI(REMOTE_URL)
                .setDirectory(localPath)
                .call()) {
            // prepare a second folder for the 2nd clone
            File localPath2 = File.createTempFile("TestGitRepository", "");
            if(!localPath2.delete()) {
                throw new IOException("Could not delete temporary file " + localPath2);
            }

            // then clone again
            System.out.println("Cloning from file://" + localPath + " to " + localPath2);
            try (Git result2 = Git.cloneRepository()
                    .setURI("file://" + localPath)
                    .setDirectory(localPath2)
                    .call()) {
                System.out.println("Result: " + result2);

                // now open the created repository
                FileRepositoryBuilder builder = new FileRepositoryBuilder();
                try (Repository repository = builder.setGitDir(localPath2)
                        .readEnvironment() // scan environment GIT_* variables
                        .findGitDir() // scan up the file system tree
                        .build()) {
                    try (Git git = new Git(repository)) {
                        git.push()
                                .call();
                    }

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

        // clean up here to not keep using more and more disk-space for these samples
        FileUtils.deleteDirectory(localPath);
    }
}

Can anybody help me!

Thank you and Best Regards,

centic9 commented 4 years ago

Based on the error message I'd say you miss setting up the remote definition and this is not done automatically when you use JGit to clone a repository.

But in general please follow the note for this repository and issue template about asking questions about JGit:

Note: Please use sites such as http://stackoverflow.com for general questions about JGit usage, not issues in this project. Issues should be used for problems with snippets and suggestions of missing snippets. Snippets from good answers on stackoverflow can then be included here, naturally.

Therefore I am closing this here, please post the question on stackoverflow, you surely will get help there.