[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jgit-dev] JGit checkout of multiple tags fails with "Could not rename file"

Hi,

I've observed not the same but similar issue during tests on Linux NFS mount, where jgit was not (always) cleaning up the opened temporary pack file streams, see [1] for more details.

I didn't found the root cause however. I suspect that if you would add some delay between two checkout calls your issue would disappear, because this was what I've observed in debugger.

[1] https://git.eclipse.org/r/#/c/30328/

Kind regards,
Andrey Loskutov

http://google.com/+AndreyLoskutov


> Gesendet: Freitag, 19. September 2014 um 16:39 Uhr
> Von: "Sascha Vogt" <sascha.vogt@xxxxxxxxx>
> An: jgit-dev@xxxxxxxxxxx
> Betreff: [jgit-dev] JGit checkout of multiple tags fails with "Could not rename file"
>
> Hi all,
> 
> since a few days I'm banging my head against a (JGit) wall ;) Maybe
> somebody here understands my issue.
> 
> I'm trying to checkout a few tags one after another (to archive some
> source code), but switching from one tag to another gives a strange
> "Could not rename file" JGitInternalException.
> 
> Basically what I want to do (in cmd line commands):
> 1. git clone <url>
> 2. git checkout -b <tag-1> <tag-1>
> 3. git checkout -b <tag-2> <tag-2>
> 
> On cmd line this works, in JGit I'm using the following commands:
> 
> Git.cloneRepository()
>            .setURI(url)
>            .setCredentialsProvider(getCredentialsProvider())
>            .setDirectory(tmpDir)
>            .call();
> 
> git.checkout()
>     .setName("tag-1")
>     .setCreateBranch(true)
>     .setForce(true)
>     .call();
> 
> git.checkout()
>     .setName("tag-2")
>     .setCreateBranch(true)
>     .setForce(true)
>     .call();
> 
> The error I'm getting (full stack at the end of the mail):
> org.eclipse.jgit.api.errors.JGitInternalException: Could not rename file
> D:\dev\tmp\unit-test\git\base\common\locator\._pom.xml6206658336832583616.tmp
> to D:\dev\tmp\unit-test\git\base\common\locator\pom.xml
> 
> Strange thing: It doesn't fail always, but around 90-95% of the time.
> Also I'm on Windows as the path above suggests ;) TortoiseGit is
> installed but I have disabled the TGitCache process. Also no explorer
> was open on the used directory.
> 
> I also did git status commands in between checkouts -> no changed files.
> 
> I did also insert a git.clean().setCleanDirectories(true).call() and
> git.reset().setRef("HEAD").setMode(ResetType.HARD).call() between
> checkouts, no differences.
> 
> I tried JGit 2.3.1, 3.2, 3.4.1 and 3.5.0-rc1, also no differences.
> 
> When I check the state after such a failed checkout of tag-2 I'm seeing:
> 
> "git status":
> HEAD detached at ef1edf8
> nothing to commit, working directory clean
> 
> "git branch" gives:
> * (detached from ef1edf8)
>   tag-1
>   tag-2
>   master
> 
> Has anybody any idea? I've no idea where to search next.
> 
> Greetings
> -Sascha-