使用JGit修改一个存储库,即使在提交之后也不会改变任何东西

iyr7buue  于 2023-05-21  发布在  Git
关注(0)|答案(2)|浏览(112)

下面是我的代码:

postbody = usabled;
                            String pathToClone = "./repo";
                            Git git = Git.cloneRepository()
                                    .setURI("https://github.com/Glitch31415/rws.git")
                                    .setDirectory(new File(pathToClone))
                                    .call();
                            System.out.println("remade local repo");
                            if (windows == true) {
                                new File(git.getRepository().getDirectory().getParent() + "\\community\\", postname);
                            }
                            else {
                                new File(git.getRepository().getDirectory().getParent() + "/community/", postname);
                            }
                        
                            try {
                                FileWriter myWriter;
                                if (windows == true) {
                                    myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "\\community\\" + postname);
                                    System.out.println("writing the file to " + git.getRepository().getDirectory().getParent() + "\\community\\" + postname);
                                }
                                else {
                                    myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "/community/" + postname);
                                    System.out.println("writing the file to " + git.getRepository().getDirectory().getParent() + "/community/" + postname);
                                }

                                myWriter.write(postbody);
                                System.out.println("wrote " + postbody);
                                myWriter.close();
                              } catch (IOException e) {
                                e.printStackTrace();
                            }
                            git.add().addFilepattern(postname).call();
                            try {
                                try {
                                    File myObj;
                                    if (windows == true) {
                                          myObj = new File(git.getRepository().getDirectory().getParent() + "\\community\\index");
                                    }
                                    else {
                                          myObj = new File(git.getRepository().getDirectory().getParent() + "/community/index");
                                    }

                                      Scanner myReader = new Scanner(myObj);
                                      while (myReader.hasNextLine()) {
                                        st = st + myReader.nextLine() + "\n";
                                      }
                                      myReader.close();
                                    } catch (FileNotFoundException e) {
                                      e.printStackTrace();
                                    }
                                System.out.println("index was read as '" + st + "'");
                                FileWriter myWriter;
                                if (windows == true) {
                                    myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "\\community\\index");
                                }
                                else {
                                    myWriter = new FileWriter(git.getRepository().getDirectory().getParent() + "/community/index");
                                }

                                
                                myWriter.write(st+postname+"\n");
                                myWriter.close();
                              } catch (IOException e) {
                                e.printStackTrace();
                            }
                            git.add().addFilepattern("/community/index").call();
                            git.commit().setMessage("Committed from server").call();
                            PushCommand pushCommand = git.push();
                            pushCommand.setCredentialsProvider(new UsernamePasswordCredentialsProvider("key", ""));
                            pushCommand.call();
                            Path directory = Path.of(pathToClone);
                            Files.walk(directory)
                            .sorted(Comparator.reverseOrder())
                            .map(Path::toFile)
                            .forEach(File::delete);

这段代码创建一个新文件,写入其中,然后修改另一个文件,并在文件末尾追加一些内容。所有这些都在本地克隆存储库中工作。但是,当我运行commit和push时,在线存储库中没有任何变化。它说有一个新的提交,但它也说“显示0个更改的文件,0个添加和0个删除。”基本上是一个空的提交。我做错了什么?如何将本地存储库复制到在线存储库中?另外,如果git.add()命令出现在错误的位置,那是因为我将它移到了更改的前面,试图解决这个问题。它曾经在他们身后。

rbpvctlc

rbpvctlc1#

看看org.eclipse.jgit.api / Class AddCommand / addFilepattern(),我看到:
将路径添加到应添加其内容的文件/目录。
目录名称(例如dir添加dir/file1dir/file2)也可以递归地添加目录中的所有文件。
Fileglob(例如 *.c)尚未支持。
产品参数:
filepattern-要添加的文件/目录的存储库相对路径(以/为分隔符)
在addFilepattern()方法的文档中,术语“repository-relative”意味着文件模式应该相对于存储库的根目录来指定。

/repo
   /dir1
      file1.txt
   /dir2
      file2.txt

如果要将file1.txt添加到暂存区,则应使用addFilepattern(“dir1/file1.txt”),即使当前工作目录是dir 1或dir 2。这是因为路径是相对于存储库的根目录(/repo)的,而不是当前的工作目录。
如果您尝试添加一个存储库中不存在的文件(从根目录的Angular 来看),它将不会被暂存,并且在提交时不会注册任何更改。
仔细检查git.add().addFilepattern(postname).call();中postname的值,确保它是一个有效的参数。

qij5mzcb

qij5mzcb2#

我最终决定用

git.add().addFilepattern("*").call();

这是唯一有效的方法

相关问题