IDEAのPlastic SCMプラグインを開発していますが、バージョンコントロールのローカル変更ウィンドウ(Alt + 9)をリフレッシュする方法がわかりません。ファイルが保存される時間。私は正常に私が前面にIDEAウィンドウをもたらすことは、この方法だけでなく、バージョン管理ウィンドウでリフレッシュボタンをクリックをトリガーすることを確認する方法IntelliJ IDEA VCS Plugin:保存時にVCSウィンドウを更新する
void getChanges(VcsDirtyScope, ChangelistBuilder, ProgressIndicator, ChangelistManagerGate)
を使用してチェンジを更新するChangeProvider
インタフェースを実装しました。両方のシナリオでチェンジリストが正常に更新され、[バージョン管理]ウィンドウに現在のワークスペースのステータスが反映されます。
ただし、変更したドキュメントを保存するとChangeProvider.getChanges
メソッドがトリガされますが、ウィンドウのチェンジリストは更新されません。私は、ユーザーがまだ手動でリフレッシュする必要があるので、これは、何らかの理由で新しい変更を確認するにはIDEAのために十分ではありません、私の変更が適切にプラスチックSCMから取得されていることを確認し、方法
void ChangelistBuilder.processChange(Change, VcsKey)
を使用してチェンジに追加しましたバージョンコントロールウィンドウ。ドキュメンテーションが不足していても役に立ちません。 -/
何が欠けていますか?この問題に関するヒントは高く評価されます。
EDITED
これはChange
オブジェクトが作成されている方法である。
private void addChangedFiles(ChangelistBuilder builder, ProjectStatus status) {
Set<String> modified = new HashSet<String>(status.CheckedOut);
modified.removeAll(status.Added);
modified.addAll(status.Changed);
modified.addAll(status.Moved);
modified.addAll(status.Copied);
for (String path : modified)
{
ContentRevision beforeRevision = PlasticContentRevision.createParentRevision(
mPlasticVcs.getProject(), path, false);
ContentRevision afterRevision = PlasticContentRevision.createRevision(
mPlasticVcs.getProject(), path, null, false);
Change ch = new Change(beforeRevision, afterRevision, FileStatus.MODIFIED);
builder.processChange(ch, mPlasticVcs.getKeyInstanceMethod());
}
}
ProjectStatus
クラスはcm status
コマンドの結果を格納PlasticSCMの一つです。
class PlasticVcsParentRevisionNumber implements VcsRevisionNumber {
private PlasticFile mPlasticFile;
public PlasticVcsParentRevisionNumber(PlasticFile plasticFile) {
mPlasticFile = plasticFile;
}
public String asString() {
return "parent revision";
}
public int compareTo(VcsRevisionNumber other) {
if (other == this) {
return 0;
long parentRevId = mPlasticFile.getRevisionInfo().getParentRevId();
if (!(other instanceof PlasticVcsParentRevisionNumber))
return -1;
PlasticVcsParentRevisionNumber plasticRevNumber =
(PlasticVcsParentRevisionNumber)other;
long otherParentRevId =
plasticRevNumber.mPlasticFile.getRevisionInfo().getParentRevId();
if (parentRevId > otherParentRevId)
return 1;
if (parentRevId == otherParentRevId)
return 0;
return -1;
}
}
processChangeに渡すChangeオブジェクトをどのように構築していますか? – yole
@yole質問した情報を含めて私の質問を編集しました:) – MiG42