代码之家  ›  专栏  ›  技术社区  ›  Gana

使用java client-org将文件添加到GitHub。日食egit。github。果心

  •  3
  • Gana  · 技术社区  · 7 年前

    组织。日食egit。github。果心客户RequestException:请求无效。

    nil不是字符串。对于“属性/电子邮件”,nil不是字符串。对于 “properties/name”,nil不是字符串。(422)在 组织。日食egit。github。果心客户GitHubClient。createException(GitHubClient.java:552) 组织。日食egit。github。果心客户GitHubClient。sendJson(GitHubClient.java:643) 在 组织。日食egit。github。果心客户GitHubClient。post(GitHubClient.java:757) 组织。日食egit。github。果心服务数据服务。createCommit(DataService.java:397)

    我感觉它正在期待一些财产,但如何提供这是不清楚的。我错过了什么?

    参考 https://gist.github.com/Detelca/2337731

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Collection;
    import java.util.Date;
    import java.util.List;
    
    import org.eclipse.egit.github.core.Blob;
    import org.eclipse.egit.github.core.Commit;
    import org.eclipse.egit.github.core.CommitUser;
    import org.eclipse.egit.github.core.Reference;
    import org.eclipse.egit.github.core.Repository;
    import org.eclipse.egit.github.core.RepositoryCommit;
    import org.eclipse.egit.github.core.Tree;
    import org.eclipse.egit.github.core.TreeEntry;
    import org.eclipse.egit.github.core.TypedResource;
    import org.eclipse.egit.github.core.User;
    import org.eclipse.egit.github.core.client.GitHubClient;
    import org.eclipse.egit.github.core.service.CommitService;
    import org.eclipse.egit.github.core.service.DataService;
    import org.eclipse.egit.github.core.service.RepositoryService;
    import org.eclipse.egit.github.core.service.UserService;
    
    public class GHWriter {
    
    public static void main(String[] args) {
        try {
            new GHWriter().writeFile("test_two.txt", "test content");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    //https://gist.github.com/Detelca/2337731
    public boolean writeFile(String fileName, String fileContent) throws IOException{
        // initialize github client
        GitHubClient client = new GitHubClient();
        //TextView password = (TextView)findViewById(R.id.textViewPassword);
        client.setCredentials("username", "password");
    
        // create needed services
        RepositoryService repositoryService = new RepositoryService();
        CommitService commitService = new CommitService(client);
        DataService dataService = new DataService(client);
    
        // get some sha's from current state in git
        Repository repository =  repositoryService.getRepository("username", "repositoryName");
        String baseCommitSha = repositoryService.getBranches(repository).get(0).getCommit().getSha();
        RepositoryCommit baseCommit = commitService.getCommit(repository, baseCommitSha);
        String treeSha = baseCommit.getSha();
    
        // create new blob with data
        Blob blob = new Blob();
            blob.setContent("[\"" + System.currentTimeMillis() + "\"]").setEncoding(Blob.ENCODING_UTF8);
        String blob_sha = dataService.createBlob(repository, blob);
        Tree baseTree = dataService.getTree(repository, treeSha);
    
        // create new tree entry
        TreeEntry treeEntry = new TreeEntry();
        treeEntry.setPath("testfile.txt");
        treeEntry.setMode(TreeEntry.MODE_BLOB);
        treeEntry.setType(TreeEntry.TYPE_BLOB);
        treeEntry.setSha(blob_sha);
        treeEntry.setSize(blob.getContent().length());
        Collection<TreeEntry> entries = new ArrayList<TreeEntry>();
        entries.add(treeEntry);
        Tree newTree = dataService.createTree(repository, entries, baseTree.getSha());
    
        // create commit
        Commit commit = new Commit();
            commit.setMessage("first commit at " + new Date(System.currentTimeMillis()).toLocaleString());
        commit.setTree(newTree);
    
        UserService userService = new UserService( client );
        User user = userService.getUser();
        CommitUser author = new CommitUser();
        author.setName( user.getName() );
        Calendar now = Calendar.getInstance();
        author.setDate(now.getTime());
        commit.setAuthor(author);
        commit.setCommitter(author);
    
    
        List<Commit> listOfCommits = new ArrayList<Commit>();
        listOfCommits.add(new Commit().setSha(baseCommitSha));
        // listOfCommits.containsAll(base_commit.getParents());
        commit.setParents(listOfCommits);
        // commit.setSha(base_commit.getSha());
        Commit newCommit = dataService.createCommit(repository, commit);
    
        // create resource
        TypedResource commitResource = new TypedResource();
        commitResource.setSha(newCommit.getSha());
        commitResource.setType(TypedResource.TYPE_COMMIT);
        commitResource.setUrl(newCommit.getUrl());
    
        // get master reference and update it
        Reference reference = dataService.getReference(repository, "heads/master");
            reference.setObject(commitResource);
            dataService.editReference(repository, reference, true);
            System.out.println("Committed URL: "+ newCommit.getUrl());
        return false;    
    }
    
    }
    

    1 回复  |  直到 5 年前
        1
  •  0
  •   Gana    5 年前

    添加以下两行可以解决问题:

    author.setName( userName );
    author.setEmail(email);