Атрибуты файлов в репозитории.

43 views
Skip to first unread message

Sergey A. Borshch

unread,
May 6, 2012, 6:35:14 AM5/6/12
to scmrt...@googlegroups.com
Поскольку уже многие разработчики используют и Вин и Лин, предлагаю
ставить атрибут svn::eol-style в 'native' для всех добавляемых в
репозиторий недвоичных файлов, дабы переводы строк выглядели нормально
под обоими системами. Это делается командой
svn propset svn:eol-style 'native' <имя файла>
Очень полезно заставить subversion делать это автоматически. для этого
нужно в файле конфигурации subversion раскомментировать строку
enable-auto-props = yes
и в разделе [auto-props] добавить такие строки:
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
*.S = svn:eol-style=native
Makefile = svn:eol-style=native

Также хорошо бы добавлять атрибут svn:executable для линуховых скриптов:
*.sh = svn:eol-style=native;svn:executable;

И до кучи добавлять svn:eol-style=native для .bat:
*.sh = svn:eol-style=native
После этих изменений все вновь добавляемые файлы получат нужные атрибуты
автоматически.

Я добавил эти атрибуты ко всем файлам в trunk и branches/pre-v400.
Давайте постараемся не забывать добавлять их для всех новых файлов.

Сергей.

Anton Gusev

unread,
May 6, 2012, 8:12:20 AM5/6/12
to scmrt...@googlegroups.com
Hi, Sergey A. Borshch!
You wrote on 06.05.2012 16:35

> Поскольку уже многие разработчики используют и Вин и Лин, предлагаю
> ставить атрибут svn::eol-style в 'native' для всех добавляемых в
> репозиторий недвоичных файлов

Это что, теперь стиль EOL будет меняться в зависимости от того, под
какой системой я сделаю co/update? А не вызовет ли это путаницы? Может
быть, лусше сделать везде виндовый стиль? Линукс-то вроде нормально это
воспринимает (ну, рисует эти дурацкие ^M в mc, но это не страшно). А вот
под виндой, боюсь, придётся местами заново делать co/update...
(Вот буквально недавно Гарри рассказывал, что IAR выдаёт warning на
линукс-стайл).

Sergey A. Borshch

unread,
May 6, 2012, 8:45:48 AM5/6/12
to scmrt...@googlegroups.com
On 05/06/2012 03:12 PM, Anton Gusev wrote:
> Hi, Sergey A. Borshch!
> You wrote on 06.05.2012 16:35
>
>> Поскольку уже многие разработчики используют и Вин и Лин, предлагаю
>> ставить атрибут svn::eol-style в 'native' для всех добавляемых в
>> репозиторий недвоичных файлов
>
> Это что, теперь стиль EOL будет меняться в зависимости от того, под
> какой системой я сделаю co/update?
Под какой системой делаешь co - для такой и получишь ее родные переводы
строк. И все будут счастливы - и ^M в mc не будет, и в виндовом блокноте
не будет одной длиннющей строки с квадратиками. В репозитории файлы
храняться с одному subersion-у известными переводами, а при checkout он
подставляет нужные. Соответственно, при update он выкидывает переводы
строк и подставляет нужные.

> А не вызовет ли это путаницы? Может
> быть, лусше сделать везде виндовый стиль? Линукс-то вроде нормально это
> воспринимает (ну, рисует эти дурацкие ^M в mc, но это не страшно). А вот
> под виндой, боюсь, придётся местами заново делать co/update...
Путаницы не будет. Достаточно сделать update и переводы строк во всех
файлах ОСи переделаются в правильные для данной системы.

> (Вот буквально недавно Гарри рассказывал, что IAR выдаёт warning на
> линукс-стайл).
Теперь ИАР будет получать файлы с CR-LF.

Сергей


Harry Zhurov

unread,
May 6, 2012, 8:59:57 AM5/6/12
to scmrt...@googlegroups.com
Greeting Anton!
You wrote on Sun, 06 May 2012 18:12:20 +0600

>> Поскольку уже многие разработчики используют и Вин и Лин, предлагаю
>> ставить атрибут svn::eol-style в 'native' для всех добавляемых в
>> репозиторий недвоичных файлов

AG> Это что, теперь стиль EOL будет меняться в зависимости от того, под
AG> какой системой я сделаю co/update? А не вызовет ли это путаницы? Может
AG> быть, лусше сделать везде виндовый стиль? Линукс-то вроде нормально это
AG> воспринимает (ну, рисует эти дурацкие ^M в mc, но это не страшно). А вот
AG> под виндой, боюсь, придётся местами заново делать co/update...
AG> (Вот буквально недавно Гарри рассказывал, что IAR выдаёт warning на
AG> линукс-стайл).

Истинну глаголешь! :) Твой pins.h пришлось обработать скриптом, заменяющим концы строк на виндовые \r\n.

