Что я должен сделать, когда 'svn очистка' перестал работать?

Этот ответ должен быть довольно коротким и сладким, чтобы ответить (часть) озаглавленного вопроса. Если вы хотите получить более подробный ответ, объясняющий, почему вы должны их там поместить, пожалуйста, перейдите здесь .


Общее правило для размещения typename в основном, когда вы используете параметр шаблона, и хотите получить доступ к вложенному typedef или с использованием псевдонима, например:

template
struct test {
    using type = T; // no typename required
    using underlying_type = typename T::type // typename required
};

Обратите внимание, что это также относится к метафункциям или вещи, которые также принимают общие параметры шаблона. Однако, если предоставленный параметр шаблона является явным типом, вам не нужно указывать typename, например:

template
struct test {
    // typename required
    using type = typename std::conditional::type;
    // no typename required
    using integer = std::conditional::type;
};

Общие правила добавления определителя template в основном аналогичны, за исключением они обычно включают шаблонные функции-члены (статические или другие) структуры / класса, которые сами шаблоны, например:

Учитывая эту структуру и функцию:

template
struct test {
    template
    void get() const {
        std::cout << "get\n";
    }
};

template
void func(const test& t) {
    t.get(); // error
}

Попытка доступа t.get() изнутри функции приведет к ошибке:

main.cpp:13:11: error: expected primary-expression before 'int'
     t.get();
           ^
main.cpp:13:11: error: expected ';' before 'int'

Таким образом, в этом контексте вам понадобится ключевое слово template заранее и вызвать его так:

t.template get()

Таким образом, компилятор будет анализировать это правильно, а не t.get < int.

243
задан Peter Mortensen 9 January 2018 в 11:53
поделиться

6 ответов

Когда запуск на всем протяжении не является опцией...

я удалил файл журнала в .svn каталог (я также удалил незаконный файл в .svn/props-base), сделал очистку и возобновил мое обновление.

223
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

У меня была та же самая проблема. Я не мог фиксировать, и очистка перестанет работать.

Используя клиент командной строки я смог видеть, что сообщение об ошибке указывает, что ему не удавалось переместить файл от .svn/props до .svn/prop-base.

я посмотрел на определенный файл и нашел, что он был отмечен только для чтения. После удаления атрибута "только для чтения" я смог к очистке папка и фиксация мои изменения.

5
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

Этот ответ только относится к версиям прежде 1.7 (благодарит @ЕЃukaszBachman) .

Подрывная деятельность хранит свою информацию на папку (в .svn), поэтому если Вы просто имеете дело с подпапкой, Вам не нужен контроль целый репозиторий - просто папка, которая имеет borked:

cd dir_above_borked
mv borked_dir borked_dir.bak
svn update borked_dir

Это даст Вам хорошую рабочую копию borked папки, но Вам все еще создали резервную копию Ваших изменений в borked_dir.bak. Тот же принцип применяется с Windows/TortoiseSVN.

, Если у Вас есть изменения в изолированной папке, взглянули на

svn checkout -N borked_dir   # Non-recursive, but deprecated

или

svn checkout --depth=files borked_dir
# 'depth' is new territory to me, but do 'svn help checkout'
16
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

Если все остальное перестало работать:

  1. Выезд в новую папку.
  2. Копия Ваши измененные файлы.
  3. Перепроверяют в.
  4. Zip старая папка где-нибудь (Вы никогда не знаете +, паранойя хороша) прежде, чем удалить его и использовать новый.
42
ответ дан Peter Mortensen 23 November 2019 в 03:10
поделиться

Возможно, это не применимо во всех ситуациях, но когда я недавно столкнулся с этой проблемой, моим «исправлением» было обновление пакета Subversion в моей системе. Я запускал 1.4.something, и когда я обновился до последней версии (1.6.6 в моем случае), проверка работала.

(я пытался повторно загрузить ее, но проверка в чистый каталог всегда зависала в то же место.)

0
ответ дан 23 November 2019 в 03:10
поделиться

Возможно, у вас возникла проблема с двумя именами файлов, которые отличаются только заглавными буквами. Если вы столкнулись с этой проблемой, создание другого каталога рабочей копии не решит проблему.

Текущие файловые системы Windows (т. Е. Дрянные) просто не видят разницы между Имя файла и Имя ФАЙЛА . У вас есть два возможных исправления:

  1. Проверить платформу с реальной файловой системой (на основе Unix), переименовать файл и зафиксировать изменения.
  2. Когда вы используете Windows, вы можете переименовывать файлы в браузере репозитория Eclipse SVN, который распознает разницу, и переименовывать файл там.
  3. Вы можете переименовать проблемные файлы также удаленно из любого SVN-клиента командной строки, используя svn rename -m "broken filename case" http: // server / repo / FILEname http: // server / repo / filename
5
ответ дан 23 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: