Code.google.comでホストされているオープンソースのアプリを持っています。クロスプラットフォーム(Linux/Windows/Mac)です。最初にTortoiseSVNを使用してWinXPマシンからコードをアップロードしましたが、Linuxビルドに使用される「configure」バッチファイルには「execute」ビットが設定されていないようです。
これらを必要とするファイルにこれらを設定する最も簡単な方法は何ですか? TortoiseSVNを使用する方が簡単だと思いますが、使用できない場合は、LinuxマシンでコマンドラインSVNを使用することもできます。
Tortoise SVNを使用すると、非常に簡単です。複数のファイルを選択して(検索結果から取得できるため、同じディレクトリにある必要はありません)、TortoiseSVNメニューで[properties]を選択し、必要なプロパティを追加します(ほとんど使用されるプロパティのドロップダウンリスト(この場合は「svn:executable」))、値(この場合は「*」)を設定します。変更されたファイルをコミットしてLinuxでチェックアウトすると、実行可能ビットが設定されます。
一度に複数のプロパティを設定する場合、最初に1つのファイルのプロパティを正しく設定し、それらをファイルにエクスポートし、必要なすべてのファイルを選択して、「プロパティ」メニューを選択する方が安全です。以前に保存したプロパティをインポートします。
コマンドラインで行う方法は次のとおりです。
for file in `find . -name configure`; do
svn ps svn:executable yes ${file}
done
または、1つのファイルのみ(configure
はここのファイル名です):
svn ps svn:executable yes configure
Unixでは、{}を使用して結果セットをアドレス指定します。
find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \;
このプロパティが有効な引数として「はい」を必要とする理由を誰もが知っていますか?はいの代わりに ''を使用した別の例も見つかりました...
find . -type f -name "*.bat" -exec svn propset svn:executable yes "${}" \;
もちろん、.exeなどにも同じことが言えます。
SVNインポート中に失われた実行可能権限を復元する方法:
svnインポート中に使用した元のソースからパーミッションをコピーします(現在のディレクトリをバージョン1に):
find . -type f | xargs -I {} chmod --reference {} ../version1/{}
次に、次のシェルスクリプトを使用して、すべての実行可能ファイルにsvn:executableを設定します。
for file in `find . -executable -type f`; do
svn ps svn:executable yes ${file}
done