'svn add'interactive [英] 'svn add' interactive
本文介绍了'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屋!
查看全文