Want to know what files are not included in a darcs repository? Well, me too :) From what I can tell, darcs itself doesn’t offer something like that and if it does, it was at least a good excuse for some Ruby’ing ;)
#!/usr/bin/env ruby require 'find' require 'pathname' require 'fileutils' # Define what should not be included in the listing IGN_EXTENSIONS = %w{.aux .log .toc .blg .bbl .lof .out .o .pyc .class .bak} IGN_LEAVES = %w{.svn _darcs .DS_Store} def ignore?(file) return true if IGN_LEAVES.include?(File.basename(file)) return true if IGN_EXTENSIONS.include?(File.extname(file)) end # Get a list of all managed files versioned_files = [] `darcs query manifest`.each_line{|f| versioned_files << f.strip} exit(2) unless $?.success? # Go to the folder with the _darcs folder in it orig_folder = File.expand_path('.') while !File.exists?('_darcs') cur_folder = File.expand_path('.') raise "You aren't in a darcs managed folder" if cur_folder=='/' FileUtils.cd(File.dirname(cur_folder)) end # Do the comparision Find.find('.') do |f| next if f == '.' Find.prune if ignore?(f) puts f unless versioned_files.include?(f) end # Go back to where you've come from FileUtils.cd(orig_folder)
Do you want to give me feedback about this article in private? Please send it to comments@zerokspot.com.
Alternatively, this website also supports Webmentions. If you write a post on a blog that supports this technique, I should get notified about your link π