Tôi có một bó (10-15) của kho git địa phương nơi nào đó trên hệ thống tập tin của tôi, nhưng tất cả trong thư mục/data/git: Tìm tất cả người dân địa phương Repos uncommited trong một cây thư mục
Tôi muốn tìm tất cả/bất kỳ thư mục nào có thay đổi không được sửa đổi. Làm thế nào tôi có thể làm điều đó? Loại giống như một biến thể toàn cầu đệ quy git status
.
Tất cả các câu trả lời đều sai. Bất kỳ lệnh git nào cũng chỉ hoạt động trong thư mục nằm dưới quyền kiểm soát git. Tôi cần một cái gì đó để tìm kiếm các thư mục như vậy.
Vì vậy, thay vào đó tôi đã viết kịch bản này mà thực hiện điều này:
#!/usr/bin/env ruby
require 'find'
require 'fileutils'
#supply directory to search in as argument
@pat = ARGV[0]
(puts "directory argument required"; exit) unless @pat
Dir.chdir(@pat)
Find.find(@pat) do |path|
if FileTest.directory?(path)
Dir.chdir(path)
resp = `git status 2>&1`
unless resp =~ /fatal|nothing to commit \(working directory clean\)/i
puts "#{'#'*10}\n#{Dir.pwd}#{'#'*10}\n#{resp}"
Find.prune
end
Dir.chdir(@pat)
end
end
Không sử dụng git-trạng thái. Sử dụng git-ls-files và git-diff/git-diff-files. –
Điều gì sai với trạng thái git? – Bombe
git-status được gọi là sứ và nó có nghĩa là cho người dùng, chứ không phải cho kịch bản. Sản lượng của nó có thể thay đổi mà không cần thông báo. –