3

http://answers.perforce.com/articles/KB_Article/Git-P4で説明されているように、git-p4 を介して perforce リポジトリの git ミラーを構成し、しばらくの間正常に動作しました。perforce の変更を git に取得することができました。 git の変更を perforce に送信します。その後、突然git p4 submitコマンドが機能しなくなりました。実行すると、エラーが発生します。

You have files opened with perforce! Close them before starting the sync.

詳細モードで実行すると、p4 -c <client name> -G opened ...コマンドが失敗し、次の出力が表示されます。

{scodeserrorsdatasrPath '/path/to/git/clone/...' is not under client's root '/path/to/git-p4-area'.
severityisgenerici0%

まあ、それは確かに下ではありません/path/to/git-p4-areaが、それは以前は問題ではありませんでした. git p4 rebaseこちらも問題なく走れます。Path is not under client's rootエラーを修正するにはどうすればよいですか?

アップデート

ブライアンの回答のおかげで解決できました。私が得たエラーは正しかったことがわかりました。実際にファイルを強制的に開いていました。p4 revert ...内部のコマンドで元に戻しましたが、正常に動作するように/path/to/git-p4-areaなりましたgit p4 submit

git-p4 を使用する場合、perforce ワークスペース内のファイルを変更せず、代わりに git リポジトリで作業し、git-p4 は git コミットを perforce の変更に、またはその逆に変換するため、エラーは私を混乱させました。perforce チケットが最後の送信操作の途中で期限切れになったことが判明しました (チケットは 12 時間ごとに期限切れになります)。そのため、いくつかのファイルが perforce ワークスペースで開かれたままになっていました。最善の解決策は、12 時間以内に働くことです...

4

2 に答える 2

4

これが私にとっての解決策でした:

$ p4 opened -s | awk '{print $1}' | xargs p4 revert

...p4 opened出力が(驚くべきことに)空ではなかったためです。

その後、通常git p4 submitは成功しました。

于 2015-01-02T11:27:55.733 に答える