Удалить unkown файлы в Bazaar

У меня есть куча неизвестных файлов на рабочем дереве Bazaar, которые я больше не хочу. Я могу получить список из них, используя bzr stat, но мне бы хотелось, чтобы вы могли избавиться от них. (Я бы ожидал вариант для bzr revert, чтобы сделать это, но я не нахожу его.)

Я всегда могу написать маленький script для синтаксического анализа вывода bzr stat и rm или mv неизвестных, но я думал, что что-то может уже существовать.

У меня есть базар (bzr) 1.13.1.

Ответ 1

bzr clean-tree избавится от всех неизвестных файлов в рабочем дереве. Он также имеет переключатели для удаления игнорируемых файлов, слияния резервных копий и других типов нежелательных файлов. Подробнее см. bzr clean-tree --usage.

Изменить, чтобы добавить: Это справедливо для Bazaar 2.0.0, я не уверен насчёт 1.13

Ответ 2

Сделано script:

#!/usr/bin/env ruby
# Move unknown files in a Bazaar repository to the trash.
# 
# Author: Benjamin Oakes

require 'fileutils'

TRASH_DIRECTORY = File.expand_path('~/.Trash/')

stdout = %x(bzr stat)

within = false

stdout.each_line do |line|
  if line.match(/^unknown:$/)
    within = true 
    next
  elsif line.match(/^[a-z]+:$/i)
    within = false
    next
  end

  if within
    FileUtils.move(line.match(/^\s+(.*?)$/)[1], TRASH_DIRECTORY)
  end
end

Я только немного его протестировал, но, похоже, все работает нормально. Пожалуйста, дайте мне знать, если вы обнаружите проблему через комментарии.

В отдельной теме следует узнать sed и awk? Я стараюсь писать эти вещи, используя ruby -e "some ruby code".