2011-12-09 26 views
5

Próbuję podzielić ikiwiki na dwie wiki.Split ikiki

Załóżmy mam ikiwiki nazywa myiki (porównaj this question from ikiwiki.info), który zawiera stron

pageA1,pageA2,...,pageB1,pageB2,... 

teraz chcę mieć dwa wiki nazywa myikiA i myikiB, tak że:

  • myikiA zawiera pageA1,pageA2,...
    Historia myikiA powinna zawierać całą historię tych stron, ale bez historii pageB1,pageB2,...

oraz:

  • myikiB zawiera pageB1, pageB2 ...
    Historia myikiB powinna zawierać całą historię tych stron, ale nie historię pageA1,pageA2,...

W pierwszy krok zrobiłem kopię mojego scrdir i próbowałem usunąć stronę o nazwie foo w ten sposób (zauważ, że w scrdir są pliki calle d foo.mdwn oraz katalogi foo).
Aby to zrobić, zrobiłem to polecenie:

sudo git filter-branch --tree-filter 'find . -name foo* -exec rm -r -f {} \;' --prune-empty -f HEAD 

Rewrite 3cbc4646145e31cf7ce23d5e8397baaebab64c60 (179/1439)find: `./index/testdir/foo': No such file or directory 
tree filter failed: find . -name foo* -exec rm -r -f {} \; 

jakiś pomysł co jest nie tak?

Czy istnieje sposób podania listy stron i podzielenia wiki w sposób opisany powyżej?

+0

Czy http://stackoverflow.com/questions/5677766/filter-branch-to-remove-extra-directory pomoc lub zastosowanie w Twoim przypadku? – VonC

+0

Hm. Dzięki, jednak nie widzę, jak zastosować to do tej sytuacji (jestem nowicjuszem git). Wydaje się, że pliki git-ls nie działają w sposób recesywny !? – student

+0

Tak, właśnie wędrowałem, jeśli bit '' git update-index --index-info' mógł poprawić sytuację. – VonC

Odpowiedz

1

Gdy find znajduje foo/, wywołuje na nim rm -rf, a następnie próbuje go wprowadzić, aby znaleźć więcej plików. Możesz spowodować, że find usunie katalog, a następnie zignoruje go, używając -prune.

find . -name foo* -exec rm -r -f {} \; -prune

+0

Dzięki, teraz dostaję: 'Przepisz 9ed693bf5ed887beac89b482ba8dcf971429838a (97/1492) znajdź:' ./index/foo.mdwn ': Brak takiego pliku lub katalogu filtr drzewa nie powiódł się: git update-index --index-info && find. -name foo \ * -exec rm -r -f {} \; -prune' – student

+0

Hmm, możesz uciec z 'find. -name foo.mdwn -delete -o -name foo -type d -exec rm -rf {} \; -prune'?Coś w tym stylu. Warto również zauważyć, że "foo *", którego używasz, może zostać rozszerzone przez powłokę, więc powinieneś wrzucić je w cudzysłów. –