SVN как разрешить «локальное добавление, входящее добавление при обновлении» в * папке *?

Вот мой сценарий:

Предположим, у нас есть репозиторий SVN со следующим содержимым: моя папка myfolder \ file.txt

Теперь я создаю две проверки этого репо, co1 и co2.

В co1 мы изменяем file.txt. В co2 мы:

  • svn delete myfolder
  • svn commit
  • Создаем новую папку с именем myfolder
  • svn add myfolder
  • svn commit

Теперь, если я пытаюсь обновить в co1, я получаю дерево конфликт:

A  +  C myfolder >   local edit, incoming delete upon update
M  +    myfolder\file.txt

Я хочу сохранить свою папку и измененный файл, поэтому я разрешаю конфликт дерева:

svn resolve --accept working folder

Теперь, если я пытаюсь зафиксировать, я получаю «svn: Directory '/ myfolder' устарел». Если я попытаюсь решить эту проблему с помощью svn up myfolder, я снова получу конфликт дерева:

A  +  C folder >   local add, incoming add upon update
M  +    myfolder\file.txt

Хорошо, поэтому мы снова попробуем svn resolve --accept Working folder. Но мы все еще не можем выполнить фиксацию, мы получаем то же сообщение, что «svn: Directory '/ myfolder' is out of date», если мы выполним svn up myfolder, мы вернемся к последнему конфликту деревьев.

Что такое правильная процедура для разрешения этого типа конфликта (когда мы хотим сохранить мою папку и ее изменения)?

EDIT: id_parrent во второй таблице равен id из первой таблицы)

Например

incoming_tours

|--id--|------name-----|
|---1--|---first_tour--|
|---2--|--second_tour--|
|---3--|--thirth_tour--|
|---4--|--hourth_tour--|

incoming_tours_cities

|-id_parrent-|-id_city-|
|------1-----|---4-----|
|------1-----|---5-----|
|------1-----|---27----|
|------1-----|---74----|
|------2-----|---1-----|
|------2-----|---5-----|
........................

Это означает, что first_tour имеет список городов - ("4", "5", "27", "74")

И second_tour имеет список городов - ("1", " 5 ")


Предположим, у меня есть два значения - 4 и 74 :

Теперь мне нужно получить все строки из первой таблицы, где мои оба значения находятся в списке городов. т.е. он должен возвращать только first_tour (потому что 4 и 74 находятся в его списке городов)

Итак, я написал следующий запрос

SELECT t.name
FROM `incoming_tours` t
JOIN `incoming_tours_cities` tc0 ON tc0.id_parrent = t.id
AND tc0.id_city = '4'
JOIN `incoming_tours_cities` tc1 ON tc1.id_parrent = t.id
AND tc1.id_city = '74'

, и он отлично работает.

Но я генерирую запрос динамически, и когда количество объединений велико (около 15), запрос замедляется.

т.е. когда я пытаюсь запустить

SELECT t.name
FROM `incoming_tours` t
JOIN `incoming_tours_cities` tc0 ON tc0.id_parrent = t.id
AND tc0.id_city = '4'
JOIN `incoming_tours_cities` tc1 ON tc1.id_parrent = t.id
AND tc1.id_city = '74'
.........................................................
JOIN `incoming_tours_cities` tc15 ON tc15.id_parrent = t.id
AND tc15.id_city = 'some_value'

запрос выполняется в 45 секунд (несмотря на то, что я установил индексы в таблицах)

Что я могу сделать, чтобы оптимизировать его?

Большое спасибо

5
задан Simon 21 October 2010 в 08:43
поделиться