The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"SVN: Исключение файлов по маске при коммите"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 14-Дек-09, 20:22 
Собственно сабж. Есть subversion-1.6.6, работает через apache. Можно ли как то при коммите исключить файлы по маске, например *.jpg и/или *.png.

Пробовал так

svn propset svn:ignore . *.jpg -R

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

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (??) on 14-Дек-09, 20:31 
>[оверквотинг удален]
>коммите исключить файлы по маске, например *.jpg и/или *.png.
>
>Пробовал так
>
>svn propset svn:ignore . *.jpg -R
>
>Но тогда возникают проблемы при большом количестве папок и проектов. Рекурсивный обход
>занимает много времени. Можно ли как то для одной папки в
>корне репозитария указать маски файлов, которые не сохранять в эту папку?
>

не совсем понял в чём проблема.
свойство svn:ignore и так только папкам присваивается, и вчём проблема указать данное свойство только для нужной папки без ключа -R

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 14-Дек-09, 20:58 
>[оверквотинг удален]
>>svn propset svn:ignore . *.jpg -R
>>
>>Но тогда возникают проблемы при большом количестве папок и проектов. Рекурсивный обход
>>занимает много времени. Можно ли как то для одной папки в
>>корне репозитария указать маски файлов, которые не сохранять в эту папку?
>>
>
>не совсем понял в чём проблема.
>свойство svn:ignore и так только папкам присваивается, и вчём проблема указать данное
>свойство только для нужной папки без ключа -R

Человек сделал checkout проекта к себе на комп, в процессе работы он создает там подпапки, так вот мне надо исключить при коммите заливку по маске с любой папки. Если ставлю только на корень, то не работает

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (??) on 14-Дек-09, 22:58 
>[оверквотинг удален]
>>>
>>
>>не совсем понял в чём проблема.
>>свойство svn:ignore и так только папкам присваивается, и вчём проблема указать данное
>>свойство только для нужной папки без ключа -R
>
>Человек сделал checkout проекта к себе на комп, в процессе работы он
>создает там подпапки, так вот мне надо исключить при коммите заливку
>по маске с любой папки. Если ставлю только на корень, то
>не работает

Если человек сделал себе checkout то у него локальная рабочая копия на которую вы повлиять не всилах. Если этот человек создаёт в рабочей копии файлы и ставит их под версионый контроль то он явно не ожидает что при коммите они исчезнут. Тоесть нужно чтоб он либо сам их не ставил на версионый контроль либо при создании папки  присваивал её корректные свойства игнорирования. Можно поросить чтоб человек в настройках своего клиента  указал в файле ~/.subversion/cofig указал опции для global-ignores.
Есть ещё возможность поставить хуки на определёные действия с репозиторием, но поскольку транзакции атомарны и если пользователь будет упорно хотеть залить вам эти jpeg то на лету чтото сменить вы уже не сможе, после транзакции конечно можно будет выставить нужные свойства на новые папки пользователя и даже удалить лишние файлы, но это будет уже новая правка поскольку из репозитория ничего исчезнуть не может. Так что думаю вам они не подойдут.
Думаю стоит посмотреть в сторону global-ignores и уговорить клиента прописать их у себя либо через хуки не давать ему делать комит с запрещёными файлами.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 15-Дек-09, 00:21 
>Если человек сделал себе checkout то у него локальная рабочая копия на
>которую вы повлиять не всилах. Если этот человек создаёт в рабочей
>копии файлы и ставит их под версионый контроль то он явно
>не ожидает что при коммите они исчезнут.

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

>Тоесть нужно чтоб он либо сам их не ставил на версионый контроль либо при создании
>папки  присваивал её корректные свойства игнорирования.

не реально

>Можно поросить чтоб человек
>в настройках своего клиента  указал в файле ~/.subversion/cofig указал опции
>для global-ignores.

тоже не реально :). И опять таки, мне нужно, чтобы jpg файлы не комитились только в одну папку в репозитарии, а не на весь репозитарий в целом.

