Alien-SVN

 view release on metacpan or  search on metacpan

src/subversion/CHANGES  view on Meta::CPAN

  User-visible changes:
   * fix working copy corruption after interrupted update/switch (issue #4040)
   * avoid segfaults against pre-1.5 servers (r1186928)
   * improve configure error message if apr-util uses old or no bdb (r1186784)
   * make 'svn patch' ignore '/dev/null' targets for compat with git (r1197998)
   * fix 'svn patch' segfault on patch that skips and deletes files (r1199950)
   * omit "Committed revision N." output from 'svn commit --quiet' (r1200837)
   * fix authz denial when svnserve root is a repository (issue #4060)
   * fix uninitialized memory read in client diff code (r1201002)
   * avoid potential segfault during merges (r1202807)
   * fix an assertion failure when a symlink is updated (r1186944, -81, -83)
   * make working copy operations fail if nodes have no base checksum (r1202630)
   * fix nested <Location>s when using v2 protocol (r1203546, -651, -653)
   * make mod_dav_svn ignore non-Subversion POST requests (r1187695)
   * avoid reading freed memory (r1204478)
   * recognize empty (only byte order mark) UTF-8 files as text (issue #4064)
   * fix 1.7 client regression when operating against a 1.0.x server (r1199876)
   * remove empty parent dirs of removed externals on update (issue #4044)
   * make 'svn diff -c N' work for files added in rN (issue #2873)
   * plug a memory leak in the bdb backend (r1205726)
   * fix 'svn import' with native eol-style and inconsistent EOLs (r1205193)

src/subversion/CHANGES  view on Meta::CPAN

 User-visible changes:
  - Client:
    * fixed: unbounded memory use in "svn cat" over ra_svn (r26964, -8)
    * fixed: 'svn diff --summarize file' displays erroneous output (issue #2765)
    * fixed: 'svn status' wrong on previously-reverted deleted dir (issue #2804)
    * fixed: 'svn up' can delete unversioned symlinks (issue #1808)
    * fixed: use correct properties for locally replaced files (issue #2743)
    * fixed: 'svn info -R $REPO_ROOT' w/ pre-1.2 svnserve broken (r26264)
    * fixed: svnsync ignores '--config-dir' (r27056)
    * datestamps can be localized (r26156)
    * fixed: text base not updated when merging a replaced file (issue #2698)
    * fixed: inverted 'switch --relocate' error message (r22355)
    * fixed: sporadically failing file and directory removal on Windows (r25520)
    * fixed: property file handling for schedule-delete files (r25833)
    * fixed: allow invalid svn:eol-style values (r28331)
    * fixed: 'svnadmin rmlocks' should error when no path provided (r28431)
    * support neon 0.26.4 (r26077)

  - Server:
    * fixed: authz granted if calculation inconclusive (r23815)
    * fixed: svndumpfilter crashes on Windows (r23494)

src/subversion/CHANGES  view on Meta::CPAN

      - reduce memory usage for large working copies (r19183 -538)
      - increased working copy stability with merge, copy and move:
            (fixes issues #845, #1516, #1553, #2135, #2144, #2148)
    * new switches added:
      - 'svn blame --force' (issue #2509)
      - 'svn diff/merge -c/--change' (r17054 -6 -68 18568 -741)
      - 'svn diff --summarize' (issue #2015)
      - 'svn merge/blame -x' (r18716 -20) (r18602 -857)
    * 'svn log' now supports peg revisions (issue #2287)
    * 'svn export' now creates intermediate directories if needed (r20030)
    * use switch/relocate when svn:externals updated (issue #2209)
    * internal diff can ignore whitespace and eol style changes (issue #2121)
    * conflict markers now match the file's eol style (issue #1325)
    * new svn2cl, svn-viewdiff and svn-resolve contrib scripts
    * numerous improvements to svnmerge.py, vc-svn and psvn
    * translation updates for all languages
    * Mac OS X: store cached passwords encrypted in Keychain (r17619 -43)
    * fixed: 'svn ls' slow over ra_dav (issue #2151)
    * fixed: 'svn import' not handling eol-style correctly (issue #2433)
    * fixed: 'svn blame' should default operative rev range to peg rev (r18400)
    * fixed: 'svn blame' ignores eol-style (issue #2431)

src/subversion/CHANGES  view on Meta::CPAN

    * fixed: set svn:date at the end of commit in fsfs (r18078)
    * fixed: don't wait for hook script background jobs (r18146)
    * fixed: mod_dav_svn should log the whole error chain (r18211)
    * fixed: uncomment section headers in repos config files (r18247, -50)
    * fixed: log scalability issues with many paths (r18395, -404)
    * fixed: better path input validation in mod_dav_svn (r18660)
    * fixed: assert in copy in fsfs and bdb (issue #2398)
    * fixed: RPM package bad interaction with NFS servers (issue #1456)

  - Both:
    * fixed: copyright years updated to include 2006 (r18021, -127)

 Developer-visible changes:
 * fixed: missing #include (r18065)
 * fixed: allow building with Neon 0.25.5 (r18215)
 * fixed: error leaks (18196, -249)
 * javahl bindings:
     - fixed: compile error on Visual Studio 2005 (r18054, -55)
 * python bindings:
     - fixed: libsvn_swig_py link problem on Solaris 10 (r17910)
     - fixed: pool lifetime bug (r17992)

src/subversion/CHANGES  view on Meta::CPAN

      twice as slow and lose all concurrent-client scalability.

      This is a temporary fix for a larger design problem.  See issue
      http://subversion.tigris.org/issues/show_bug.cgi?id=1499


Version 0.28.1
(released 28 Aug 2003,http://svn.apache.org/repos/asf/subversion/tags/0.28.1)

  There are no changes in this release.
  It is strictly an updated release, build with the correct version
  of autoconf; autconf-2.57


Version 0.28.0 (released 27 August 2003, rev 6894, branches/release-0.28)
(http://svn.apache.org/repos/asf/subversion/tags/0.28)

#####################################################################
##  WARNING  WARNING  WARNING  WARNING  WARNING  WARNING  WARNING  ##
#####################################################################
##                                                                 ##

src/subversion/CHANGES  view on Meta::CPAN

 * fixed - disallow ".." in svn:externals target paths (r6639, #1449)
 * fixed - use 'env' instead of hard-coded paths in scripts (r6626, #1413)
 * fixed - bug in loading incremental dumpfiles (r6595)
 * fixed - performance issue in svn_load_dirs.pl fixed (r6623, r6627, #1455)
 * fixed - handle IPv6 addresses in URLs (r6638, r6654, #1338)
 * changed - 'svn resolve' renamed to 'svn resolved' (r6597)
 * changed - 'svnlook tree' takes new optional path-in-repos argument (r6583)
 * changed - renamed 'svnadmin archive' to 'svnadmin lsdblogs'; offer
             either all logs, or just the unused ones (r6661)  
 * changed - now offer full-text search in Windows documentation file (r6658)
 * changed - much documentation updated, especially the book
 * Many other fixes and changes, too numerous to mention individually.

 Developer-visible changes:
 * fixed - many improvements to Perl and Python bindings, including some
           Win32-specific improvements (r6619, r6686, r6590, r6580, r6579)
 * All other important dev changes are implied by the user-visible changes.


Version 0.26.0 (released 24 July 2003, revision 6550, branches/release-0.26.0)

src/subversion/CHANGES  view on Meta::CPAN


Version 0.14.3 [Alpha Interim 3] (released 20 Sept 2002, revision 3200)

 User-visible changes:
 * new ~/.subversion/config file
 * new $Id$ keyword
 * new client --no-auth-cache option
 * empty values in the Windows Registry are no longer ignored (issue #671)
 * report details of repository start-commit or pre-commit hook errors
 * fix locking behaviour when using current directory as a target
 * updated man page
 * new front-page logo.  :-)

 Developer-visible changes:
 * continuing work on python SWIG bindings
 * continuing work on new access-baton system for libsvn_wc
 * upgrade to neon 0.23.4 to fix Windows build issues and seg faults
 * add XFAIL to the C testing framework
 * prevent setting of certain svn: props on incorrect file types
 * cleanup libsvn_subr's path library behavior
 * new 'fast-clean' vs. 'clean' Makefile targets

src/subversion/INSTALL  view on Meta::CPAN

          in addition.  In particular, on Red Hat (but not Fedora Core) it
          is necessary to specify "--with-libs=/usr/kerberos" for OpenSSL
          to be found.  You can also specify a path to the zlib library
          using "--with-libs".

          Under Windows, you can specify the paths to these libraries by
          passing the options --with-zlib and --with-openssl to gen-make.py.

            ### Is that right? In-tree build of Neon was disabled in r875974.
                This may now apply to Serf, or else gen-make.py should be
                updated to remove such options.

        c. Using OpenSSL on the Apache server

          You can also add support for these features to an Apache httpd
          server to be used for Subversion using the same support libraries.
          The Subversion build system will not provide them, however.  You
          add them by specifying parameters to the "./configure" script of
          the Apache Server instead.

          For getting SSL on your server, you would add the "--enable-ssl"

src/subversion/build/buildcheck.sh  view on Meta::CPAN

echo "buildcheck: libtool version $lt_pversion (ok)"

#--------------------------------------------------------------------------
# check that our local copies of files match up with those in APR(UTIL)
#
if test -d ./apr; then
  if cmp -s ./build/ac-macros/find_apr.m4 ./apr/build/find_apr.m4; then
    :
  else
    echo "buildcheck: local copy of find_apr.m4 does not match APR's copy."
    echo "            An updated copy of find_apr.m4 may need to be checked in."
  fi
  if cmp -s ./build/PrintPath ./apr/build/PrintPath; then
    :
  else
    echo "buildcheck: local copy of PrintPath does not match APR's copy."
    echo "            An updated copy of PrintPath may need to be checked in."
  fi
fi

if test -d ./apr-util; then
  if cmp -s ./build/ac-macros/find_apu.m4 ./apr-util/build/find_apu.m4; then
    :
  else
    echo "buildcheck: local copy of find_apu.m4 does not match APRUTIL's copy."
    echo "            An updated copy of find_apu.m4 may need to be checked in."
  fi
fi

#--------------------------------------------------------------------------
exit 0

src/subversion/build/generator/gen_make.py  view on Meta::CPAN

        cfiles.append(target.filename)
    for script in self.scripts:
      if script.endswith('.py'):
        cfiles.append(script + 'c')
    data.cfiles = sorted(cfiles)

    # here are all the SQL files and their generated headers. the Makefile
    # has an implicit rule for generating these, so there isn't much to do
    # except to clean them out. we only do that for 'make extraclean' since
    # these are included as part of the tarball. the files are transformed
    # by gen-make, and developers also get a Make rule to keep them updated.
    for hdrfile, sqlfile in sorted(self.graph.get_deps(gen_base.DT_SQLHDR),
                                   key=lambda t: t[0]):
      data.sql.append(_eztdata(header=hdrfile, source=sqlfile[0]))

    data.release_mode = ezt.boolean(self.release_mode)

    ########################################

    if not self.release_mode:
      swig_rules = StringIO()

src/subversion/subversion/bindings/ctypes-python/csvn/wc.py  view on Meta::CPAN

        return commit_info[0]

    def update(self, paths=[""], revnum=None, recurse=True,
                ignore_externals=True):
        """Update paths to a given revision number.

        Returns an array of revision numbers to which the revision number was
        resolved.

        Keyword arguments:
        paths -- list of path to be updated (defaults to WC root)
        revnum -- revision number to update to (defaults to head revision)
        recurse -- if True, the contents of directories will also be updated
                   (default True)
        ignore_externals -- if True, externals will not be updated (default
                            True)"""

        rev = svn_opt_revision_t()
        if revnum is not None:
            rev.kind = svn_opt_revision_number
            rev.value.number = revnum
        else:
            rev.kind = svn_opt_revision_head

        result_revs = _types.Array(svn_revnum_t, svn_revnum_t())

src/subversion/subversion/bindings/ctypes-python/test/wc.py  view on Meta::CPAN


            self.fail("Property not set")

    def test_update(self):
        path = "trunk/README.txt"
        results = self.wc.update([path], revnum=7)
        self.assertEqual(results[0], 7)
        props = self.wc.propget("Awesome")
        if "%s/%s" % (wc_location, path) in \
                props.keys():
            self.fail("File not updated to old revision")
        results = self.wc.update([path])
        self.assertEqual(results[0], 9)
        self.test_propget()

    def test_switch(self):
        self.wc.switch("trunk", "%s/tags" % repo_url)
        if os.path.exists("%s/trunk/README.txt" % wc_location):
            self.fail("Switch did not happen")

    def test_lock(self):

src/subversion/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java  view on Meta::CPAN


        /** Applying a shadowed add */
        update_shadowed_add ("update shadowed add"),

        /** Applying a shadowed update */
        update_shadowed_update ("update shadowed update"),

        /** Applying a shadowed delete */
        update_shadowed_delete ("update shadowed delete"),

        /** The mergeinfo on path was updated.  */
        merge_record_info   ("merge record info"),

        /** An working copy directory was upgraded to the latest format.  */
        upgraded_path       ("upgraded path"),

        /** Mergeinfo describing a merge was recorded.  */
        merge_record_info_begin     ("merge record info begin"),

        /** Mergeinfo was removed due to elision.  */
        merge_elide_info    ("Merge elide info"),

src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java  view on Meta::CPAN


    /** the schedule on the next commit (see NodeKind) */
    private int schedule;

    /** the kind of node (file or directory or unknown */
    private int nodeKind;

    /** the author of the last commit before base */
    private String author;

    /** the last revision this item was updated */
    private long revision;

    /** the last revision the item before base */
    private long lastChangedRevision;

    /** the date of the last commit */
    private Date lastChangedDate;

    /** the last up-to-date time for the text context */
    private Date lastDateTextUpdate;

src/subversion/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java  view on Meta::CPAN

    /**
     * Retrieves the author of the last commit
     * @return author of the last commit
     */
    public String getAuthor()
    {
        return author;
    }

    /**
     * Retrieves the last revision the item was updated to
     * @return last revision the item was updated to
     */
    public long getRevision()
    {
        return revision;
    }

    /**
     * Retrieves the revision of the last commit
     * @return the revision of the last commit
     */

src/subversion/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java  view on Meta::CPAN


    /**
     * Test the basic SVNClient.update functionality.
     * @throws Throwable
     */
    public void testBasicUpdate() throws Throwable
    {
        // build the test setup. Used for the changes
        OneTest thisTest = new OneTest();

        // build the backup test setup. That is the one that will be updated
        OneTest backupTest = thisTest.copy(".backup");

        // modify A/mu
        File mu = new File(thisTest.getWorkingCopy(), "A/mu");
        PrintWriter muWriter = new PrintWriter(new FileOutputStream(mu, true));
        muWriter.print("appended mu text");
        muWriter.close();
        thisTest.getWc().setItemWorkingCopyRevision("A/mu", 2);
        thisTest.getWc().setItemContent("A/mu",
                thisTest.getWc().getItemContent("A/mu") + "appended mu text");

src/subversion/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java  view on Meta::CPAN

    /**
     * Test the basic tree conflict functionality.
     * @throws Throwable
     */
    public void testTreeConflict() throws Throwable
    {
        // build the test setup. Used for the changes
        OneTest thisTest = new OneTest();
        WC wc = thisTest.getWc();

        // build the backup test setup. That is the one that will be updated
        OneTest tcTest = thisTest.copy(".tree-conflict");


        // Move files from A/B/E to A/B/F.
        Set<String> relPaths = new HashSet<String>(1);
        relPaths.add("alpha");
        Set<String> srcPaths = new HashSet<String>(1);
        for (String fileName : relPaths)
        {
            srcPaths.add(new File(thisTest.getWorkingCopy(),

src/subversion/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java  view on Meta::CPAN


    /**
     * Test the basic SVNClient.update functionality.
     * @throws Throwable
     */
    public void testBasicUpdate() throws Throwable
    {
        // build the test setup. Used for the changes
        OneTest thisTest = new OneTest();

        // build the backup test setup. That is the one that will be updated
        OneTest backupTest = thisTest.copy(".backup");

        // modify A/mu
        File mu = new File(thisTest.getWorkingCopy(), "A/mu");
        PrintWriter muWriter = new PrintWriter(new FileOutputStream(mu, true));
        muWriter.print("appended mu text");
        muWriter.close();
        thisTest.getWc().setItemWorkingCopyRevision("A/mu", 2);
        thisTest.getWc().setItemContent("A/mu",
                thisTest.getWc().getItemContent("A/mu") + "appended mu text");

src/subversion/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java  view on Meta::CPAN

    /**
     * Test the basic tree conflict functionality.
     * @throws Throwable
     */
    public void testTreeConflict() throws Throwable
    {
        // build the test setup. Used for the changes
        OneTest thisTest = new OneTest();
        WC wc = thisTest.getWc();

        // build the backup test setup. That is the one that will be updated
        OneTest tcTest = thisTest.copy(".tree-conflict");


        // Move files from A/B/E to A/B/F.
        String[] srcPaths = { "alpha" };
        for (int i = 0; i < srcPaths.length; i++)
        {
            String fileName = srcPaths[i];
            srcPaths[i] = new File(thisTest.getWorkingCopy(),
                                   "A/B/E/" + fileName).getPath();

src/subversion/subversion/bindings/swig/perl/native/Client.pm  view on Meta::CPAN


=item $client-E<gt>update3($paths, $revision, $depth, $depth_is_sticky, $ignore_externals, $allow_unver_obstructions, $pool)

Similar to $client-E<gt>update4() but with $make_parents always set to FALSE and
$adds_as_modification set to TRUE.

=item $client-E<gt>update4($paths, $revision, $depth, $depth_is_sticky, $ignore_externals, $allow_unver_obstructions, $adds_as_modification, $make_parents)

Update working trees $paths to $revision.

$paths is a array reference of paths to be updated.  Unversioned paths that are
the direct children of a versioned path will cause an update that attempts to
add that path; other unversioned paths are skipped.

$revision must be a revision number, 'HEAD', or a date or this method will
raise the $SVN::Error::CLIENT_BAD_REVISION error.

The paths in $paths can be from multiple working copies from multiple
repositories, but even if they all come from the same repository there is no
guarantee that revision represented by 'HEAD' will remain the same as each path
is updated.

If $ignore_externals is set, don't process externals definitions as part of
this operation.

If $depth is $SVN::Depth::infinity, update fully recursivelly.  Else if it is
$SVN::Depth::immediates or $SVN::Depth::files, update each target and its file
entries, but not its subdirectories.  Else if $SVN::Depth::empty, update
exactly each target, nonrecursively (essentially, update the target's
properties).

src/subversion/subversion/bindings/swig/perl/native/Repos.pm  view on Meta::CPAN

    close $fh;

=item $repos-E<gt>load_fs($dumpfile_fh, $feedback_fh, $uuid_action, $parent_dir, $cancel_func, $cancel_baton);

=item $repos-E<gt>load_fs2($dumpfile_fh, $feedback_fh, $uuid_action, $parent_dir, $use_pre_commit_hook, $use_post_commit_hook, $cancel_func, $cancel_baton);

Loads a dumpfile specified by the C<$dumpfile_fh> filehandle into the repository.
If the dumpstream contains copy history that is unavailable in the repository,
an error will be thrown.

The repository's UUID will be updated iff the dumpstream contains a UUID and
C<$uuid_action> is not equal to C<$SVN::Repos::load_uuid_ignore> and either the
repository contains no revisions or C<$uuid_action> is equal to
C<$SVN::Repos::load_uuid_force>.

If the dumpstream contains no UUID, then C<$uuid_action> is
ignored and the repository UUID is not touched.

If C<$parent_dir> is not null, then the parser will reparent all the
loaded nodes, from root to @a parent_dir.  The directory C<$parent_dir>
must be an existing directory in the repository.

src/subversion/subversion/bindings/swig/python/tests/mergeinfo.py  view on Meta::CPAN

  TEXT_MERGEINFO1 = "/trunk:3-9,27,42*"
  TEXT_MERGEINFO2 = "/trunk:27-29,41-43*"

  # Meta data used in conjunction with this mergeinfo.
  MERGEINFO_SRC = "/trunk"
  MERGEINFO_NBR_REV_RANGES = 3

  def setUp(self):
    """Load the mergeinfo-full Subversion repository.  This dumpfile is
       created by dumping the repository generated for command line log
       tests 16.  If it needs to be updated (mergeinfo format changes, for
       example), we can go there to get a new version."""
    self.temper = utils.Temper()
    (self.repos, _, _) = self.temper.alloc_known_repo('data/mergeinfo.dump',
                                                      suffix='-mergeinfo')
    self.fs = repos.fs(self.repos)
    self.rev = fs.youngest_rev(self.fs)

  def tearDown(self):
    del self.fs
    del self.repos

src/subversion/subversion/bindings/swig/ruby/svn/commit-mailer.rb  view on Meta::CPAN


    def added_files
      changed_files("Added", @info.added_files)
    end

    def deleted_files
      changed_files("Removed", @info.deleted_files)
    end

    def modified_files
      changed_files("Modified", @info.updated_files)
    end

    def copied_files
      changed_files("Copied", @info.copied_files) do |rv, files|
        rv << files.collect do |file, from_file, from_rev|
          <<-INFO
    #{file}
      (from rev #{from_rev}, #{from_file})
INFO
        end.join("")

src/subversion/subversion/bindings/swig/ruby/svn/commit-mailer.rb  view on Meta::CPAN


    def added_dirs
      changed_dirs("Added", @info.added_dirs)
    end

    def deleted_dirs
      changed_dirs("Removed", @info.deleted_dirs)
    end

    def modified_dirs
      changed_dirs("Modified", @info.updated_dirs)
    end

    def copied_dirs
      changed_dirs("Copied", @info.copied_dirs) do |rv, dirs|
        rv << dirs.collect do |dir, from_dir, from_rev|
          "    #{dir} (from rev #{from_rev}, #{from_dir})\n"
        end.join("")
      end
    end

src/subversion/subversion/bindings/swig/ruby/svn/commit-mailer.rb  view on Meta::CPAN

       end + @info.copied_dirs.collect do |dir, from_dir, from_rev|
         <<-INFO
  Copied: #{dir}
    (from rev #{from_rev}, #{from_dir})
INFO
       end + @info.deleted_dirs.collect do |dir|
     <<-INFO
  Deleted: #{dir}
    % svn ls #{[@repository_uri, dir].compact.join("/")}@#{rev - 1}
INFO
       end + @info.updated_dirs.collect do |dir|
         "  Modified: #{dir}\n"
       end).join("\n")
    end

    def diff_info
      @info.diffs.collect do |key, values|
        [
         key,
         values.collect do |type, value|
           args = []

src/subversion/subversion/bindings/swig/ruby/svn/delta.rb  view on Meta::CPAN

          baton[0] = nil
        end
      end
    end

    class ChangedEditor < BaseEditor

      attr_reader :copied_files, :copied_dirs
      attr_reader :added_files, :added_dirs
      attr_reader :deleted_files, :deleted_dirs
      attr_reader :updated_files, :updated_dirs

      def initialize(root, base_root)
        @root = root
        @base_root = base_root
        @in_copied_dir = []
        @copied_files = []
        @copied_dirs = []
        @added_files = []
        @added_dirs = []
        @deleted_files = []
        @deleted_dirs = []
        @updated_files = []
        @updated_dirs = []
      end

      def open_root(base_revision)
        [true, '']
      end

      def delete_entry(path, revision, parent_baton)
        if @base_root.dir?("/#{path}")
          @deleted_dirs << "#{path}/"
        else

src/subversion/subversion/bindings/swig/ruby/svn/delta.rb  view on Meta::CPAN

        end
        [false, path]
      end

      def open_directory(path, parent_baton, base_revision)
        [true, path]
      end

      def change_dir_prop(dir_baton, name, value)
        if dir_baton[0]
          @updated_dirs << "#{dir_baton[1]}/"
          dir_baton[0] = false
        end
        dir_baton
      end

      def close_directory(dir_baton)
        unless dir_baton[0]
          @in_copied_dir.pop
        end
      end

src/subversion/subversion/bindings/swig/ruby/svn/delta.rb  view on Meta::CPAN


      def change_file_prop(file_baton, name, value)
        file_baton[1] = :update
      end

      def close_file(file_baton, text_checksum)
        text_mod, prop_mod, path = file_baton
        # test the path. it will be nil if we added this file.
        if path
          if [text_mod, prop_mod] != [nil, nil]
            @updated_files << path
          end
        end
      end

      def close_edit(baton)
        @copied_files.sort! {|a, b| a[0] <=> b[0]}
        @copied_dirs.sort! {|a, b| a[0] <=> b[0]}
        @added_files.sort!
        @added_dirs.sort!
        @deleted_files.sort!
        @deleted_dirs.sort!
        @updated_files.sort!
        @updated_dirs.sort!
      end

      private
      def in_copied_dir?
        @in_copied_dir.last
      end
    end

    class WrapEditor
      extend Forwardable

src/subversion/subversion/bindings/swig/ruby/svn/info.rb  view on Meta::CPAN


require "svn/core"
require "svn/repos"
require "svn/fs"
require "svn/delta"

module Svn
  class Info

    attr_reader :author, :log, :date, :changed_dirs
    attr_reader :added_files, :deleted_files, :updated_files, :copied_files
    attr_reader :added_dirs, :deleted_dirs, :updated_dirs, :copied_dirs
    attr_reader :path, :revision, :diffs
    attr_reader :sha256, :entire_sha256

    def initialize(path, rev)
      setup(path, rev)
      get_info
      get_dirs_changed
      get_changed
      get_diff
      get_sha256
      teardown
    end

    def paths
      files + directories
    end

    def files
      @added_files + @deleted_files + @updated_files + @copied_files
    end

    def directories
      @added_dirs + @deleted_dirs + @updated_dirs + @copied_dirs
    end

    def sub_paths(prefix)
      prefixes = prefix.split(/\/+/)
      results = []
      paths.each do |path,|
        paths = path.split(/\/+/)
        if prefixes.size < paths.size and prefixes == paths[0, prefixes.size]
          results << paths[prefixes.size]
        end

src/subversion/subversion/bindings/swig/ruby/svn/info.rb  view on Meta::CPAN

    end

    def get_changed
      editor = traverse(Delta::ChangedEditor, true)
      @copied_files = editor.copied_files
      @copied_dirs = editor.copied_dirs
      @added_files = editor.added_files
      @added_dirs = editor.added_dirs
      @deleted_files = editor.deleted_files
      @deleted_dirs = editor.deleted_dirs
      @updated_files = editor.updated_files
      @updated_dirs = editor.updated_dirs
    end

    def get_diff
      tree = @repos.delta_tree(@root, @prev_rev)
      @diffs = {}
      get_diff_recurse(tree, @fs.root(@prev_rev), "", "")
      @diffs.each do |key, values|
        values.each do |type, diff|
          diff.body = force_to_utf8(diff.body)
        end

src/subversion/subversion/bindings/swig/ruby/svn/info.rb  view on Meta::CPAN

      @diffs[target][type] ||= DiffEntry.new(type)
      @diffs[target][type]
    end

    def get_sha256
      sha = Digest::SHA256.new
      @sha256 = {}
      [
        @added_files,
#        @deleted_files,
        @updated_files,
      ].each do |files|
        files.each do |file|
          content = dump_contents(@root, file)
          sha << content
          @sha256[file] = {
            :file => file,
            :revision => @revision,
            :sha256 => Digest::SHA256.hexdigest(content),
          }
        end

src/subversion/subversion/bindings/swig/ruby/test/test_delta.rb  view on Meta::CPAN

      commit_info = ctx.commit(@wc_path)
      first_rev = commit_info.revision

      editor = traverse(Svn::Delta::ChangedEditor, commit_info.revision, true)
      assert_equal([
                     file1_svn_path, file2_svn_path,
                     file3_svn_path, file4_svn_path,
                     file5_svn_path,
                   ].sort,
                   editor.added_files)
      assert_equal([], editor.updated_files)
      assert_equal([], editor.deleted_files)
      assert_equal([].sort, editor.updated_dirs)
      assert_equal([].sort, editor.deleted_dirs)
      assert_equal([
                     "#{dir_svn_path}/",
                     "#{dir1_svn_path}/",
                     "#{dir2_svn_path}/"
                   ].sort,
                   editor.added_dirs)
    end

    log = "deleted 2 dirs\nchanged 3 files\ndeleted 2 files\nadded 3 files"

src/subversion/subversion/bindings/swig/ruby/test/test_delta.rb  view on Meta::CPAN

      ctx.cp(file2_path, file10_path)
      ctx.mv(dir2_path, dir3_path)
      ctx.cp(dir1_path, dir4_path)
      ctx.rm(dir1_path)

      commit_info = ctx.commit(@wc_path)
      second_rev = commit_info.revision

      editor = traverse(Svn::Delta::ChangedEditor, commit_info.revision, true)
      assert_equal([file1_svn_path, file2_svn_path, file3_svn_path].sort,
                   editor.updated_files)
      assert_equal([file4_svn_path, file5_svn_path].sort,
                   editor.deleted_files)
      assert_equal([file6_svn_path, file7_svn_path, file8_svn_path].sort,
                   editor.added_files)
      assert_equal([].sort, editor.updated_dirs)
      assert_equal([
                     [file9_svn_path, file1_svn_path, first_rev],
                     [file10_svn_path, file2_svn_path, first_rev],
                   ].sort_by{|x| x[0]},
                   editor.copied_files)
      assert_equal([
                     ["#{dir3_svn_path}/", "#{dir2_svn_path}/", first_rev],
                     ["#{dir4_svn_path}/", "#{dir1_svn_path}/", first_rev],
                   ].sort_by{|x| x[0]},
                   editor.copied_dirs)

src/subversion/subversion/bindings/swig/ruby/test/test_delta.rb  view on Meta::CPAN


      commit_info = ctx.commit(@wc_path)
      first_rev = commit_info.revision

      editor = traverse(Svn::Delta::ChangedEditor, commit_info.revision, true)
      assert_equal([
                     file1_svn_path, file2_svn_path,
                     file3_svn_path,
                   ].sort,
                   editor.added_files)
      assert_equal([].sort, editor.updated_files)
      assert_equal([].sort, editor.deleted_files)
      assert_equal([].sort, editor.updated_dirs)
      assert_equal([].sort, editor.deleted_dirs)
      assert_equal([
                     "#{dir1_svn_path}/",
                     "#{dir2_svn_path}/",
                   ].sort,
                   editor.added_dirs)
    end

    log = "copied top dir"
    make_context(log) do |ctx|

src/subversion/subversion/bindings/swig/ruby/test/test_delta.rb  view on Meta::CPAN

      dir3 = "dir3"
      dir3_path = File.join(@wc_path, dir3)
      dir3_svn_path = dir3

      ctx.cp(dir1_path, dir3_path)

      commit_info = ctx.commit(@wc_path)
      second_rev = commit_info.revision

      editor = traverse(Svn::Delta::ChangedEditor, commit_info.revision, true)
      assert_equal([].sort, editor.updated_files)
      assert_equal([].sort, editor.deleted_files)
      assert_equal([].sort, editor.added_files)
      assert_equal([].sort, editor.updated_dirs)
      assert_equal([].sort, editor.copied_files)
      assert_equal([
                     ["#{dir3_svn_path}/", "#{dir1_svn_path}/", first_rev]
                   ].sort_by{|x| x[0]},
                   editor.copied_dirs)
      assert_equal([].sort, editor.deleted_dirs)
      assert_equal([].sort, editor.added_dirs)
    end
  end

src/subversion/subversion/bindings/swig/ruby/test/test_info.rb  view on Meta::CPAN

      ctx.add(file1_path)
      ctx.add(file2_path)
      ctx.add(file3_path)
      ctx.add(file4_path)
      ctx.add(file5_path)

      commit_info = ctx.commit(@wc_path)
      first_rev = commit_info.revision

      info = make_info(commit_info.revision)
      assert_equal([].sort, info.updated_dirs)
      assert_equal([].sort, info.deleted_dirs)
      assert_equal(["#{dir_svn_path}/", "#{tmp_dir_svn_path}/"].sort,
                   info.added_dirs)
    end

    log = "changed 3 files\ndeleted 2 files\nadded 3 files"
    make_context(log) do |ctx|
      File.open(file1_path, "w") {|f| f.puts "changed"}
      File.open(file2_path, "w") {|f| f.puts "changed"}
      File.open(file3_path, "w") {|f| f.puts "changed"}

src/subversion/subversion/bindings/swig/ruby/test/test_info.rb  view on Meta::CPAN

      ctx.add(file7_path)
      ctx.add(file8_path)
      ctx.cp(file1_path, file9_path)
      ctx.rm(tmp_dir_path)

      commit_info = ctx.commit(@wc_path)
      second_rev = commit_info.revision

      info = make_info(commit_info.revision)
      assert_equal([file1_svn_path, file2_svn_path, file3_svn_path].sort,
                   info.updated_files)
      assert_equal([file4_svn_path, file5_svn_path].sort,
                   info.deleted_files)
      assert_equal([file6_svn_path, file7_svn_path, file8_svn_path].sort,
                   info.added_files)
      assert_equal([].sort, info.updated_dirs)
      assert_equal([
                     [file9_svn_path, file1_svn_path, first_rev]
                   ].sort_by{|x| x[0]},
                   info.copied_files)
      assert_equal([], info.copied_dirs)
      assert_equal(["#{tmp_dir_svn_path}/"].sort, info.deleted_dirs)
      assert_equal([].sort, info.added_dirs)
    end
  end

src/subversion/subversion/include/private/svn_adler32.h  view on Meta::CPAN

#define SVN_ADLER32_H

#include <apr.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


/**
 * Return an adler32 checksum based on CHECKSUM, updated with
 * DATA of size LEN.
 *
 * @since New in 1.7.
 */
apr_uint32_t
svn__adler32(apr_uint32_t checksum, const char *data, apr_off_t len);


#ifdef __cplusplus
}

src/subversion/subversion/include/private/svn_client_private.h  view on Meta::CPAN

                                     const svn_opt_revision_t *revision2,
                                     svn_client_ctx_t *ctx,
                                     apr_pool_t *result_pool,
                                     apr_pool_t *scratch_pool);

/* Get the repository location of the base node at LOCAL_ABSPATH.
 *
 * A pathrev_t wrapper around svn_wc__node_get_base().
 *
 * Set *BASE_P to the location that this node was checked out at or last
 * updated/switched to, regardless of any uncommitted changes (delete,
 * replace and/or copy-here/move-here).
 *
 * If there is no base node at LOCAL_ABSPATH (such as when there is a
 * locally added/copied/moved-here node that is not part of a replace),
 * set *BASE_P to NULL.
 */
svn_error_t *
svn_client__wc_node_get_base(svn_client__pathrev_t **base_p,
                             const char *wc_abspath,
                             svn_wc_context_t *wc_ctx,

src/subversion/subversion/include/private/svn_editor.h  view on Meta::CPAN

 * course of the same operation sequence, when the corresponding callbacks
 * for these items are invoked.
 * \n\n
 *
 * <h3>Timing and State</h3>
 * The calls made by the driver to alter the state in the receiver are
 * based on the receiver's *current* state, which includes all prior changes
 * made during the edit.
 *
 * Example: copy A to B; set-props on A; copy A to C. The props on C
 * should reflect the updated properties of A.
 *
 * Example: mv A@N to B; mv C@M to A. The second move cannot be marked as
 * a "replacing" move since it is not replacing A. The node at A was moved
 * away. The second operation is simply moving C to the now-empty path
 * known as A.
 *
 * <h3>Paths</h3>
 * Each driver/receiver implementation of this editor interface must
 * establish the expected root for all the paths sent and received via
 * the callbacks' @a relpath arguments.

src/subversion/subversion/include/private/svn_editor.h  view on Meta::CPAN

                      svn_stream_t *contents);

/** Drive @a editor's #svn_editor_cb_alter_symlink_t callback.
 *
 * Alter the properties and/or the target of the symlink at @a relpath
 * with @a revision as its expected revision. See svn_editor_alter_directory()
 * for more information about @a revision.
 *
 * If @a props is non-NULL, then the properties will be applied.
 *
 * If @a target is non-NULL, then the symlink's target will be updated.
 *
 * The properties and/or the target must be changed. It is an error to
 * pass NULL for @a props and @a target.
 *
 * This function allows @a props to be NULL, but the parameter is
 * otherwise described by svn_editor_add_file().
 *
 * For all restrictions on driving the editor, see #svn_editor_t.
 * @since New in 1.8.
 */

src/subversion/subversion/include/private/svn_wc_private.h  view on Meta::CPAN

svn_wc__node_has_working(svn_boolean_t *has_working,
                         svn_wc_context_t *wc_ctx,
                         const char *local_abspath,
                         apr_pool_t *scratch_pool);


/**
 * Get the repository location of the base node at @a local_abspath.
 *
 * Set *REVISION, *REPOS_RELPATH, *REPOS_ROOT_URL *REPOS_UUID and *LOCK_TOKEN
 * to the location that this node was checked out at or last updated/switched
 * to, regardless of any uncommitted changes (delete, replace and/or copy-here/
 * move-here).
 *
 * If there is no BASE node at @a local_abspath or if @a show_hidden is FALSE,
 * no status 'normal' or 'incomplete' BASE node report
 * SVN_ERR_WC_PATH_NOT_FOUND, or if @a ignore_enoent is TRUE, @a kind
 * svn_node_unknown, @a revision SVN_INVALID_REVNUM and all other values NULL.
 *
 * All output arguments may be NULL.
 *

src/subversion/subversion/include/private/svn_wc_private.h  view on Meta::CPAN



/**
 * Set @a *editor and @a *edit_baton to an editor and baton for updating a
 * working copy.
 *
 * @a anchor_abspath is a local working copy directory, with a fully recursive
 * write lock in @a wc_ctx, which will be used as the root of our editor.
 *
 * @a target_basename is the entry in @a anchor_abspath that will actually be
 * updated, or the empty string if all of @a anchor_abspath should be updated.
 *
 * The editor invokes @a notify_func with @a notify_baton as the update
 * progresses, if @a notify_func is non-NULL.
 *
 * If @a cancel_func is non-NULL, the editor will invoke @a cancel_func with
 * @a cancel_baton as the update progresses to see if it should continue.
 *
 * If @a conflict_func is non-NULL, then invoke it with @a
 * conflict_baton whenever a conflict is encountered, giving the
 * callback a chance to resolve the conflict before the editor takes

src/subversion/subversion/include/private/svn_wc_private.h  view on Meta::CPAN

 * @a preserved_exts is an array of filename patterns which, when
 * matched against the extensions of versioned files, determine for
 * which such files any related generated conflict files will preserve
 * the original file's extension as their own.  If a file's extension
 * does not match any of the patterns in @a preserved_exts (which is
 * certainly the case if @a preserved_exts is @c NULL or empty),
 * generated conflict files will carry Subversion's custom extensions.
 *
 * @a target_revision is a pointer to a revision location which, after
 * successful completion of the drive of this editor, will be
 * populated with the revision to which the working copy was updated.
 *
 * @a wcroot_iprops is a hash mapping const char * absolute working copy
 * paths which are working copy roots (at or under the target within the
 * constraints dictated by @a depth) to depth-first ordered arrays of
 * svn_prop_inherited_item_t * structures which represent the inherited
 * properties for the base of those paths at @a target_revision.  After a
 * successful drive of this editor, the base nodes for these paths will
 * have their inherited properties cache updated with the values from
 * @a wcroot_iprops.
 *
 * If @a use_commit_times is TRUE, then all edited/added files will
 * have their working timestamp set to the last-committed-time.  If
 * FALSE, the working files will be touched with the 'now' time.
 *
 * If @a allow_unver_obstructions is TRUE, then allow unversioned
 * obstructions when adding a path.
 *
 * If @a adds_as_modification is TRUE, a local addition at the same path

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

/**
 * @defgroup Update Bring a working copy up-to-date with a repository
 *
 * @{
 *
 */

/**
 * Update working trees @a paths to @a revision, authenticating with the
 * authentication baton cached in @a ctx.  @a paths is an array of const
 * char * paths to be updated.  Unversioned paths that are direct children
 * of a versioned path will cause an update that attempts to add that path;
 * other unversioned paths are skipped.  If @a result_revs is not NULL,
 * @a *result_revs will be set to an array of svn_revnum_t with each
 * element set to the revision to which @a revision was resolved for the
 * corresponding element of @a paths.
 *
 * @a revision must be of kind #svn_opt_revision_number,
 * #svn_opt_revision_head, or #svn_opt_revision_date.  If @a
 * revision does not meet these requirements, return the error
 * #SVN_ERR_CLIENT_BAD_REVISION.
 *
 * The paths in @a paths can be from multiple working copies from multiple
 * repositories, but even if they all come from the same repository there
 * is no guarantee that revision represented by #svn_opt_revision_head
 * will remain the same as each path is updated.
 *
 * If @a ignore_externals is set, don't process externals definitions
 * as part of this operation.
 *
 * If @a depth is #svn_depth_infinity, update fully recursively.
 * Else if it is #svn_depth_immediates or #svn_depth_files, update
 * each target and its file entries, but not its subdirectories.  Else
 * if #svn_depth_empty, update exactly each target, nonrecursively
 * (essentially, update the target's properties).
 *

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

 * also.  Otherwise, the parent of @a dst_path must already exist.
 *
 * If @a allow_mixed_revisions is @c FALSE, #SVN_ERR_WC_MIXED_REVISIONS
 * will be raised if the move source is a mixed-revision subtree.
 * If @a allow_mixed_revisions is TRUE, a mixed-revision move source is
 * allowed but the move will degrade to a copy and a delete without local
 * move tracking. This parameter should be set to FALSE except where backwards
 * compatibility to svn_client_move6() is required.
 *
 * If @a metadata_only is @c TRUE and moving a file in a working copy,
 * everything in the metadata is updated as if the node is moved, but the
 * actual disk move operation is not performed. This feature is useful for
 * clients that want to keep the working copy in sync while the actual working
 * copy is updated by some other task.
 *
 * If non-NULL, @a revprop_table is a hash table holding additional,
 * custom revision properties (<tt>const char *</tt> names mapped to
 * <tt>svn_string_t *</tt> values) to be set on the new revision in
 * the event that this is a committing operation.  This table cannot
 * contain any standard Subversion properties.
 *
 * @a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo that
 * this function can use to query for a commit log message when one is needed.
 *

src/subversion/subversion/include/svn_path.h  view on Meta::CPAN

 * of targets in the original list is preserved in the condensed list
 * of targets.  Use @a pool for any allocations.
 *
 * How does this differ in functionality from svn_path_condense_targets()?
 *
 * Here's the short version:
 *
 * 1.  Disclaimer: if you wish to debate the following, talk to Karl. :-)
 *     Order matters for updates because a multi-arg update is not
 *     atomic, and CVS users are used to, when doing 'cvs up targetA
 *     targetB' seeing targetA get updated, then targetB.  I think the
 *     idea is that if you're in a time-sensitive or flaky-network
 *     situation, a user can say, "I really *need* to update
 *     wc/A/D/G/tau, but I might as well update my whole working copy if
 *     I can."  So that user will do 'svn up wc/A/D/G/tau wc', and if
 *     something dies in the middles of the 'wc' update, at least the
 *     user has 'tau' up-to-date.
 *
 * 2.  Also, we have this notion of an anchor and a target for updates
 *     (the anchor is where the update editor is rooted, the target is
 *     the actual thing we want to update).  I needed a function that

src/subversion/subversion/include/svn_ra.h  view on Meta::CPAN

 * client then describes its working copy by making calls into the
 * @a reporter.
 *
 * When finished, the client calls @a reporter->finish_report().  The
 * RA layer then does a complete drive of @a update_editor, ending with
 * @a update_editor->close_edit(), to update the working copy.
 *
 * @a update_target is an optional single path component to restrict
 * the scope of the update to just that entry (in the directory
 * represented by the @a session's URL).  If @a update_target is the
 * empty string, the entire directory is updated.
 *
 * Update the target only as deeply as @a depth indicates.
 *
 * If @a send_copyfrom_args is TRUE, then ask the server to send
 * copyfrom arguments to add_file() and add_directory() when possible.
 * (Note: this means that any subsequent txdeltas coming from the
 * server are presumed to apply against the copied file!)
 *
 * Use @a ignore_ancestry to control whether or not items being
 * updated will be checked for relatedness first.  Unrelated items
 * are typically transmitted to the editor as a deletion of one thing
 * and the addition of another, but if this flag is @c TRUE,
 * unrelated items will be diffed as if they were related.
 *
 * The working copy will be updated to @a revision_to_update_to, or the
 * "latest" revision if this arg is invalid.
 *
 * The caller may not perform any RA operations using @a session before
 * finishing the report, and may not perform any RA operations using
 * @a session from within the editing operations of @a update_editor.
 *
 * Allocate @a *reporter and @a *report_baton in @a result_pool.  Use
 * @a scratch_pool for temporary allocations.
 *
 * @note The reporter provided by this function does NOT supply copy-

src/subversion/subversion/include/svn_repos.h  view on Meta::CPAN



/**
 * Read and parse dumpfile-formatted @a dumpstream, reconstructing
 * filesystem revisions in already-open @a repos, handling uuids in
 * accordance with @a uuid_action.  Use @a pool for all allocation.
 *
 * If the dumpstream contains copy history that is unavailable in the
 * repository, an error will be thrown.
 *
 * The repository's UUID will be updated iff
 *   the dumpstream contains a UUID and
 *   @a uuid_action is not equal to #svn_repos_load_uuid_ignore and
 *   either the repository contains no revisions or
 *          @a uuid_action is equal to #svn_repos_load_uuid_force.
 *
 * If the dumpstream contains no UUID, then @a uuid_action is
 * ignored and the repository UUID is not touched.
 *
 * @a start_rev and @a end_rev act as filters, the lower and upper
 * (inclusive) range values of revisions in @a dumpstream which will

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

  /** A merge operation (to path) from a foreign repository has begun.
      See #svn_wc_notify_t.merge_range.  @since New in 1.5. */
  svn_wc_notify_foreign_merge_begin,

  /** Replace notification. @since New in 1.5. */
  svn_wc_notify_update_replace,

  /** Property added. @since New in 1.6. */
  svn_wc_notify_property_added,

  /** Property updated. @since New in 1.6. */
  svn_wc_notify_property_modified,

  /** Property deleted. @since New in 1.6. */
  svn_wc_notify_property_deleted,

  /** Nonexistent property deleted. @since New in 1.6. */
  svn_wc_notify_property_deleted_nonexistent,

  /** Revprop set. @since New in 1.6. */
  svn_wc_notify_revprop_set,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

  svn_wc_notify_update_skip_access_denied,

  /** An update operation removed an external working copy.
   * @since New in 1.7. */
  svn_wc_notify_update_external_removed,

  /** A node below an existing node was added during update.
   * @since New in 1.7. */
  svn_wc_notify_update_shadowed_add,

  /** A node below an existing node was updated during update.
   * @since New in 1.7. */
  svn_wc_notify_update_shadowed_update,

  /** A node below an existing node was deleted during update.
   * @since New in 1.7. */
  svn_wc_notify_update_shadowed_delete,

  /** The mergeinfo on path was updated.  @since New in 1.7. */
  svn_wc_notify_merge_record_info,

  /** A working copy directory was upgraded to the latest format.
   * @since New in 1.7. */
  svn_wc_notify_upgraded_path,

  /** Mergeinfo describing a merge was recorded.
   * @since New in 1.7. */
  svn_wc_notify_merge_record_info_begin,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 *
 * Entries that are in a 'excluded', 'deleted' or 'absent' state (and not
 * scheduled for re-addition) are not returned in the hash, unless
 * @a show_hidden is TRUE. Excluded entries are those with their depth set to
 * #svn_depth_exclude.
 *
 * @par Important:
 * The @a entries hash is the entries cache in @a adm_access
 * and so usually the hash itself, the keys and the values should be treated
 * as read-only.  If any of these are modified then it is the caller's
 * responsibility to ensure that the entries file on disk is updated.  Treat
 * the hash values as type (<tt>const svn_wc_entry_t *</tt>) if you wish to
 * avoid accidental modification.  Modifying the schedule member is a
 * particularly bad idea, as the entries writing process relies on having
 * access to the original schedule.  Use a duplicate entry to modify the
 * schedule.
 *
 * @par Important:
 * Only the entry structures representing files and
 * #SVN_WC_ENTRY_THIS_DIR contain complete information.  The entry
 * structures representing subdirs have only the `kind' and `state'

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 * null.
 *
 * If the @a entry mentions that text conflict files (with suffix .mine,
 * .theirs, etc.) exist, but they cannot be found, assume the text conflict
 * has been resolved by the user and return FALSE in @a *text_conflicted_p.
 *
 * Similarly, if the @a entry mentions that a property conflicts file (.prej
 * suffix) exists, but it cannot be found, assume the property conflicts
 * have been resolved by the user and return FALSE in @a *prop_conflicted_p.
 *
 * The @a entry is not updated.
 *
 * @deprecated Provided for backward compatibility with the 1.5 API.
 */
SVN_DEPRECATED
svn_error_t *
svn_wc_conflicted_p(svn_boolean_t *text_conflicted_p,
                    svn_boolean_t *prop_conflicted_p,
                    const char *dir_path,
                    const svn_wc_entry_t *entry,
                    apr_pool_t *pool);

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

typedef svn_error_t *(*svn_wc_get_file_t)(void *baton,
                                          const char *path,
                                          svn_revnum_t revision,
                                          svn_stream_t *stream,
                                          svn_revnum_t *fetched_rev,
                                          apr_hash_t **props,
                                          apr_pool_t *pool);

/**
 * A simple callback type to wrap svn_ra_get_dir2() for avoiding issue #3569,
 * where a directory is updated to a revision without some of its children
 * recorded in the working copy. A future update won't bring these files in
 * because the repository assumes they are already there.
 *
 * We really only need the names of the dirents for a not-present marking,
 * but we also store the node-kind if we receive one.
 *
 * @a *dirents should be set to a hash mapping <tt>const char *</tt> child
 * names, to <tt>const svn_dirent_t *</tt> instances.
 *
 * @since New in 1.7.

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 *
 * ---
 *
 * Set @a *editor and @a *edit_baton to an editor and baton for updating a
 * working copy.
 *
 * @a anchor_abspath is a local working copy directory, with a fully recursive
 * write lock in @a wc_ctx, which will be used as the root of our editor.
 *
 * @a target_basename is the entry in @a anchor_abspath that will actually be
 * updated, or the empty string if all of @a anchor_abspath should be updated.
 *
 * The editor invokes @a notify_func with @a notify_baton as the update
 * progresses, if @a notify_func is non-NULL.
 *
 * If @a cancel_func is non-NULL, the editor will invoke @a cancel_func with
 * @a cancel_baton as the update progresses to see if it should continue.
 *
 * If @a conflict_func is non-NULL, then invoke it with @a
 * conflict_baton whenever a conflict is encountered, giving the
 * callback a chance to resolve the conflict before the editor takes

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 * @a preserved_exts is an array of filename patterns which, when
 * matched against the extensions of versioned files, determine for
 * which such files any related generated conflict files will preserve
 * the original file's extension as their own.  If a file's extension
 * does not match any of the patterns in @a preserved_exts (which is
 * certainly the case if @a preserved_exts is @c NULL or empty),
 * generated conflict files will carry Subversion's custom extensions.
 *
 * @a target_revision is a pointer to a revision location which, after
 * successful completion of the drive of this editor, will be
 * populated with the revision to which the working copy was updated.
 *
 * If @a use_commit_times is TRUE, then all edited/added files will
 * have their working timestamp set to the last-committed-time.  If
 * FALSE, the working files will be touched with the 'now' time.
 *
 * If @a allow_unver_obstructions is TRUE, then allow unversioned
 * obstructions when adding a path.
 *
 * If @a adds_as_modification is TRUE, a local addition at the same path
 * as an incoming addition of the same node kind results in a normal node

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

 * If @a dry_run is @c TRUE no files are changed.  The outcome of the merge
 * is returned in @a *merge_content_outcome.
 * ### (and what about @a *merge_props_state?)
 *
 * ### BH: Two kinds of outcome is not how it should be.
 *
 * ### For text, we report the outcome as 'merged' if there was some
 *     incoming change that we dealt with (even if we decided to no-op?)
 *     but the callers then convert this outcome into a notification
 *     of 'merged' only if there was already a local modification;
 *     otherwise they notify it as simply 'updated'.  But for props
 *     we report a notify state of 'merged' here if there was an
 *     incoming change regardless of the local-mod state.  Inconsistent.
 *
 * Use @a scratch_pool for any temporary allocation.
 *
 * @since New in 1.8.
 */
svn_error_t *
svn_wc_merge5(enum svn_wc_merge_outcome_t *merge_content_outcome,
              enum svn_wc_notify_state_t *merge_props_state,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN


/** @} */


/** Given a @a path to a wc file, return in @a *contents a readonly stream to
 * the pristine contents of the file that would serve as base content for the
 * next commit. That means:
 *
 * When there is no change in node history scheduled, i.e. when there are only
 * local text-mods, prop-mods or a delete, return the last checked-out or
 * updated-/switched-to contents of the file.
 *
 * If the file is simply added or replaced (no copy-/move-here involved),
 * set @a *contents to @c NULL.
 *
 * When the file has been locally copied-/moved-here, return the contents of
 * the copy/move source (even if the copy-/move-here replaces a locally
 * deleted file).
 *
 * If @a local_abspath refers to an unversioned or non-existing path, return
 * @c SVN_ERR_WC_PATH_NOT_FOUND. Use @a wc_ctx to access the working copy.

src/subversion/subversion/libsvn_client/externals.c  view on Meta::CPAN


  /* 
   * The code below assumes existing versioned paths are *not* part of
   * the external's defining working copy.
   * The working copy library does not support registering externals
   * on top of existing BASE nodes and will error out if we try.
   * So if the external target is part of the defining working copy's
   * BASE tree, don't attempt to create the external. Doing so would
   * leave behind a switched path instead of an external (since the
   * switch succeeds but registration of the external in the DB fails).
   * The working copy then cannot be updated until the path is switched back.
   * See issue #4085.
   */
  SVN_ERR(svn_wc__node_get_base(&kind, NULL, NULL,
                                &repos_root_url, &repos_uuid,
                                NULL, ctx->wc_ctx, local_abspath,
                                TRUE, /* ignore_enoent */
                                TRUE, /* show hidden */
                                pool, pool));
  if (kind != svn_node_unknown)
    {

src/subversion/subversion/libsvn_client/merge.c  view on Meta::CPAN


/* Prepare a set of property changes PROPCHANGES to be used for a merge
   operation on LOCAL_ABSPATH.

   Remove all non-regular prop-changes (entry-props and WC-props).
   Remove all non-mergeinfo prop-changes if it's a record-only merge.
   Remove self-referential mergeinfo (### in some cases...)
   Remove foreign-repository mergeinfo (### in some cases...)

   Store the resulting property changes in *PROP_UPDATES.
   Store information on where mergeinfo is updated in MERGE_B.

   Used for both file and directory property merges. */
static svn_error_t *
prepare_merge_props_changed(const apr_array_header_t **prop_updates,
                            const char *local_abspath,
                            const apr_array_header_t *propchanges,
                            merge_cmd_baton_t *merge_b,
                            apr_pool_t *result_pool,
                            apr_pool_t *scratch_pool)
{

src/subversion/subversion/libsvn_client/merge.c  view on Meta::CPAN

    }
  return SVN_NO_ERROR;
}

/* An svn_diff_tree_processor_t function.
 *
 * Called after merge_dir_opened() when a node exists in both the left and
 * right source, but has its properties changed inbetween.
 *
 * After the merge_dir_opened() but before the call to this merge_dir_changed()
 * function all descendants will have been updated.
 */
static svn_error_t *
merge_dir_changed(const char *relpath,
                  const svn_diff_source_t *left_source,
                  const svn_diff_source_t *right_source,
                  /*const*/ apr_hash_t *left_props,
                  /*const*/ apr_hash_t *right_props,
                  const apr_array_header_t *prop_changes,
                  void *dir_baton,
                  const struct svn_diff_tree_processor_t *processor,

src/subversion/subversion/libsvn_client/merge.c  view on Meta::CPAN


          /* Now delete the just merged range from the hash
             (This list is used from notify_merge_begin)

            Directory merges use remove_first_range_from_remaining_ranges() */
          svn_sort__array_delete(ranges_to_merge, 0, 1);
        }
      merge_b->notify_begin.last_abspath = NULL;
    } /* !merge_b->record_only */

  /* Record updated WC mergeinfo to account for our new merges, minus
     any unresolved conflicts and skips.  We use the original
     REMAINING_RANGES here because we want to record all the requested
     merge ranges, include the noop ones.  */
  if (RECORD_MERGEINFO(merge_b) && remaining_ranges->nelts)
    {
      const char *mergeinfo_path = svn_client__pathrev_fspath(primary_src,
                                                              scratch_pool);
      svn_rangelist_t *filtered_rangelist;

      /* Filter any ranges from TARGET_WCPATH's own history, there is no

src/subversion/subversion/libsvn_client/merge.c  view on Meta::CPAN

                                      child_merges, is_rollback,
                                      merge_b->ctx, iterpool));

          /* Once is enough: We don't need to record mergeinfo describing
             the merge a second.  If CHILD->ABSPATH is in
             MERGE_B->ADDED_ABSPATHS, we'll do just that, so remove the
             former from the latter. */
          svn_hash_sets(merge_b->added_abspaths, child->abspath, NULL);
        }

      /* Elide explicit subtree mergeinfo whether or not we updated it. */
      if (i > 0)
        {
          svn_boolean_t in_switched_subtree = FALSE;

          if (child->switched)
            in_switched_subtree = TRUE;
          else if (i > 1)
            {
              /* Check if CHILD is part of a switched subtree */
              svn_client__merge_path_t *parent;

src/subversion/subversion/libsvn_client/merge.c  view on Meta::CPAN

  svn_client__pathrev_t *loc1;
  merge_source_t source;
  svn_mergeinfo_catalog_t unmerged_to_source_mergeinfo_catalog;
  svn_mergeinfo_catalog_t merged_to_source_mergeinfo_catalog;
  svn_error_t *err;
  apr_hash_t *subtrees_with_mergeinfo;

  assert(session_url_is(source_ra_session, source_loc->url, scratch_pool));
  assert(session_url_is(target_ra_session, target->loc.url, scratch_pool));

  /* As the WC tree is "pure", use its last-updated-to revision as
     the default revision for the left side of our merge, since that's
     what the repository sub-tree is required to be up to date with
     (with regard to the WC). */
  /* ### Bogus/obsolete comment? */

  /* Can't reintegrate to or from the root of the repository. */
  if (strcmp(source_loc->url, source_loc->repos_root_url) == 0
      || strcmp(target->loc.url, target->loc.repos_root_url) == 0)
    return svn_error_createf(SVN_ERR_CLIENT_NOT_READY_TO_MERGE, NULL,
                             _("Neither the reintegrate source nor target "

src/subversion/subversion/libsvn_client/update.c  view on Meta::CPAN


      /* To relocate everything inside our repository we need the old and new
         repos root. */
      SVN_ERR(svn_ra_get_repos_root2(ra_session, &new_repos_root_url, pool));

      /* svn_client_relocate2() will check the uuid */
      SVN_ERR(svn_client_relocate2(anchor_abspath, repos_root_url,
                                   new_repos_root_url, ignore_externals,
                                   ctx, pool));

      /* Store updated repository root for externals */
      repos_root_url = new_repos_root_url;
      /* ### We should update anchor_loc->repos_uuid too, although currently
       * we don't use it. */
      anchor_url = corrected_url;
    }

  /* Resolve unspecified REVISION now, because we need to retrieve the
     correct inherited props prior to the editor drive and we need to
     use the same value of HEAD for both. */
  opt_rev.kind = revision->kind;

src/subversion/subversion/libsvn_client/update.c  view on Meta::CPAN

          err = update_internal(result_rev, conflicted_paths,
                                missing_parent, anchor_abspath,
                                &peg_revision, svn_depth_empty, FALSE,
                                ignore_externals, allow_unver_obstructions,
                                adds_as_modification, timestamp_sleep,
                                FALSE, ctx, pool);
          if (err)
            goto cleanup;
          anchor_abspath = missing_parent;

          /* If we successfully updated a missing parent, let's re-use
             the returned revision number for future updates for the
             sake of consistency. */
          peg_revision.kind = svn_opt_revision_number;
          peg_revision.value.number = *result_rev;
        }
    }
  else
    {
      SVN_ERR(svn_wc__acquire_write_lock(&lockroot_abspath, ctx->wc_ctx,
                                         local_abspath, !innerupdate,



( run in 0.687 second using v1.01-cache-2.11-cpan-05444aca049 )