2010-02-23 6 views
10

Ich habe eine Reihe von unbekannten Dateien in meinem Basar Arbeitsbaum, die ich nicht mehr will. Ich kann eine Liste von ihnen mit bzr stat bekommen, aber ich möchte eine einfache Möglichkeit, sie loszuwerden. (Ich würde eine Option für bzr revert erwarten, dies zu tun, aber ich bin nicht einer zu finden.)Entfernen Sie unbekannte Dateien in Bazaar

ich immer ein kleines Skript schreibt, kann die Ausgabe von bzr stat und rm oder mv den Unbekannten zu analysieren, aber ich dachte, dass etwas könnte bereits existieren.

Ich habe Basar (bzr) 1.13.1.

Antwort

13

bzr clean-tree wird alle unbekannten Dateien in einem funktionierenden Baum loswerden. Es hat auch Schalter, um ignorierte Dateien zu entfernen, verbindet Sicherungen und andere Arten von unerwünschten Dateien. Vollständige Details finden Sie unter bzr clean-tree --usage.

bearbeiten hinzuzufügen: Dies gilt für Bazaar 2.0.0, ich bin nicht sicher, 1,13

+0

Cool, ich werde das überprüfen. –

+1

Clean-Tree-Befehl kommt von bzrtools plugin und auch in 1.13 verfügbar. – bialix

0

Hergestellt ein Skript:

#!/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 

Ich habe es nur ein wenig getestet, aber es scheint ganz gut zu funktionieren. Bitte lassen Sie mich wissen, wenn Sie ein Problem über die Kommentare finden.

Zu einem separaten Thema, sollte ich lernen sed & awk? Ich neige dazu, diese Dinge mit ruby -e "some ruby code" zu schreiben.

Verwandte Themen