Сейчас попробую объяснить. Есть слдующая иерархия репозитария

ROOT_REPO_NAME
   |
   |_Department1
   |
   |_Department2
   |
   |_Department3
   |
   |_Auto_backup

Так вот надо оставить возможность сохранять в Department1, Department2, Department3 любые файлы, а в Auto_backup, все файлы кроме jpg.

Коммит на стороне клиента запускается автоматом из скрипта, по типу

svn.exe commit http://svn.repo.name/Auto_backup/user_name D:/svn/user_name/Projects

>Есть ещё возможность поставить хуки на определёные действия с репозиторием, но поскольку
>транзакции атомарны и если пользователь будет упорно хотеть залить вам эти
>jpeg то на лету чтото сменить вы уже не сможе, после
>транзакции конечно можно будет выставить нужные свойства на новые папки пользователя
>и даже удалить лишние файлы, но это будет уже новая правка
>поскольку из репозитория ничего исчезнуть не может. Так что думаю вам
>они не подойдут.

пользователь вообще сам руками не запускает commit

>Думаю стоит посмотреть в сторону global-ignores и уговорить клиента прописать их у
>себя либо через хуки не давать ему делать комит с запрещёными
>файлами.

можно ли прописать их только для одной папки, например, чтобы они действовали только для ROOT_REPO_NAME/Auto_backup?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (??) on 15-Дек-09, 00:55 
>Коммит на стороне клиента запускается автоматом из скрипта, по типу
>
>svn.exe commit http://svn.repo.name/Auto_backup/user_name D:/svn/user_name/Projects
>
>пользователь вообще сам руками не запускает commit
>можно ли прописать их только для одной папки, например, чтобы они действовали
>только для ROOT_REPO_NAME/Auto_backup?

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

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

Что касаемо хуков то это просто скрипт который вызывается на сервер до комита и ему передаётся кто хочет и куда хочет комитить, а скрит говорит да или нет. Или после комита и ему также передётся кто и куда.
С точность до файла врядли получится хотя тут надо читать доки я в хуках не особо.

А так на сервере настроек нет всё что клиент хочет сервер сохранит, всё или нечего.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 15-Дек-09, 01:09 
>Если пользователь ничего не знает то как вновь созданные файлы попапдают под
>версионный контроль, если просто создать папку или файл то она не
>станет автоматом комитится в репозиторий. Значит это делает либо пользователь либо
>какойто софт. Думаю перед вызовом svn commit в вашем скрипте придётся
>вызвать ещё команды который в рабочей копии произведут нкжный настройки.

svn.exe add ...
svn.exe commit ...

если быть точным

>Что касаемо хуков то это просто скрипт который вызывается на сервер до
>комита и ему передаётся кто хочет и куда хочет комитить, а
>скрит говорит да или нет. Или после комита и ему также
>передётся кто и куда.
>С точность до файла врядли получится хотя тут надо читать доки я
>в хуках не особо.

а можно по имени папки сделать исключения?

>А так на сервере настроек нет всё что клиент хочет сервер сохранит,
>всё или нечего.

жаль, неудобно

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (ok) on 15-Дек-09, 15:01 
Почитал про хуки в subversion. При запуске хука ему только предаётся куда будет коммит и кто будет это делать. И хук либо даёт добро на транзакцию либо нет.

Как вариант можно запускать svn commit этой папки с опцией --config-dir <dir> куда положить конфиг с глобальным игнором *.jpeg и т.п.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 15-Дек-09, 20:57 
>Почитал про хуки в subversion. При запуске хука ему только предаётся куда
>будет коммит и кто будет это делать. И хук либо даёт
>добро на транзакцию либо нет.
>
>Как вариант можно запускать svn commit этой папки с опцией --config-dir <dir> куда положить конфиг с глобальным игнором *.jpeg и т.п.

