'svn add'interactive [英] 'svn add' interactive

查看:117
本文介绍了'svn add'interactive的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有任何命令行技巧,让SVN添加在所有缺少的文件从 svn stat 交互式?



例如:

  svn add --interactive 
$新文件:file1.tmp(添加/忽略)?
$缺少文件:file.tmp(删除/忽略)?

编辑:



解决方案

我写了一个Ruby脚本来完成这项工作:

  require'fileutils'
buffer =

CACHE_DIR = File.join 'HOME'],'.svn_interactive_temp')
FileUtils.mkdir_p(CACHE_DIR)

data = IO.popen'svn stat'do | process |
while process.read(512,buffer)
end
end

def handle_file(file)
system(stty raw)
printnew file:#{file} [a] dd / [i] gnore / [s] kip?
c = STDIN.getc
系统(stty cooked)
exit if c == 3
c = c.chr
success = true
puts
case c
当'a'
puts添加文件:# {file}
systemsvn add#{file}
当'i'
输入add svn:ignore for#{file}
cache_filename = File.join (CACHE_DIR,(1..10).map {(rand * 10).to_i} .to_s)
p文件
parent = File.dirname(文件)

系统svn propget svn:ignore#{parent}>>#{cache_filename})
File.open(cache_filename,'a')do | f |
f.puts(File.basename(file))
end
system(svn propset svn:ignore -F#{cache_filename}#{parent})
system rm#{cache_filename})
当's'
输入skipping:#{file}
else
success = false
end
成功
end

buffer.scan(/ \?\s *(。*)$ /)。
while!(handle_file(file.to_s))
sleep(0.01)
end
end


例如,

  sam @ sam-ubuntu:〜/ Source / stuff $ ruby ../scripts/svn_interactive.rb 
新文件:test.txt [a] dd / [i] gnore / [s] kip? i
add svn:ignore for test.txt
test.txt
property'svn:ignore'set on'。'


Is there any command line trick to get SVN to add in all the missing files from svn stat interactively?

For example, something like:

svn add --interactive 
$ new file:     file1.tmp (Add / Ignore) ?
$ missing file: file.tmp (Remove / Ignore) ?

EDIT:

A script that could achieve this would also work.

解决方案

I wrote a little Ruby script to do this:

require 'fileutils'
buffer = ""

CACHE_DIR = File.join(ENV['HOME'], '.svn_interactive_temp')
FileUtils.mkdir_p(CACHE_DIR)

data = IO.popen 'svn stat' do |process|
  while process.read(512, buffer)
  end
end

def handle_file(file)
  system("stty raw")
  print "new file: #{file} [a]dd/[i]gnore/[s]kip? "
  c = STDIN.getc
  system("stty cooked")
  exit if c == 3
  c = c.chr
  success = true
  puts
  case c
  when 'a'
    puts "adding the file: #{file}"
    system "svn add #{file}"
  when 'i'
    puts "adding svn:ignore for #{file}"
    cache_filename = File.join(CACHE_DIR, (1..10).map{(rand * 10).to_i}.to_s)
    p file
    parent = File.dirname(file)

    system("svn propget svn:ignore #{parent} >> #{cache_filename}")
    File.open(cache_filename, 'a') do |f|
      f.puts(File.basename(file))
    end
    system("svn propset svn:ignore -F #{cache_filename} #{parent}")
    system("rm #{cache_filename}")
  when 's'
    puts "skipping: #{file}"
  else
    success = false
  end
  success
end

buffer.scan(/\?\s*(.*)$/).each do |file|
  while !(handle_file(file.to_s))
    sleep(0.01)
  end
end

For example,

sam@sam-ubuntu:~/Source/stuff$ ruby ../scripts/svn_interactive.rb
new file: test.txt [a]dd/[i]gnore/[s]kip? i
adding svn:ignore for test.txt
"test.txt"
property 'svn:ignore' set on '.'

这篇关于'svn add'interactive的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