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


13

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

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

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

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

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

  0

Не могли бы вы не просто добавить папку, и ни один из его содержимого, поэтому проверка приведет к созданию пустой папки? 20 июн. 122012-06-20 15:16:13

  0

@Wug - я думаю, потому что его приложение будет создавать там файлы, поэтому он не хочет, чтобы SVN постоянно сообщал ему, что в этом каталоге есть файлы без вершин. 20 июн. 122012-06-20 15:18:29

  0

Точно. Не хотите получать какие-либо отчеты о содержимом или изменениях в этой папке, особенно потому, что в этой папке есть тысячи файлов и папок, а мой диалог фиксации перегружен такими записями. 20 июн. 122012-06-20 15:22:11

  0

Итак, добавьте папку и установите 'svn: ignore * 'на' jun k_folder', игнорируя содержимое этой папки, а не самой папки? 20 июн. 122012-06-20 15:25:51

  0

У меня есть несколько проектов svn с такими вещами, как каталоги конфигурации и каталоги протоколов, которые должны присутствовать и сами версируются, но не имеют версии с версией. SVN не беспокоит меня о них. Может быть, я просто использую это неправильно :) 20 июн. 122012-06-20 15:29:23

  0

@trejder, возможно, если бы вы рассказали нам, какую версию TortoiseSVN вы используете? Это действительно старая версия? Потому что 'ignore' не должен делать удаления. 20 июн. 122012-06-20 17:49:27

  0

@all: Спасибо всем за вклад. Я использую новейшую стабильную версию. Проблема решена, поскольку я написал в EDIT вопрос и в некоторых комментариях здесь. Если вы добавите любую папку _unversioned_ в список ingore, она не будет удалена. Но если вы сделаете то же самое с уже запущенной версией, TortoiseSVN удалит ее из репостории (но не из LWC) после следующего коммита. И с этого момента любой, кто сделает обновление или очистку полной проверки из репозитория, получит ** без ** этой junk_folder. Это означает крах приложения в моем случае. 21 июн. 122012-06-21 08:01:30

12

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

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

СВН propset SVN: игнорировать "*" junk_folder

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

  0

я должен отметить, что этот метод до сих пор пустого «junk_folder» проверил, чтобы SVN, поэтому, когда вы делаете чистую проверку, вы получите пустой «junk_folder», но SVN не расскажет вам о любых неверсионных файлах, создаваемых в в этой папке позже. Я думаю, это то, о чем вы просили ... 20 июн. 122012-06-20 15:28:01

  0

И это ТОЧНО, что мне нужно! :] Мне нужно, чтобы «junk_folder» (пустой) проверял каждую выписку в новой папке. И мне нужно что-то, что внутри, игнорироваться. Ваше решение идеально! 21 июн. 122012-06-21 07:58:47


2

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

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

Ignoring Files And Directories

enter image description here

В качестве примечания, вы также можете скрыть неверсированные файлы при использовании «Проверка на наличие изменений» и Commit диалогов с флажком в нижней части диалогового окна.

+1

Это очень странно, что вы написали! Всякий раз, когда я использую этот параметр, он сразу же отмечает такую ​​папку как удаленную и фактически удаляет ее при следующей фиксации. Что приводит к краху. Это проверено около сотни раз, поэтому я не могу поверить, что вы используете эту опцию в папке (а не в файле!) И не удаляете эту папку при следующей фиксации. 20 июн. 122012-06-20 15:23:44

  0

на скриншоте, crashmstr щелкнул бы правой кнопкой мыши по файлу в папке (в данном случае с именем Copy.bak), а не в самой папке. 20 июн. 122012-06-20 15:24:53

  0

Экран из документации TorsoiseSVN. Экран примера - это файл, но вы можете сделать то же самое для каталога, вы просто увидите имя папки вместо параметров имени файла/расширения. 20 июн. 122012-06-20 15:27:49

  0

Я просто попробовал это (снова) в папке без версии. Теперь статус состоит в том, что родительская папка «изменена (только изменение свойства)» в ожидании фиксации. Без удаления. 20 июн. 122012-06-20 15:29:36

  0

