1

SVNKit ライブラリを使用して Java アプリケーションを作成すると、次の問題に直面しています。

_1. 専念

  • クライアントは、時代遅れになる可能性のある作業コピーをコミットする必要があります
  • コミット後、作業コピーが古くなっている場合でも、リポジトリにはコミット前の作業コピーとまったく同じコンテンツが含まれている必要があります
  • 作業コピーが古い場合、サーバーの変更は失われます

_ 2.更新

  • クライアントは、ローカルの変更を含む可能性のある作業コピーを更新する必要があります
  • 更新後、作業コピーにはリポジトリとまったく同じコンテンツが含まれている必要があります
  • 作業コピーにローカルの変更があった場合、それらは更新後に多くなければなりません

SVNKit ライブラリを使用して簡単に可能ですか?

«強制コミット»部分の私の実際のアイデア

を。リポジトリ側 : «作業コピー バージョン» への復帰を処理します

b. クライアント側: 競合するローカル変更を受け入れる更新を処理します

c. クライアント側: コミットを処理する

特に 2 番目の点が簡単かどうかはわかりませんが、それを行う高レベルの API メソッドはありますか? «Forced commit» の部分は私にとって最も急を要する..

«強制更新»部分の私の実際のアイデア

  • 簡単な更新を処理していますが、ローカルの変更が失われるかどうかはわかりません

        final File localProjectDirectory = new File(localProjectDirectoryPath);
        final SVNClientManager cm = SVNClientManager.newInstance(new DefaultSVNOptions());
        final SVNUpdateClient uc = cm.getUpdateClient();
        final SVNRevision svnHeadRevision = SVNRevision.HEAD;
        final SVNDepth svnRecursiveDepth = SVNDepth.fromRecurse(true);
        final boolean allowUnversionedObstructions = false;
        final boolean depthIsSticky = true;
        uc.doUpdate(localSyncProjectDirectory, svnHeadRevision, svnRecursiveDepth, allowUnversionedObstructions, depthIsSticky);
    

ありがとう!

4

2 に答える 2

1

わかりました、これは少し乱雑に聞こえます。svn の仕事は、複数のプログラマーが同じソース コードに取り組んでいることです。つまり、リポジトリを作業コピーの正確なコピーにしたいということは、リポジトリ内の他の変更を削除/元に戻すことを意味します。これは意味がありません。あなたが求めているのは、実際には毎日のタスクです。コードをチェックアウトして少し変更し、その間に他の人が同じコードをチェックアウトして変更し、変更をコミットしました

ここで、他の人の努力を「元に戻す」ことがないように、変更をコミットする必要がありますよね? Eclipse または使用している svn ツールを使用して svn 同期を実行します。よくわからない場合は、次のセクションに進む前にプロジェクト全体のバックアップを取ってください。

CONFLICTS がなく、これが重要な場合は、まずリポジトリからコードをチェックアウトし、次にコードをチェックインします。

この場合、更新してコミットする前に競合を解決する必要があるため、競合する行に 1 つずつ移動し、それらをコードに統合し、クラス/ファイルの操作が完了したら、"競合は解決されました。」

すべての競合が解決されたら、最初のステップで説明したように実行します。つまり、リポジトリから更新してから、コードをコミットします。

于 2012-09-05T16:10:41.130 に答える
0

SVNnotifier を使用してすべてを同期しています。

http://svnnotifier.tigris.org/ また、名前を忘れた別のプログラムですが、明日入手します。

それが役に立てば幸い!

于 2012-09-06T01:11:56.733 に答える