Не удается добавить файл в CVSNT

#cvs #cvsnt

#cvs #cvsnt

Вопрос:

Я получаю странную ошибку при попытке добавить файл в CVS.

Проблема возникла из-за того, что случай был неправильным и вызывал проблемы (т.е. MyFile.js был в резюме как myfile.js )

Я попытался удалить файл и добавить его обратно, и теперь я получаю следующую ошибку:

 cvs server: could not find parsed rcsfile MyFile.js
  

Есть ли какой-нибудь способ навсегда удалить этот файл и начать новый?

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

Редактировать:

Я пробовал следующее:

  • Удаление файла с измененной версией через проводник Windows на сервере cvs и добавление его обратно через cvs add и commit. Это позволяет мне добавить его, но затем удаляет из моей изолированной среды при первом обновлении.
  • Добавление файла под другим именем (т.е. MyFile2.js ), и используя cvs rename для переименования на правильное имя (MyFile.js ). При этом файл останется в моей изолированной среде, но все остальные пользователи получат другое имя (MyFile2.js ). Если я удалю файл из своей изолированной среды, он вернется под другим именем (MyFile2.js ).
  • Удаление файла с измененной версией через проводник Windows на сервере cvs и добавление его через cvs add и commit, затем попытка удалить его через CVS. Это приводит к несинхронизированному сообщению от CVS. Обновление удаляет файл из моей изолированной среды.

Ответ №1:

Файловая система NT более чем немного сбита с толку, когда дело доходит до заглавных букв: она запоминает начальную заглавную букву, но впоследствии игнорирует любые изменения.

Все это означает, что вам придется предпринять некоторые радикальные шаги в репозитории. Сначала сделайте резервную копию, и если вам неудобно это делать, найдите кого-нибудь, кто знает CVS.

Первым шагом является поиск вашего репозитория. Если вы зайдете в рабочий каталог и посмотрите на содержимое файла CVS/Root , вы увидите строку, подобную следующей:

 :ext:rivendell:/tera/cvs
  

Это говорит о том, что мой репозиторий CVS обслуживается с хоста «rivendell» в каталоге «/ tera/cvs». В этом каталоге вы найдете отдельные проекты, и в конечном итоге вы будете переходить по каталогам, пока не дойдете до нужного.

На этом этапе либо вы увидите файл версии, названный так потому, что в конце у него есть «,v», либо вы этого не увидите. Если у вас этого нет, поищите каталог с именем Attic (и хотя вы сказали, что в CVSNT нет чердака, я вам не верю).

Здесь у вас есть два варианта. Самый простой — это удалить файл версии. Вы также могли бы переименовать его в какое-нибудь безобидное имя, например «ix, v», а затем назвать его обратно с правильной заглавной буквы. В любом случае, следующий шаг не изменится.

Теперь вернитесь на свою рабочую станцию и удалите свой рабочий каталог. Полностью. Не пытайтесь удалить подкаталог CVS или что-нибудь необычное. Если у вас есть файлы, которые вам необходимо сохранить (поскольку они еще не были возвращены), скопируйте их в безопасное место.

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

Комментарии:

1. Я сделал именно это, и все еще проблема. Проблема не в файле, а в том, что он удаляется из моей изолированной среды, но остается на сервере. Примечание: когда я говорю «удален через проводник Windows», я имею в виду «удален файл с измененной версией с сервера через проводник Windows». Также, согласно документам CVSNT, чердака нет.

2. Не могу прокомментировать то, что говорится в документах CVSNT, потому что это платный продукт, и я не смог (после 30 секунд поиска) найти доступ к каким-либо общедоступным документам. Если они действительно избавились от чердака (а не просто скрывают его в своем браузере репозитория), то это определенно что-то «отличное от CVS», и вам понадобится кто-то, у кого есть опыт работы с сервером CVSNT (т. Е. Я рекомендую отредактировать вашу тему).

Ответ №2:

Вам также необходимо удалить файл из папки Attic в самом репозитории.

Комментарии:

1. Чердака нет. Мы используем CVSNT

Ответ №3:

«cvs удалить», за которым следует «cvs commit», не работает?

Комментарии:

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

Ответ №4:

CVS становится ненужным программным обеспечением: в нем все еще много ошибок, и они не будут исправлены. Если бы вы могли переключиться на SVN, это было бы к лучшему. Есть даже несколько инструментов для импорта (использовал один сам, и он отлично работал). Они импортируют все, включая историю каждого файла. И тогда вы сможете легко решить свою проблему.

Известно, что CVS является проблемой, когда дело доходит до переименования (среди прочих операций). Таким образом, вы будете тратить меньше времени на борьбу с программным обеспечением для управления версиями в будущем, если перейдете на SVN.

Если вы не можете переключиться на SVN :

  • если вам ДЕЙСТВИТЕЛЬНО нужно решить эту проблему, конечным решением было бы переустановить CVS. Это последнее средство, но оно сработает.

Редактировать: я нашел это. Может быть, вы могли бы удалить ревизию, в которой файл был испорчен? С помощью команды -0range. Осторожно: команда считается опасной. Поэтому вы можете сначала создать резервную копию своего cvs.

Комментарии:

1. Я согласен, что SVN — лучший вариант, но в данном случае не я принимаю решения. Что вы подразумеваете под очисткой каталога?

2. Возможно, моя mermory играет со мной злую шутку, но я думаю, что у cvs есть та же команда, что и у svn, которая называется просто: clean up . Это удаляет блокировки, незавершенные операции и так далее.

3. Не удается найти никаких ссылок на него. Извините. Я отредактировал свой ответ. Но я также нашел кое-что еще. Проверьте это, это может сработать.

4. в OP упоминается CVSNT, что является чем-то большим, но не отказом от программного обеспечения.

5. CVS не обновлялся (даже не младший) более года… Возможно, термин «заброшенное программное обеспечение» несколько резковат, но сообщество сокращается, и оно по-прежнему содержит намного больше ошибок, чем SVN, который в последний раз обновлялся менее месяца назад.

Ответ №5:

Вы пытались выполнить команду «cvs remove», чтобы удалить файл из вашей изолированной среды и пометить его удаленным на сервере, зафиксировать удаление и повторно добавить его? Я предполагаю, что вы столкнулись с тем, что ваша песочница и сервер рассинхронизировались. После того, как файлы находятся под управлением cvs, вы не должны удалять / переименовывать / и т.д. С помощью команд командной строки, вы должны работать с использованием только команд CVS. Также обратите внимание, что CVSNT требует, чтобы за переименованием следовала фиксация «каталога» — фиксация только файла не зарегистрирует переименование на стороне сервера — в любом случае, были некоторые проблемы с переименованием, некоторые решены в последних выпусках.