개요

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()

+ Recent posts