Подтвердить что ты не робот

SVN: игнорировать, но НЕ удалять папку

У меня есть папка нежелательной почты, в которой мое приложение помещает временные файлы. Я не хочу их фиксировать (конечно), но папка должна существовать или приложение будет аварийно завершено.

Если я использую стандартную функцию игнорирования TortoiseSVN, она добавит свойство "svn: ignore junk_folder" в родительскую папку, но также удалит "junk_folder", который не может произойти.

Если я верну только операцию удаления (сделал TortoiseSVN), но оставьте добавление свойства "svn: ignore", это решение не удастся. TortoiseSVN будет сообщать файлы внутри "junk_folder" как не-версии, которых я хочу избежать.

Есть ли какое-либо решение, которое позволило бы мне полностью игнорировать определенную папку в SVN (так что независимо от того, что будет в ней записано, не будет отображаться как неверсифицированное и не будет автоматически совершено), не удаляя его

EDIT. Я забыл добавить, что я говорю о уже папке с версией. Похоже, что если вы игнорируете (svn: ignore или надлежащий вариант в TortoiseSVN) папку, которая еще не была версией (перед первой фиксацией), тогда все в порядке. Но если вы сделаете это в папке, которая уже была в репозитории, TortoiseSVN помечает ее как удалённую и удаляет ее из обоих репозиториев (но не из локальной рабочей копии) при следующей фиксации.

4b9b3361

Ответ 1

Я считаю, что вы можете просто добавить svn: ignore для "*" внутри этой папки, вместо самой "junk_folder" (другими словами, игнорировать "junk_folder/*" ).

Я не знаю, есть ли у TortoiseSVN кнопка для этого, но из командной строки вы можете сделать это с помощью команды:

svn propset svn: игнорировать "*" junk_folder

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

Ответ 2

Я использую это для таких вещей, как промежуточные выходные папки компилятора, и он никогда ничего не удалял.

Чтобы повторно проверить это, я нашел неверсированный каталог в одной из моих рабочих копий. Я щелкнул правой кнопкой мыши по каталогу и перешел к опции "Добавить в игнор". Он расширился до имени каталога. Я выбрал имя каталога и получил всплывающее сообщение, отметив, что оно было добавлено в список игнорирования. При проверке статуса рабочей копии родительская папка имела только модификацию свойства. Для удаления файлов не было отмечено.

Игнорирование файлов и каталогов

enter image description here

В качестве дополнительной заметки вы также можете скрыть неверсированные файлы при использовании диалоговых окон "Проверить изменения" и "Записать" с флажком в нижней части диалогового окна.

Ответ 3

Я использую Eclipse Subversive и Tortoise SVN.

Мой подход к этой проблеме - использовать диалог свойств из Tortoise (но я думаю, что Eclipse имеет ту же самую функцию)

Если вы щелкните правой кнопкой мыши по папке в своей рабочей копии, например, "tmp" или "cache" и т.д., вы можете просто добавить свойство "svn: ignore" и поместить туда дикую карту. Вам нужно использовать расширенную кнопку, чтобы добавить его, потому что это не быстрый список добавленных свойств.

Я разрабатываю веб-сайты в основном на Joomla, и регулярно установщики или другие компоненты оставляют файлы в местах, которые мне не нужны в репо. И, как уже упоминалось, svn: игнорирование этих папок с использованием метода "правой кнопкой игнорировать" означает, что эта папка полностью исключена из репо, которая не является тем, что вы хотите - вы хотите, чтобы содержимое этих папок было исключено, или иногда просто файлы с определенное расширение.

после того, как я получил много советов от stackoverflow, я подписался сегодня, чтобы ответить на этот вопрос, так что надеюсь, что это поможет кому-то - я попытался прикрепить снимок экрана, но не достаточно rep: (

Ответ 4

Что значит "Если я использую стандартную функцию игнорирования TortoiseSVN, она добавит свойство svn:ignore junk_folder в родительскую папку, но она также удалит junk_folder..."?

Subversion не удаляет папку, которую вы просите игнорировать. На самом деле, цель цели svn:ignore: разрешить вам иметь папку, которая не находится в репозитории без сублингвирования, ныхая об этом.

Как создается этот junk_folder? Используется ли с помощью script, или вы делаете это вручную? Точно, когда он удаляется? Вы имеете в виду, когда вы делаете новую проверку, junk_folder не существует или что TortoiseSVN удаляет его, как только вы добавляете свойство svn:ignore в его родительский каталог?

Если вам нужна эта папка постоянно в вашем репозитории, но она должна оставаться пустой, вы можете добавить junk_folder в репозиторий, а затем создать свойство svn:ignore, которое установлено на *. Это будет игнорировать что-либо в папке.

Мое предложение - убедиться, что любые сценарии нуждаются junk_folder создать его, если он не существует, а не добавлять его в ваш репозиторий. Вы можете использовать этот захват до фиксации, чтобы не допустить его из вашего репозитория. Это лучший способ справиться с этим. Нет причин, по которым пустой каталог с именем junk_folder должен находиться в вашем репозитории.