2017-01-31 14 views
0

プロパティファイルを読み込んでそこからフォルダを作成し、それらのURLからリポジトリを取得するツールを開発しようとしています。JGitを使用して、リポジトリをプロパティからクローン化するツールを作成する

は、実際に私はそれにフォルダ/サブフォルダおよびクローン一つのプロジェクトを作成してみましょうするために管理:

File repoOne = new File("repositories/repo1"); 
Git git = Git.cloneRepository() 
     .setURI("https://github.com/xetra11/renderay.git") 
     .setDirectory(repoOne) 
     .call(); 

私はこれをもう一度実行すると、私は、次のエラーメッセージが表示されます

Exception in thread "main" org.eclipse.jgit.api.errors.JGitInternalException: Destination path "repo1" already exists and is not an empty directory 

をなぜJGitが既存のディレクトリを上書きしようとしているのか分かりません。私は気付いていないことを知っていますが、JGitはこのフォルダに "移動"してコマンドを実行しようとしているわけではありません。私はすでに存在するリポジトリにFetchCommandを実行しようとしています。現在の状態では、JGitは常にディレクトリがすでに存在すると私に伝えます。

どのように彼は単に存在する場合、フォルダ内のコマンドを実行させることができますか?

答えて

1

クローンの局所先としてフォルダを使用するには、それが存在するか、空であってはならないのいずれか。

リポジトリが特定のフォルダに存在するかどうかを検出し、新しい変更のみを取得したり、それ以外の場合は複製したりすることをお勧めします。リポジトリが存在するかどうかを決定するために

、このコードを使用します。

FileRepositoryBuilder repositoryBuilder = new FileRepositoryBuilder(); 
repositoryBuilder.setGitDir(folder); 
Repository repository = repositoryBuilder.build(); 
boolean repositoryExists = repository.getRef("HEAD") != null); 

今、あなたは、リポジトリが存在するかどうかに応じて、クローン、またはいずれかを取得することができます。 JGitとリポジトリへのアクセスに関するより詳細な議論については

はこちらを参照してください。http://www.codeaffine.com/2014/09/22/access-git-repository-with-jgit/

+0

私は実際には "裸の"リポジトリを作成するこの方法に問題があります。 'Git.init()。setDirectory(dirPath).call()'は私に "裸ではない"と言っていますが、リポジトリが既に作成されているかどうかを確認する方法が見つかりませんでした。 – xetra11

+0

_folder_が何を表しているかに応じて、 ':: setGirDir()'の代わりに 'BaseRepositoryBuilder :: setWorkTree()'を使う必要があるかもしれません。答えに記載されている記事はgit dirとwork dirについて、長さで作成されました。 –

0

テストレポ(ディレクトリ)が既に存在し、それを適切に処理する場合:

File repoOne = new File("repositories/repo1"); 
if (repoOne.exists()) { 
    // Check if it's a repo or do something else. 
} else { 
    // Repository doesn't exist, create it. 
} 
+3

を使用すると、このユーザーの問題を解決しているかもしれないが、コードのみの答えは、将来的にこの質問に来るユーザーに非常に有用ではありません。あなたのコードが元の問題を解決する理由を説明するために、あなたの答えを編集してください。 –

関連する問題