これはSymfony PHPフレームワークのディレクトリbin/
であり、ls -la
何らかの理由で出力にファイル名の代わりにbashスクリプトが表示されます。 Linux版はDebian Stretchです。
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
.gitconfig
git-config(1)
コアシンボリックリンク
その場合、false
シンボリックリンクはリンクテキストを含む小さな一般ファイルにチェックアウトされます。 子更新インデックス(1) そして子を追加(1) 録画形式は通常のファイルに変更されません。シンボリックリンクをサポートしていないFATなどのファイルシステムに役立ちます。デフォルト値はです
true
。子クローン(1)または子の初期化(1)core.symlinks false
リポジトリ作成時の適合性を検出して設定します。
次のコマンドを実行して設定状態を確認できます。
git config core.editor