Правильно, однако ОП заявил, что игнорирование папки также привести к удалению: * «Если я использую стандартный TortoiseSVN игнорировать функцию, она будет добавить„SVN: игнорировать junk_folder“свойство родительской папки, но он также будет удалять» junk_folder «который не может произойти». * 20 июн. 122012-06-20 15:29:51

  0

см. мой комментарий от немного назад, я попробовал это снова (что я сделал раньше), и ** никакие файлы не были удалены **. Я не вижу, как игнорировать все равно удалит. 20 июн. 122012-06-20 15:31:02

  0

Хорошая точка crashmstr; если папка уже была версией, то SVN выполнит удаление, чтобы получить теперь игнорированную папку из SVN. Если папка никогда не была версией, она не беспокоит удаление. 20 июн. 122012-06-20 15:31:25

  0

@crashmstr: rally25rs прав (и решил проблему ниже). Я забыл упомянуть, что мы все говорим об уже версией папки. Если вы добавите любую папку _unversioned_ в список ingore, тогда вы правы - она ​​не удаляется. Но если вы сделаете то же самое с уже запущенной версией, TortoiseSVN удалит ее из репостории (но не из LWC) после следующего коммита. И с этого момента любой, кто сделает обновление или очистку полной проверки из репозитория, получит ** без ** этой junk_folder. Это означает, что в моем случае произошел сбой приложения. Так что для уже запущенных папок 21 июн. 122012-06-21 08:03:21

  0

@crashmstr: Поэтому для уже запущенных версий папок единственным вариантом является использование «svn: ignore *» для игнорирования содержимого такой папки. 21 июн. 122012-06-21 08:08:59

  0

Возможно, ваше приложение должно, вероятно, создать папку вместо сбоя. * ДА *, если папка имеет версию, тогда единственный способ игнорировать - это * переключение * в первую очередь. Это указано в документации, которую я связал выше. 21 июн. 122012-06-21 11:22:32

  0

Поскольку это веб-приложение, поэтому я думаю, мы не можем свободно говорить об автоматическом создании необходимых папок. Из-за разрешений. Кроме того, это то, как я использую структуру, поэтому любое обсуждение этого вопроса должно быть адресовано авторам каркаса, а не мне. 21 июн. 122012-06-21 12:57:44


1

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

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

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

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

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

  0

Привет! Как и выше, в редактировании вопроса и всех комментариев. Subversion (TortoiseSVN) Удаляет папку, если вы ее игнорируете, и если она уже версирована. Игнорировать без удаления происходит только, если вы игнорируете папку с версией. Для всех версий папок вы должны использовать «svn: ignore *» для содержимого. Потому что, если вы проигнорируете папку, она будет удалена из репозитория (но не LWC) после следующего фиксации. 21 июн. 122012-06-21 08:12:06

  0

@trejder Вы говорите, что если есть папка с версией, называемая 'junk_folder', и я добавлю свойство' svn: ignore junk_folder' в родительскую папку, Tortoise удалит 'junk_folder', если я ничего не сделаю? Наверное, я вижу в этом логику, но это звучит опасно. 22 июн. 122012-06-22 16:58:22

  0

@trejder Просто проверила документацию для TortoiseSVN. Вы не можете добавить уже существующий файл или папку в список игнорирования. Однако вы можете выбрать «Игнорировать и переустановить файлы» в список игнорирования. 22 июн. 122012-06-22 17:01:34

  0

Нет. Если вы используете опцию «Игнорировать и отменить файлы» (из контекстного меню) THEN TortoiseSVN добавляет свойство svn: ignore junk_folder в родительскую папку и помечает папку junk_folder как удаленную. После следующей папки фиксации будут удалены из репозитория (но не из LWC). Если вы добавите свойство svn: ignore junk_folder в родительскую папку вручную, то, конечно, TortoiseSVN ничего не удалит. Но все равно будет сообщать о непереведенных файлах в junk_folder.Конечным решением является добавление svn: ignore * в папку, на самом деле вы хотите игнорировать (junk_folder в этом примере). 23 июн. 122012-06-23 07:31:21


2

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

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

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

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

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