Я искал способ избавиться от CVS / dirs, который пробил себе путь во все мои коммиты bzr. Я новичок в bzr, поэтому в то время я еще не знал, как с ними справиться. (На работе центральный репозиторий - CVS, но я использую bzr локально, чтобы помочь мне).
Вот пример того, что я сделал, чтобы избавиться от некоторых каталогов CVS в моем проекте, он не должен быть идеальным, но быстрый взлом:)
У вас есть проект с именем 'projAAA' в каталоге dir / home / user / dev
Экспорт текущего проекта bzr (для импорта bzr)
cd /home/user/dev
bzr fast-export --no-plain projAAA export.gz
Переместить этот экспорт в пустой каталог (фильтр почему-то просматривает другие каталоги, в которых он запущен)
cp export.gz ~/tmp/rewrite/
cd ~/tmp/rewrite
Script_1
Этот скрипт принимает экспорт и фильтрует все, что вы поставляете с -x
К сожалению, -x не работает с подстановочными знаками, поэтому вы должны указать точные значения / пути / файлы
Работает в ~ / tmp / rewrite
#!/bin/bash
rm -r new.import/ out.filtered
bzr fast-import-filter -x gradle/wrapper/CVS -x gradle/CVS -x .cvsignore* -x .cvsignore -x ChangeFile -x src/main/groovy/cvs/util/CVS -x src/main/groovy/cvs/CVS -x src/main/groovy/CVS -x src/main/java/cvs/util/CVS -x src/main/java/cvs/CVS -x src/main/java/CVS -x src/main/resources/CVS -x src/main/CVS -x src/test/groovy/cvs/util/CVS -x src/test/groovy/cvs/CVS -x src/test/groovy/CVS -x src/test/resources/CVS -x src/test/CVS -x src/CVS -x CVS export.gz > out.filtered
bzr fast-import out.filtered new.import
Теперь каталог "new.import" будет содержать все, кроме того, что вы отфильтровали.
Запустите следующий скрипт, чтобы просмотреть всю историю ревизий этого нового импорта для вещей, которые все еще могут быть там, которые вам не нужны, для которых вам нужно добавить еще одно значение -x в Script_1 (которое я буду перезапускать, пока я не буду счастлив)
Script_2:
Запустите это в ~ / tmp / rewrite:
#!/bin/bash
THISDIR=$(pwd)
pushd new.import/trunk/
#clean file
echo `date` > $THISDIR/search.out
# I manually enter the revisions that exist here, if you only have 1 to 19, change this accordingly:
for i in `seq 1 70`;
do
echo $i
printf "\n============== rev $i =================\n" >> $THISDIR/search.out
bzr revert -r$i
# Change this find to look for things you want to filter out
find . -name CVS -type d >> $THISDIR/search.out 2>&1
done
popd
Если вы сейчас загляните в search.out, вы сможете увидеть, что нашел поиск, а затем добавить их в предыдущий сценарий, пока не будете довольны.
Итак, по сути, я делаю это пару раз, пока не стану счастливым;
- Запустите Script_1 для экспорта, фильтрации, перезаписи ветви.
- Затем Script_2 для поиска новой ветви, чтобы убедиться, что все прошло, если нет, добавьте еще -x
записи
- Перезапустить исправленный Script_1.
- Повторите