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

У меня проблемы с 4 файлами в моем проекте CVS. Каждый раз, когда я фиксирую один из этих файлов, CVS продолжает добавлять в его конец одну и ту же строку кода. Эта строка кода является повторяющейся строкой текущего файла (но не последней строкой).

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

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

Я мог бы добавить, что мой файл представляет собой .strings (текстовый файл, Unicode). Работаю над веткой, но недавно слил в ствол.

Подробнее:

  • Я использую TortoiseSVN на виртуальной машине Windows, которая имеет доступ к моей папке документов в Mac OS X через сетевой диск между этими двумя.

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

  • И теперь, когда он это сделал, проблема решена и для меня.

  • Но я понятия не имею, что случилось. Моя единственная подсказка - это скрытый символ в Mac OS X, который нарушает работу TortoiseSVN. Является ли это возможным?


person NLemay    schedule 14.01.2013    source источник
comment
Привет. Спасибо! Я действительно не был уверен, что мой вопрос был лучше о SO или Программистах. Но это правда, что перечитывание часто задаваемых вопросов заставляет меня думать, что он лучше подходит для SO. Я отмечу это.   -  person NLemay    schedule 14.01.2013
comment
Возникает очевидный вопрос: чем эти четыре файла отличаются от тех, которые работают нормально? Какая строка постоянно добавляется? Если возможно, опубликуйте пример.   -  person Kilian Foth    schedule 14.01.2013
comment
Данные: я никогда не видел такого поведения за многие годы использования CVS. Но я не очень часто разветвляюсь и сливаюсь. Что cvs status filename вам говорит?   -  person Keith Thompson    schedule 14.01.2013
comment
Он сообщает мне, что файл обновлен, рабочая версия 1.1.2.7 и версия репозитория 1.1.2.7. Вариант расширения: укв. Также мне говорит, что это в ветке.   -  person NLemay    schedule 14.01.2013
comment
Вам придется быть более откровенным. Это не то поведение, с которым я сталкивался с CVS, и я постоянно выполняю ветвление и слияние.   -  person Martin York    schedule 14.01.2013
comment
@LokiAstari Вы правы, я не привел достаточно подробностей, чтобы решить эту проблему. Моя установка довольно сложна: я использую TortoiseSVN на виртуальной машине с Windows, которая имеет доступ к моей папке документов в Mac OS X через сетевой диск между этими двумя. Оказывается, мой коллега, у которого есть тот же проект, но в реальной папке Windows, мог без проблем выполнить коммит. И теперь, когда он это сделал, проблема решена и для меня. Но я понятия не имею, что случилось. Моя единственная подсказка - это скрытый символ в Mac OS X, который нарушает работу TortoiseSVN. Является ли это возможным?   -  person NLemay    schedule 14.01.2013


Ответы (1)


Я не сталкивался с этой проблемой с CVS, но обратите внимание, что вы упомянули, что файл, который вы редактируете, является текстом Unicode (вы не упоминаете, означает ли это UTF8 или UTF16, но любой из них может вызвать проблемы).

В зависимости от того, как был построен ваш CVS-сервер и как (и на какой платформе) он запущен, весьма вероятно, что сервер не поддерживает Unicode. Это может вызвать целый ряд возможных проблем, включая расширение тегов $ в стиле RCS в местах, где второй (или более поздний) байт символа Unicode равен ASCII '$'.

Чтобы решить эту проблему, нужно пометить исходные файлы Unicode как двоичные объекты. Из командной строки это можно сделать с помощью

cvs add -kb file-name

при добавлении нового файла или

cvs admin -kb file-name

для существующего файла (замените имя-файла на имя вашего файла).

В последнем случае я бы рекомендовал удалить (локальную копию) файла и запустить «cvs update», чтобы вернуть его после изменения типа.

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

person jimwise    schedule 15.01.2013
comment
Спасибо за объяснение! Это было непросто, и я не мог его догадаться! И ваше исправление, похоже, работает сейчас! - person NLemay; 15.01.2013
comment
Замечательно - рад, что смог помочь. :-) - person jimwise; 16.01.2013