6

コミットされたチェンジリストは空であってはならないので、コミットされたチェンジリストを削除しようとするポイントは何だろうと思っていました。

しかし、その後チュートリアルデポで遊んでいて、ブランチ全体で obliterate コマンドを使用すると、空のコミットされたチェンジリスト (-f フラグで削除する必要がある) になる可能性があることがわかります。

ただし、ファイルが関連付けられていない変更リストを探す方法がわからないため、コマンドラインでそれらを見つける方法がわかりません。

それを行う簡単な方法はありますか?

ありがとう、

トーマス

4

4 に答える 4

0

これは DOS CMD のみのバージョンです。%p4streamsUser% を置き換えるだけです。

    for /f "tokens=* delims=" %%i in ('p4 changes -u %p4streamsUser% -s pending') do (
        for /f "tokens=1-7*" %%a in ("%%i") do (
            echo Deleting CL %%b %%h %%f
            p4 change -d -f %%b
        )
    )

私はWindows 7マシンを使用しています。これは、Windows/DOS の他のいくつかのバージョンで動作します。

于 2014-07-18T19:58:00.007 に答える
0

私は Windows を使用しているため、Shell、powershell、または px ではなく、PERL でまったく同じことを行う小さなスクリプトを作成しました :) :

#*******************************************************************************
# Module:  delete_empty_changelist.pl
# Purpose: A script to delete empty changelist
# 

@list = `p4 changes -s submitted`;

foreach $chg (@list)
{
 $chgnbr = (split /\s+/, $chg)[1];
 print `p4 change -d -f $chgnbr`;
 }     
exit 0;

実際、すべての場合において、これはあまり巧妙なスクリプトではないことに注意してください。サブミットされたすべての変更リストを完全に削除しようとしますが、ファイルが関連付けられているとエラーが発生するため、perforce によって削除が阻止されます。

関連する行のみが強調表示されるように、スクリプトの結果をログに送信して解析する必要があると思います。

スクリプトを実行すると、次のような出力が生成されます。

Change 857 has 1 files associated with it and can't be deleted.
Change 856 has 1 fixes associated with it and can't be deleted.
Change 855 has 1 fixes associated with it and can't be deleted.
Change 854 deleted.
Change 853 has 1 fixes associated with it and can't be deleted.
Change 852 has 8 files associated with it and can't be deleted.
Change 851 has 1 files associated with it and can't be deleted.
Change 850 has 2 files associated with it and can't be deleted.
Change 849 has 2 files associated with it and can't be deleted.
Change 846 deleted.
Change 845 has 2 files associated with it and can't be deleted.

乾杯、

トーマス

于 2009-10-16T14:54:03.933 に答える