Я вот тоже не очень понимаю технологию. Может быть, имеется в виду то, что svn автоматом меняет EOL, ориентируясь на целевую ОС? Т.е. если с венды делаешь co или update, то файлы зальюцца с \r\n. Если с линя - то будет \n.

--
H.Z.

### Ассоциация производителей слабительного рекомендует: употребляйте слабительное каждый день - не стоит откладывать на завтра то, что можно наложить сегодня!

Harry Zhurov

unread,
May 6, 2012, 9:10:31 AM5/6/12
to scmrt...@googlegroups.com
Greeting Sergey!
You wrote on Sun, 06 May 2012 15:45:48 +0300

SAB> Под какой системой делаешь co - для такой и получишь ее родные переводы
SAB> строк. И все будут счастливы - и ^M в mc не будет, и в виндовом блокноте
SAB> не будет одной длиннющей строки с квадратиками. В репозитории файлы
SAB> храняться с одному subersion-у известными переводами, а при checkout он
SAB> подставляет нужные. Соответственно, при update он выкидывает переводы
SAB> строк и подставляет нужные.

А, это правильное поведение. Пофиксил свой файлик конфигурации. Посмотрим по ходу дела, как оно.

--
H.Z.

### ПРОДАМ ИHСПЕКТОРА ГАИ с определителем номера Телефон 02 (звонить после работы).

Anton Gusev

unread,
May 6, 2012, 10:11:26 AM5/6/12
to scmrt...@googlegroups.com
Hi, Sergey A. Borshch!
You wrote on 06.05.2012 18:45

> Под какой системой делаешь co - для такой и получишь ее родные переводы
> строк. И все будут счастливы - и ^M в mc не будет, и в виндовом блокноте
> не будет одной длиннющей строки с квадратиками.

Я так и понял. Но вот я таскаю винт с проектами, и делаю update как под
виндой, так и под линуксом. Мне теперь придётся, сменив локацию, делать
update заново? (И ещё не факт, что сработает, потому что файл-то up-to
date, станет ли его обновлять svn?)

Ещё как аргумент против - во многих проектах жёстко приняты виндовые
переводы строки, и я не слышал про проекты, использующие native
svn::eol-style. Наверное это чем-то обусловлено?

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

Или давай я спрошу ещё вот так: зачем нужен linux-стиль, кроме как чтобы
не было ^M в mc?

Anton Gusev

unread,
May 6, 2012, 10:12:33 AM5/6/12
to scmrt...@googlegroups.com
Hi, Harry Zhurov!
You wrote on 06.05.2012 18:59

> Я вот тоже не очень понимаю технологию. Может быть, имеется в виду то, что svn автоматом меняет EOL, ориентируясь на целевую ОС? Т.е. если с венды делаешь co или update, то файлы зальюцца с \r\n. Если с линя - то будет \n.

Да, именно так. Мне это не нравится.

Anton Gusev

unread,
May 6, 2012, 11:10:53 AM5/6/12
to scmrt...@googlegroups.com
Hi, Anton Gusev!
You wrote on 06.05.2012 20:11
> (И ещё не факт, что сработает, потому что файл-то up-to
> date, станет ли его обновлять svn?)

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


Sergey A. Borshch

unread,
May 9, 2012, 3:16:08 AM5/9/12
to scmrt...@googlegroups.com
On 05/06/2012 05:11 PM, Anton Gusev wrote:
> Я так и понял. Но вот я таскаю винт с проектами, и делаю update как под
Надо избавляться от вредныхпривычек :) Во времена всеобщего интернета таскать
винт...
Я прихожу и делаю svn up.

> виндой, так и под линуксом. Мне теперь придётся, сменив локацию, делать
> update заново? (И ещё не факт, чтосработает, потому что файл-то up-to
> date, станет ли его обновлять svn?)

>
> Ещё как аргумент против - вомногих проектах жёстко приняты виндовые
> переводы строки, и я не слышал про проекты, использующие native
> svn::eol-style. Наверное это чем-то обусловлено?
Наверное. Не знаю.

> Кстати, я уже получил небольшие проблемы от этого. Сравнивал meld-ом две
> версии файла, и получил кучу различий, хотя изменил всего пару строчек.
А meld нельзя настроить игнорировать разные переводы строк, как это делает diff?

>
> Или давай я спрошу ещё вот так: зачем нужен linux-стиль, кроме как чтобы
> не было ^M в mc?
>
Например, чтобы не было такого:

bash: ./some_script: /bin/sh^M: bad interpreter: No such file or directory
Да и ^M тоже неприятны. Как и мешанина из разных переводов строк после
редактирования файла в разных системах.


On 05/06/2012 06:10 PM, Anton Gusev wrote:
> Hi, Anton Gusev!
> You wrote on 06.05.2012 20:11
>> (И ещё не факт, что сработает, потому что файл-то up-to
>> date, станет ли его обновлятьsvn?)
>
> Проверил - не срабатывает. Приходится удалять файлы.
> Получается (по крайней мере с моей колокольни) куча геморроя без
> какого-либо выигрыша:)

