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

API for an efficient retrieval of server-side mergeinfo data

    XMLWordPrintableJSON

    Details

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

      Description

      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

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated: