Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 368024 - Jgit merge : files without extension give conflicts running jgit on OpenVMS
Summary: Jgit merge : files without extension give conflicts running jgit on OpenVMS
Status: NEW
Alias: None
Product: JGit
Classification: Technology
Component: JGit (show other bugs)
Version: unspecified   Edit
Hardware: Other other
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-01-06 07:46 EST by Jouk Jansen CLA
Modified: 2014-05-02 18:34 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jouk Jansen CLA 2012-01-06 07:46:02 EST
Build Identifier: 1.2.0.201112221803-r

When files without extension are extracted from a git repository a "." is added to the file in the local copy when it is located on a VMS system. When such a file is changed in the git-repostory and one tries to update the local copy with
  jgit fetch
  jgit merge "origin/master"
one gets errors like this

bolero-jj) jgit merge "origin/master"
org.eclipse.jgit.api.errors.CheckoutConflictException: Checkout conflict with fi
les:
ChangeLog
Jamfile
README
configure
docs/CHANGES
docs/release
        at org.eclipse.jgit.api.MergeCommand.call(MergeCommand.java:258)
        at org.eclipse.jgit.pgm.Merge.run(Merge.java:85)
        at org.eclipse.jgit.pgm.TextBuiltin.execute(TextBuiltin.java:148)
        at org.eclipse.jgit.pgm.Main.execute(Main.java:191)
        at org.eclipse.jgit.pgm.Main.run(Main.java:120)
        at org.eclipse.jgit.pgm.Main.main(Main.java:94)
Caused by: org.eclipse.jgit.errors.CheckoutConflictException: Checkout conflict
with files:
ChangeLog
Jamfile
README
configure
docs/CHANGES
docs/release
        at org.eclipse.jgit.dircache.DirCacheCheckout.doCheckout(DirCacheCheckou
t.java:398)
        at org.eclipse.jgit.dircache.DirCacheCheckout.checkout(DirCacheCheckout.
java:378)
        at org.eclipse.jgit.api.MergeCommand.call(MergeCommand.java:185)
        ... 5 more



The "conflicting" files were created using jgit clone ... and never changed after that.




-----


A similar problem I notced once with the .gitignore file, because that gets into the local copy as somthing like
^._^.gitignore8959319472519309226.gitignore
(with the number varying)



Is there a quick solution like forcing merge to select the new version from the repository automatically?




Reproducible: Always

Steps to Reproduce:
1.use jgit-client on a OpenVMS system
2.change in the repository a file without a .
3.jgit fetch
4. jgit merge "origin/master"
Comment 1 Robin Stocker CLA 2014-04-25 18:18:43 EDT
I'm not sure we can really help with problems on VMS. Can you reproduce this on e.g. a Linux system?
Comment 2 Robin Rosenberg CLA 2014-05-02 18:34:05 EDT
(In reply to Robin Stocker from comment #1)
> I'm not sure we can really help with problems on VMS. Can you reproduce this
> on e.g. a Linux system?

I haven't used VMS for 30 years, but I do recall this incompatibility with UNIX. It's not repeatable in anything but VMS.

It's sort of the opposite of windows.

On windows. Create "x.". listFiles gives "x".
on vms. Create "x". listFiles gives "x.".
On mac. Create "å". listFiles gives combining o+"a"

The difference is that on Windows nobody cares about this problem since nobody names files with trailing periods or spaces.

Probable solution: You (someone who uses and cares about VMS) needs to create one or more new FS subclasses for VMS that overrides FS.normalize() to removed trailing periods. If it doesn't break or complicate anything much, it's likely to be accepted.