Зачем удалять файлы? Если тебе все равно какие переводыстрок в файлах твоей
локальной копии - пусть они и живут с теми переводами, с которыми ты их вытащил.

Не, если все против - мне не сложно подправить скрипт чтобы он убрал этот
атрибут со всех файлов.

P.S. Насчет svn:executable у линуховых скриптов возражений нет?

Сергей.

Anton Gusev

unread,
May 9, 2012, 4:31:11 AM5/9/12
to scmrt...@googlegroups.com
Hi, Sergey A. Borshch!
You wrote on 09.05.2012 13:16

> Надо избавляться от вредных привычек :) Во времена всеобщего интернета таскать
> винт...
> Я прихожу и делаю svn up.

Мне удобнее подгадывать коммиты не к окончанию рабочего дня / отходу ко
сну дома, а к завершению логического куска работы. А эти моменты очень
редко совпадают:)

> А meld нельзя настроить игнорировать разные переводы строк, как это делает diff?

Можно. Но при этом он перестаёт показывать ещё какие-то различия в
пробелах/пустых строках, а мне бы этого не хотелось.

> Например, чтобы не было такого:
>
> bash: ./some_script: /bin/sh^M: bad interpreter: No such file or directory

Ни разу с таким не встречался. Откуда взялись ^M в скрипте? Я так
понимаю, это просто кто-то закоммитил неправильно?

> Да и ^M тоже неприятны. Как и мешанина из разных переводов строк после
> редактирования файла в разных системах.

Вот чтоб не было мешанины, надо сделать жёстко CRLF для всего кроме
скриптов (для них - жёстко LF). А иначе мешанина неизбежна. Невозможно
обеспечить распространение файлов исключительно svn. Файлы будут
копироваться флешками, переноситься на дисках, пересылаться по почте,
скачиваться в виде tar-архивов с viewvc, и в виде rar-архивов с sf.net.
Поэтому, как только svn начнёт раздавать эти файлы в разных форматах,
так сразу начнётся путаница. (Ну или не совсем сразу, но начнётся
обязательно).

> Зачем удалять файлы? Если тебе все равно какие переводы строк в файлах твоей
> локальной копии - пусть они и живут с теми переводами, с которыми ты их вытащил.

Мне не всё равно, мне нужна определённость. Более совместим CRLF,
поэтому я за него.

> Не, если все против - мне не сложно подправить скрипт чтобы он убрал этот
> атрибут со всех файлов.

Моё мнение такое: либо убрать совсем (и каждый потом при желании сможет
настроить личные предпочтения через свой .subversion/config), либо
жёстко CRLF для всего кроме линуксовых скриптов (для них - LF, тоже жёстко).

> P.S. Насчет svn:executable у линуховых скриптов возражений нет?

Это - одобрям (только почему-то не сработало у меня).


Anton Gusev

unread,
May 10, 2012, 1:24:42 AM5/10/12
to scmrt...@googlegroups.com
Hi, Anton Gusev!
You wrote on 09.05.2012 14:31

AG> Это - одобрям (только почему-то не сработало у меня).

Гы, я на NTFS пробовал :)

Oleksandr Redchuk

unread,
May 14, 2012, 4:52:12 AM5/14/12
to scmrt...@googlegroups.com
2012/5/9 Anton Gusev <anto...@mail.ru>:

AG> Мне удобнее подгадывать коммиты не к окончанию рабочего дня / отходу ко сну
AG> дома, а к завершению логического куска работы.

Иначе для любого чиха нужно делать ветку, чтобы и фиксировать когда
попало, и в стволе не ломать собираемость проекта.

SAB>> Например, чтобы не было такого:
SAB>> bash: ./some_script: /bin/sh^M: bad interpreter: No such file or directory
Я когда-то нарывался, кажется, и на незамеченное make маскирование
конца строки из-за \^M
и из-за того, что в начале файла строки были без ^M, т.е. была мешанина.

SAB>> Да и ^M тоже неприятны. Как и мешанина из разных переводов строк после
SAB>> редактирования файла в разных системах.

AG> Вот чтоб не было мешанины, надо сделать жёстко CRLF для всего кроме скриптов
AG> (для них - жёстко LF).

Подумав, вынужден согласиться.

--
wbr,
ReAl

Sergey A. Borshch

unread,
May 15, 2012, 3:47:29 PM5/15/12
to scmrt...@googlegroups.com
On 05/14/2012 11:52 AM, Oleksandr Redchuk wrote:
> 2012/5/9 Anton Gusev<anto...@mail.ru>:
> AG> Вот чтоб не было мешанины, надо сделать жёстко CRLF для всего кроме скриптов
> AG> (для них - жёстко LF).
>
> Подумав, вынужден согласиться.
>
"Чтож, раз 32 мая, еще один день весны никому не нужен..."

Тогда меняю svn::eol-style с native на CRLF.

Reply all
Reply to author
Forward
0 new messages