Окончание строки CVS - PullRequest
       10

Окончание строки CVS

3 голосов
/ 01 сентября 2009

У нас большое количество программистов на разных платформах, использующих CVS.

У нас есть разработчики, использующие Windows с TortoiseCVS (которая использует cvsNT)

У нас есть разработчики, использующие Ubuntu 8.04

У нас есть разработчики, у которых есть две коробки Ubuntu и Windows.

Широкий спектр различных редакторов используется разными разработчиками на разных платформах.

И у нас огромные проблемы с окончаниями строк. Что проявляется в непрерывном росте числа концов строк в файлах.

Теперь, насколько я понимаю, TortoiseCVS использует cvsNT, который предполагает окончание строк UNIX в хранилище. Когда вы извлекаете его, он преобразует конец строки UNIX в конец строки Windows, а когда вы его фиксируете, он преобразует конец строки Windows обратно в конец строки UNIX.

В Ubuntu клиенты cvs не выполняют преобразований, поскольку в репозитории должны быть окончания строк UNIX, а в linux также используются окончания строк UNIX.

Это все работает нормально, если все пользователи Windows используют клиент на базе cvsNT. И никто не переключает их ОС.

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

И в результате они заканчивают фиксацию файла, используя CVS-клиент linux с окончанием строки Windows.

Когда это проверяется с помощью клиента cvsNT в Windows, CRLF преобразуется в CRCRLF, который отображается в виде двух строк. Чем больше раз это происходит, тем больше новых строк появляется в файле.

Есть ли способ заставить CVS в linux преобразовывать любые окончания строк Windows в окончания строк UNIX при фиксации, чтобы этого не происходило. Таким образом, сервер CVS будет иметь только окончания строки UNIX.

Любые другие предложения о способах преодоления этого также приветствуются.

Ответы [ 3 ]

3 голосов
/ 01 сентября 2009

Единственная причина, из-за которой я перепутал окончания строк с CVS, - это если вы копируете файл из одной ОС в другую. Если вы делаете это, вы вручную обходите VCS. Это конечно напрашивается на неприятности. Так что либо прекратите это делать, либо не забудьте убирать за собой.

Я не знаю способа автоматически проверить или даже исправить это в CVS. Рассматривали ли вы переход на SVN? Это может быть способ сделать это до зацепки. OTOH, как только вы окажетесь в стране SVN, благодаря поддержке быстрого создания и уничтожения частных веток, вы можете больше никогда не обходить VCS: создать ветку, на одной платформе проверить изменения в этой ветке, на другой переключитесь на эту ветку и продолжайте работать там. Повторяйте, пока не закончите, объедините вашу ветку в ствол и удалите ее. Никакого проникновения файлов с одной машины на другую за спиной VCS. Одной вещи меньше беспокоиться.

3 голосов
/ 01 сентября 2009

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

dos2unix и unix2dos на linux и unix отлично работают. Cywgin в Windows обеспечит реализацию.

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

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

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

Удачи, Jacob

0 голосов
/ 19 октября 2016

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

Например: cvs --lf up

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