Opened 10 years ago

Closed 10 years ago

#35 closed defect (invalid)

git: commands implemented as shell scripts fail

Reported by: dmik Owned by:
Priority: major Milestone:
Component: Version:
Severity: Keywords:
Cc:

Description

An attempt to use any command implemented as a shell script (e.g. git submodule or even git pull fails with the following message):

trace: exec: 'git-pull'
trace: run_command: 'git-pull'
fatal: cannot exec 'git-pull': Invalid executable file format

There are actually two things for git-pull in git-core: : git-pull.sh (which is a shell script) and git-pull.exe (which is a symlink to git-pull). I recall that these .exe symlinks are created so that LIBC exec could recognize the file as an executable and then find the right file by following the symlink and then start it with the right shell after finding out it's a shell script. But this logic seems to break at some stage. I need to check why. The git-pull command is pretty much critical and must work.

Note that this applies to git 2.0.0 (built from the dmik branch ATM).

Change History (1)

comment:1 by dmik, 10 years ago

Resolution: invalid
Status: newclosed

It turned out that I had a broken symlink /@unixroot/usr/bin/sh that pointed nowhere instead of /@unixroot/usr/bin/sh.exe and that was the cause (took some time to figure out). The easiest way to fix the symlink is to do yum reinstall ash. I'm afraid it comes broken with eCS 2.2 Beta II and we should perhaps inform the builders about one more broken file (we had several in the past already).

BTW, while working on that I realized that LIBC needs a small fix, see: http://trac.netlabs.org/libc/ticket/300. With this fix missing, we have to create a bunch of .exe symlinks in git that point to its extension-less shell scripts (lgit-submodule, git-pull etc.). Once the fix is in, these symlinks may be removed from distribution.

Note: See TracTickets for help on using tickets.