Uploaded image for project: 'Subversion'
  1. Subversion
  2. SVN-4469

API for an efficient retrieval of server-side mergeinfo data



    • Type: Improvement
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: ---
    • Fix Version/s: unscheduled
    • Component/s: unknown
    • Labels:


      To support mergeinfo-related features on the client side, like displaying merge
      arrows in a "revision graph" of a GUI client, a more powerful API to efficiently
      retrieve server-side mergeinfo differences for an entire revision range is needed.
      In terms of JavaHL, the API should look like:
      interface MergeinfoDiffCallback {
        void mergeinfoDiff(int revision,
                           Map<String, Mergeinfo> pathToAddedMergeinfo,
                           Map<String, Mergeinfo> pathToRemovedMergeinfo);
      void getMergeinfoDiff(String rootPath,
                            long fromRev, long toRev,
                            MergeinfoDiffCallback callback)
                            throws ClientException;
      This should give us all mergeinfo diffs which affects any path at or below
      rootPath. The mergeinfo diffs should be received starting at fromRev and ending
      at toRev. Additional requirements:
      - no callback is expected if there is no mergeinfo diff at a certain revision.
      - depending on whether fromRev <= toRef or fromRev > toRev, the mergeinfo diffs
      should be reported in ascending or descending order, accordingly.
      - if there are no mergeinfo diffs for a large range of revisions, this range
      should be processed quickly on the server-side, so the delay between information
      retrieved on the client side will be minimal.
      - reporting of diffs should start immediately, i.e. avoid some server-side
      preprocessing which may take significant time until the first data is received
      on the client-side. Reason: when using the API to build a client-side mergeinfo
      cache and the cache building process is shutdown and restarted later, it will
      resume with the latest known revision. In case of a significant preprocessing
      time on the server-side and frequent process shutdowns on the client side, no
      progress may be made at all.

      Original issue reported by mstrap




            • Assignee:
              subversion-importer Subversion Importer
            • Votes:
              0 Vote for this issue
              1 Start watching this issue


              • Created: