개요
git 을 java에서 컨트롤하는 라이브러리가 존재하는데 이를 jgit 이라고 한다.
아래와 같은 라이브러리 의존성을 추가해서 사용하면 되는데 clone 하는 예시를 보고 테스트를 하는데 이런 오류가 발생한다.
implementation("org.eclipse.jgit:org.eclipse.jgit:4.5.0.201609210915-r")
Exception in thread "main" org.eclipse.jgit.api.errors.InvalidRefNameException: Branch name <null> is not allowed
at org.eclipse.jgit.api.CheckoutCommand.processOptions(CheckoutCommand.java:518)
at org.eclipse.jgit.api.CheckoutCommand.call(CheckoutCommand.java:204)
해결법
우선 내가 사용한 예제는 코틀린으로 했었는데, 아래와 같이 checkout 시 setAllPaths 를 생략하면 동일한 오류가 발생했다.
혹시 나랑 동일한 오류를 겪는다면, setAllPaths 를 true 로 지정해보길 바란다. (아래와 같이 주석으로 빼두면 오류 발생)
val credentialsProvider = UsernamePasswordCredentialsProvider("<아이디>", "<패스워드>")
val gitUri = "<GIT 주소>"
val cloneCommand: CloneCommand = Git.cloneRepository()
.setURI(gitUri)
.setDirectory(File("/Users/guest/git-test"))
.setNoCheckout(true)
.setCredentialsProvider(credentialsProvider)
val git:Git = cloneCommand.call()
git.checkout()
.setStartPoint("origin/master")
// .setAllPaths(true)
.call()
git.repository.close()