а можешь показать пример содержимого файла?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (ok) on 16-Дек-09, 10:02 
>>Почитал про хуки в subversion. При запуске хука ему только предаётся куда
>>будет коммит и кто будет это делать. И хук либо даёт
>>добро на транзакцию либо нет.
>>
>>Как вариант можно запускать svn commit этой папки с опцией --config-dir <dir> куда положить конфиг с глобальным игнором *.jpeg и т.п.
>
>а можешь показать пример содержимого файла?

А чего там показывать. Пара строк. Лучше почитайте http://svnbook.red-bean.com/
главы 7 Профессиональная настройка Subversion (Параметры времени выполнения) и Глава 3. Профессиональное использование Subversion (Пропуск неверсионированных элементов) там всё подробно разжёвано про отличия для виндовс и unix на русском, правда для версии 1.4, но и в английском для версии 1.6 разницы не заметил.
Ну ещё Глава 9. Полное справочное руководство по Subversion (Параметры командной строки svn)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 16-Дек-09, 12:18 
Так в том то и дело, что не получается. Создал файл

C:\svn\config

[global]
global-ignores = *.jpg

запускаю скрипт

svn.exe add "%work_dir%/%user%/Projects/" --force --username %user% --password %pass% --config-dir "C:\svn\config"

svn.exe commit "%work_dir%/%user%/Projects/" --username %user% --password %pass%

Но при этом jpg файл все равно попадает в репозитарий.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (ok) on 16-Дек-09, 12:49 
>[оверквотинг удален]
>[global]
>global-ignores = *.jpg
>
>запускаю скрипт
>
>svn.exe add "%work_dir%/%user%/Projects/" --force --username %user% --password %pass% --config-dir "C:\svn\config"
>
>svn.exe commit "%work_dir%/%user%/Projects/" --username %user% --password %pass%
>
>Но при этом jpg файл все равно попадает в репозитарий.

что-то мне подсказывает сто правильней будет --config-dir "C:\svn\"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 16-Дек-09, 13:12 
>что-то мне подсказывает сто правильней будет --config-dir "C:\svn\"

тогда получаю

svn.exe add "D:\SVN\Current_work"/user_name/Projects/" --force --username user --password 1234567 --config-dir "C:\svn\"

svn: Can't open file 'C:\svn"\servers': Синтаксическая ошибка в имени файла, име
ни папки или метке тома.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (ok) on 16-Дек-09, 14:02 
>>что-то мне подсказывает сто правильней будет --config-dir "C:\svn\"
>
>тогда получаю
>
>svn.exe add "D:\SVN\Current_work"/user_name/Projects/" --force --username user --password 1234567 --config-dir "C:\svn\"
>
>svn: Can't open file 'C:\svn"\servers': Синтаксическая ошибка в имени файла, име
>ни папки или метке тома.

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

можете создать в этой папке файл servers содержащий следующие строки:
[groups]

[global]

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 16-Дек-09, 15:10 
>можете создать в этой папке файл servers содержащий следующие строки:
>[groups]
>
>[global]

так и делал, не работает

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ze6ra (ok) on 16-Дек-09, 17:47 
>>можете создать в этой папке файл servers содержащий следующие строки:
>>[groups]
>>
>>[global]
>
>так и делал, не работает

Сам попробовал вот что пулучилось:

1. создал папку <path>/svn

2. в ней файл config следующего содержания:

[miscellany]
global-ignores = *.jpg

3. в текущей рабочей копии даю команду
mkdir ./tmp && echo "test" > ./tmp/test.jpg && echo "test" > ./tmp/test.txt

4. затем даю команду
svn add --config-dir <path>/svn  ./tmp    

5.Получаю результат
A         tmp
A         tmp/test.txt

Как видно jpg не поставился под версионный контроль. Всё просто :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "SVN: Исключение файлов по маске при коммите"  +/
Сообщение от ALex_hha (ok) on 16-Дек-09, 18:11 
>Как видно jpg не поставился под версионный контроль. Всё просто :)

проблема оказалась до ужаса смешной

рабочий пример
%svn_command% add --config-dir C:\svn\ ...

не рабочий

%svn_command% add --config-dir "C:\svn\"

:)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру