Class Svn
In: lib/vcs/revision.rb
lib/vcs/diff.rb
lib/vcs/list.rb
lib/vcs/svn.rb
lib/vcs/status.rb
lib/vcs/ignore.rb
Parent: Object
Author:Nicolas Pouillard <ertai@lrde.epita.fr>.
Copyright:Copyright © 2005 LRDE. All rights reserved.
License:Gnu General Public License.
Revision:$Id: /lrde/tools/trunk/vcs/lib/vcs/ignore.rb 9101 2005-10-02T20:22:46.082320Z pouill_n $

Methods

diffw!   ignore!   list!   new   revision!   standard_option?   status  

Classes and Modules

Class Svn::Failure

Public Class methods

[Source]

# File lib/vcs/svn.rb, line 11
  def initialize ( aCmd='svn' )
    super
    @@svn_option_controller ||=
      OptionController.new(Svn, @@options_specification +
                                Vcs.specific_options.to_a.join("\n"))
    self.option_controller = @@svn_option_controller
  end

Public Instance methods

A diff only for your eyes

[Source]

# File lib/vcs/diff.rb, line 36
  def diffw! ( files_orig=[], options={} )
    files = diffw_base(files_orig, options)
    return if files.empty? and not files_orig.empty?
    diff_! files,
           options.merge(:diff_cmd => 'diff', :extensions => '-NPbuw')
  end

Add an ignore entry in the given path. Automatically determine the rep concerned with svn:ignore. Examples:

   $ svn ignore my_subdir/'*.tex'
   $ svn ignore ./foo.generated my_subdir/another/a_wrong_file

[Source]

# File lib/vcs/ignore.rb, line 14
  def ignore! ( files=[], options={} )
    files.each do |file|
      dir, base = file.to_path.split
      logger.info { "Add `#{base}' to svn:ignore of `#{dir}'"}
      data = propget(['svn:ignore', dir], :strict => true)
      data.output.open('a') { |f| f.puts base }
      propset!(['svn:ignore', dir],
               options.merge(:quiet => true, :file => data.output))
      data.clean
    end
  end

[Source]

# File lib/vcs/list.rb, line 15
  def list! ( files=[], options={}, &block )
    if options.has_key?(:do) or block \
        or Vcs.categories.any? { |cat| options.has_key?(cat) }

      action = options[:do]
      options.delete(:do)
      categories = []
      Vcs.categories.each do |cat|
        if options.has_key? cat
          categories << cat
          options.delete(cat)
        end
      end
      inside_versioned = []
      outside_versioned = []
      if categories.empty?
        list_(files, options).output.read.each do |line|
          inside_versioned << line.chomp
        end
      else
        files << '.' if files.empty?
        files.each do |file|
          file.to_path.find do |path|
            if path.directory?
              if path.dirname.to_s == '.svn'
              elsif (path/'.svn').exist?
                inside_versioned << path
              else
                outside_versioned << path
              end
              Find.prune
            else
              inside_versioned << path
            end
          end
        end
      end
      path_list = PathList.new
      status(inside_versioned) do |se|
        path_list << se.file if categories.include? se.category
      end
      outside_versioned.each do |path|
        path_list << path if categories.include? Vcs.classify(path)
      end
      if action
        system "#{action} #{path_list}"
      elsif block
        block[path_list]
      else
        puts path_list
      end
    else
      list_!(files, options)
    end
  end

[Source]

# File lib/vcs/revision.rb, line 12
  def revision! ( *args )
    puts info(*args).read[/^Revision:\s+(\d+)/, 1]
  end

[Source]

# File lib/vcs/svn.rb, line 73
  def standard_option? ( option_name )
    @@standard_options.include? option_name.to_sym
  end

[Source]

# File lib/vcs/status.rb, line 93
  def status ( *args, &block )
    return status_(*args) if block.nil?
    spawn_status_entries(status_(*args), &block)
  end

[Validate]