Lsは、ファイル名の代わりに死んだシンボリックリンクのいくつかのbashスクリプトを示しています。

Lsは、ファイル名の代わりに死んだシンボリックリンクのいくつかのbashスクリプトを示しています。

これはSymfony PHPフレームワークのディレクトリbin/であり、ls -la
何らかの理由で出力にファイル名の代わりにbashスクリプトが表示されます。 Linux版はDebian Stretchです。

lsは、ファイル名の代わりに死んだシンボリックリンクを持ついくつかのbashスクリプトを表示します。

php composer.phar updateこれはAtlassian Pipelinesスクリプトを介してコマンドを実行した結果です。同じコマンドを手動で実行すると、すべてがうまく機能します。 bitbucket-pipelines.ymlの関連部分は次のとおりです。

pipelines:
  custom:
    manual_preprod:
      - step:
          script:
            - ssh $PREPROD_USER@$PREPROD_HOST -t "cd ${FULLPATH} && php composer.phar update"

PHP Composerにシンボリックリンクを作成するときにファイル名の代わりにファイルの内容を提供させるバグがあるようです。どうやってこれができますか?

コードは作曲家のスクリプトの1つから来たようです。 バイナリinstaller.php

編集する:

これはgit + WindowsからLinuxへの問題のようです。

これはWindowsのgit repoに追加され、次の内容を含む一般的なファイルです。

#!/usr/bin/env sh
dir=$(d=\${0%[/\\\\]*}; cd "\$d" > /dev/null; cd $binDir && pwd)
# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
    # Cygwin paths start with /cygdrive/ which will break windows PHP,
    # so we need to translate the dir path to windows format. However
    # we could be using cygwin PHP which does not require this, so we
    # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
    if [[ $(which php) == /cygdrive/* ]]; then
        dir=$(cygpath -m "\$dir");
    fi
fi

Debian Stretchでコマンドを実行した後git pull、これらのファイルは上記の奇妙なシンボリックリンクに変わり、内容はターゲットファイルのファイル名に変更されました。

答え1

(グローバルまたはローカルストレージ)にすでに設定されているようですcore.symlinks。から:false.gitconfiggit-config(1)

コアシンボリックリンク
その場合、falseシンボリックリンクはリンクテキストを含む小さな一般ファイルにチェックアウトされます。 子更新インデックス(1) そして子を追加(1) 録画形式は通常のファイルに変更されません。シンボリックリンクをサポートしていないFATなどのファイルシステムに役立ちます。

デフォルト値はですtrue子クローン(1)または子の初期化(1)core.symlinks falseリポジトリ作成時の適合性を検出して設定します。

次のコマンドを実行して設定状態を確認できます。

git config core.editor

関連情報