web-dev-qa-db-ja.com

Subversionのステータス「S」

ある時点で、作業コピー内のすべてのファイルに、以下に示すように「S」記号が付いています。

$ svn st
M    S   AclController.php
     S   InstallationController.php
     S   CustomerController.php
     S   RedirController.php
     S   IndexController.php
     S   LoginController.php
     S   OrderController.php
     S   ProductController.php
     S   SelfInstallController.php
     S   SelfcareController.php

興味深いことに、この特定の作業コピーでのみ発生します。プロジェクトを新しいディレクトリにチェックアウトすると、「S」マークが表示されません。

この厄介な「S」記号を取り除く方法は? WCステータスの明瞭さが大幅に低下します。

更新:標準のsvn switch構文を使用して時々切り替えます。最近までこの「S」記号が表示されることはありませんでした。切り替えに使用されたコマンドは次のとおりです。

svn switch svn+ssh://xxxxxx/Subversion/xxxxxxx/releases/1.0.16 .

「S」フラグをクリアする方法はありますか?

77

これは、ファイルがSubversionリポジトリ内のファイルとは別の場所にあることを意味します。解決策は、作業コピー全体を同じ場所に切り替えることです。コマンドの呼び出し方法の詳細については、Subversion bookの twosections を参照してください。

75
Andrew Aylett

ディレクトリ自体と内部のファイル(の1つ)で「svn info」を呼び出すと、2つの異なるURLが取得されます。

ファイル/ディレクトリのURLが親のURLと一致し、その後にファイル名が続く場合、「S」ステータスになります。

親と子ノードのいずれかのURLを投稿できますか? (必要に応じてURLを匿名化する)

11
Bert Huijben

トランク(r100)からブランチ(r50)に切り替える際に '[〜#〜] s [〜#〜]'ステータスがありました。私はエラーを得ました:

svn: Failed to add file 'web/.htaccess': an unversioned file of the same name already exists

すべてのweb /のサブディレクトリは '[〜#〜] s [〜#〜]'フラグが付けられていました。

原因:.htaccessをsvn:ignoreに削除し(r100)、再度作成しました(バージョン管理されずに無視されました)。ブランチ(r50)のリポジトリにはまだweb/.htaccessがありました。

ソリューション :

mv web/.htaccess ../../
svn switch back to trunk
svn switch to branch again

すべて順調。

8
sglessard

SVNに正常にコミットしたディレクトリでこの問題が発生しました。私にとっての解決策は、ローカルで消去してから更新することでした。違いは見られませんでしたが、.svnファイルは何らかの理由で修正されました(Sはもうありません)。

6
Eli

これは通常、ブランチの切り替え時の中断が原因です。

別のブランチに切り替えてから、本当に必要なブランチに切り替えます。

svn switch some_other_branch_url

svn switch desired_branch_url

4
ahnbizcad

単なるコメント:リポジトリ内の同じ場所から削除されたディレクトリをチェックアウトしたときに同じSシンボルを取得しましたが、異なるURLを使用しました。 「svn checkout --username user https://scm.gforge ....」に対して「svn checkout svn + ssh://[email protected] ...」のような個別のプロトコルを使用してチェックアウトする'。最初のチェックアウトに使用したのと同じURLを使用して再度チェックアウトすることで解決しました。

4
André Lage

誰かが答えを探して遅く来ている場合(上記に正しく述べられています)、この状況の原因はおそらく失敗する親ディレクトリの「svnスイッチ」であると信じています(ローカルのコミットされていないファイルの場合)同じ名前で--forceオプションはありません)、失敗後のすべてのファイルを「切り替えなし」のままにします。

(元の問題が後で修正されると仮定して)同じ親ディレクトリでの後続の 'svn switch'が、実際に残りの切り替えられていないファイルを新しいレポパスに切り替える理由です。

4
John Kennedy

これは、たとえば作業コピーをチェックアウトし、コードブランチと比較するために交換したなど、作業コピーから別のコピーに切り替えたことを意味します。これを元に戻す方法の詳細については、 SVN book をご覧ください。

3
me_and

このステータスを達成する別の方法があります-うまくいけば、誰かを追跡する時間を節約できます。

外部ライブラリをSVNルートに展開しましたが、サードパーティの作成者が誤って自分の.svnフォルダーをフォルダーの1つに含めていることがわかりました。もちろん、これは私たち自身の正しいSubversionフォルダーを上書きし、このページの他の場所で説明されているのと同じ効果があります-フォルダーが予期せず別のブランチに切り替わったようです。

3
halfer

"アイテムが切り替えられました。"

作業コピーで「svn switch」を使用した場合、それが説明される可能性がありますか?

1
stiank81

私の場合、ブランチの2つのサブディレクトリがトランクで削除されました。最上位レベルのディレクトリからトランクをブランチに切り替えた後、トランクに戻り、これらのサブディレクトリのステータスがSになった問題を経験しました。

@ahnbizcadによる回答をガイドラインとして使用しました。サブディレクトリの親ディレクトリ(最上位ディレクトリの下にある)から:

svn sw <branch_url>

svn sw <trunk_url>

0
Soumya Kanti

私にとってこれは、「svn switch」コマンドが中断されたときに起こり、TortoiseSVNで解決するために、ファイルを右クリックして親に戻るを選択します

0
Alireza Fattahi

発行時に「S」を取り除く簡単なソリューション

svn status

「S」でマークされたディレクトリに移動し、非表示の.svnディレクトリを削除するだけです。

rm -rf .svn

その後、「?」のマークが付いたソースが表示されますそして、あなたは簡単にそれらを簡単に追加できます:

svn add path/to/resource

0
Torsten Barthel