Почему файл, зарегистрированный в CVS, становится двойным? - PullRequest
1 голос
/ 15 июля 2010

Задача

Часто (но не каждый раз) при использовании CVS для проверки таких файлов, как: .java, .cs, .xml и т. Д., Каждая строка файла получает возврат каретки.

Пример:

Файл до регистрации участником команды :

// Begin file
    class Foo
    {
      public Foo()
      {
        // Do step 1
        // Do step 2
      }
    }
// End file

Файл при извлечении членом команды:

// Begin file

    class Foo

    {

      public Foo()

      {

        // Do step 1

        // Do step 2

      }

    }

// End file

Среда разработки

  • NetBeans 6,8 и теперь 6,9 (проблема возникла и при использовании 6,8).
  • Visual Studio 2008 и 2010.
  • Репозиторий: CVS; проверки и извлечения сделаны из оболочки Cygwin bash.
  • Операционная система: Widows XP Professional.

Что я уже пробовал

Я попытался изменить значение: build.compiler.emacs=true в NetBeans в разделе Инструменты-> Параметры, думая, что это может вызвать проблемы с переводом Unix / Windows при регистрации? Это не имеет значения.

Я что-то упускаю из-за того, что происходит с файлом при его регистрации в CVS в стеке Windows / IDE / Cygwin, что может вызвать эту проблему?

Ответы [ 3 ]

3 голосов
/ 15 июля 2010

Что-то - преобразование разрывов строки DOS (CR LF) в пары разрывов строки Unix (просто LF).Я бы лично сделал ставку на то, что это CVS.Вы можете попробовать использовать TortoiseCVS вместо Cygwin CVS.

1 голос
/ 29 мая 2013

Еще одна возможность, с которой я только что столкнулся - если файл был сохранен в формате Unicode, но сохранен в CVS как ASCII / Text, будут добавлены дополнительные разделители строк.

1 голос
/ 15 июля 2010

Клиент CVS, родной для Windwos, преобразует окончания строк MS-DOS в текстовом файле (\ r \ n) в окончания строк в стиле Unix при отправке файла на сервер, так что в хранилище файлы сохраняются в «канонической» форме с \n, обозначающим конец строки. Когда собственный клиент Windows также преобразует конец строки при переносе файла с сервера.

Однако я считаю, что CVS-клиент Cygwin по умолчанию действует как Unix-клиент и предполагает, что преобразование конца строки не требуется. Поэтому, если вы используете этот клиент для регистрации файла с окончаниями в стиле MS-DOS (\ r \ n), вы получите такую ​​путаницу.

Похоже, что люди, использующие клиент Cygwin, используют инструменты, которые заботятся о преобразовании файлов в окончания строк в стиле MS-DOS (или что-то в этом роде).

Потенциальным решением проблемы является удаление клиента Cygwin CVS и установка клиента WinCVS на ваши окна Windows / Cygwin, чтобы собственный клиент Windows использовался даже при активной оболочке Cygwin:

Еще одна возможность настроить ваши крепления Cygwin в определенном режиме (но я не совсем знаком с Cygwin, чтобы знать, насколько хорошо это работает или может ли это вызвать другие проблемы - прошло много времени с тех пор, как я пытался используя Cygwin):

...