Fight the Concurrent Version System

Ivan8209

Даже не знаю, как это назвать:

$ cvs add file
cvs add: file added independently by second party
$ cvs ci file
cvs commit: use `cvs add' to create an entry for file
cvs [commit aborted]: correct above errors first!
$ cvs ci -r branch file
cvs commit: use `cvs add' to create an entry for file
cvs [commit aborted]: correct above errors first!

Ну и как, блин, добавить этот файл?
Только не надо советовать "cvs up" --- оно не помогает,
хоть тресни.
---
...skripa zubama, penu u huby...

Elina74

по-русски уже писать разучился?

evgen5555

mv file file_
cvs up
mv file_ file
cvs ci

Ivan8209

Не прокатывает.
Если использовать "cp" вместо "mv", будет такое:

$ cvs up file
cvs update: move away file; it is in the way
C file
$ cvs ci file
cvs commit: use `cvs add' to create an entry for file
cvs [commit aborted]: correct above errors first!

---
...skripa zubama, penu u huby...

kruzer25

Не прокатывает.
Если использовать "cp" вместо "mv", будет такое:
А если всё-таки использовать mv, а не cp?

Ivan8209

То же самое, просто файл будет восстановлен с другим сообщением:
"Потерялси-и..." вместо "Что это? Уберите, мешает."
---
...Я работаю антинаучным аферистом...

kruzer25

Ты всё-таки лог приведи.
В svn, например, это приведёт к:
1) Созданию чужого файла при update;
2) Замене чужого файла на твой при commit.

Ivan8209

Кому нужен бесполезный лог? Как я тебе говорю, так и есть.
И не надо привлекать сюда svn, это совсем другая система.
Если ты ещё не понял, дело вовсе не в замене файла через
checkout-update-commit, а в добавлении его через add.
Об этом, кстати, однозначно сказано в логе выше.
У меня появилась мысль, что происходит, но проверку придётся
отложить по крайней мере до вечера. Если кому это любопытно,
излагаю последовательно.
Первое, что, собственно, происходит.
Файл появился в стволе после того, как от того была отведена
текущая ветка. Соответственно, версии файла нумеруются 1.1,
1.2 и т. д. Добавить его через "add" не получается, поскольку
он уже в системе. А внести изменения не получается потому, что
он должен получить номер версии 1.сколько-то.2.1, но все эти
"сколько-то" уже заняты, потому что ветка была отведена до того,
как этот файл появился. В общем, что-то такое.
Непонятно, что мешает приклеить изменения как 1.1.2.1 или
как-нибудь ещё.
---
...Я работаю...

sany79

Если поймёшь, в чём дело, сообщи, пожалуйста. А то я тоже сталкивался с этой проблемой, и не врубаюсь.

Olyalyau

"Потерялси-и..." вместо "Что это? Уберите, мешает."

Когда пишет что потерялся, cvs восстанавливает файл в рабочей копии из репозитория.
Кроме того, по-идее, технология должна быть не совсем такой как писал(а/о/и) :
mv file file_
cvs delete file <---
cvs up
...

Ivan8209


$ cvs --help-commands
CVS commands are:
add Add a new file/directory to the repository
admin Administration front end for rcs
annotate Show last revision where each line was modified
checkout Checkout sources for editing
commit Check files into the repository
diff Show differences between revisions
edit Get ready to edit a watched file
editors See who is editing a watched file
export Export sources from CVS, similar to checkout
history Show repository access history
import Import sources into CVS, using vendor branches
init Create a CVS repository if it doesn't exist
log Print out history information for files
login Prompt for password for authenticating server
logout Removes entry in .cvspass for remote repository
pserver Password server mode
rannotate Show last revision where each line of module was modified
rdiff Create 'patch' format diffs between releases
release Indicate that a Module is no longer in use
remove Remove an entry from the repository
rlog Print out history information for a module
rtag Add a symbolic tag to a module
server Server mode
status Display status information on checked out files
tag Add a symbolic tag to checked out version of files
unedit Undo an edit command
update Bring work tree in sync with repository
version Show current CVS version(s)
watch Set watches
watchers See who is watching a file
(Specify the --help option for a list of other help options)

Судя по твоему сообщению, ты не понял сути вопроса.
---
...Я работаю антинаучным аферистом...

laki

а можно вопрос? какое это отношение имеет к программингу?

Ivan8209

Прямое.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Ober

к программингу?
К девелопменту! Программинга здесь больше нет!

laki

а ну да точно. программинг стал девелопингом и превратился в говнораздел

pitrik2

а ну да точно. программинг стал девелопингом и превратился в говнораздел
он таким и был

Olyalyau


$ cvs --help-commands
CVS commands are:
...

Это ты к чему? "delete", так же как и "rm" — альяс для команды "remove". Мог бы и сам догадаться.
Судя по твоему сообщению, ты не понял сути вопроса.

Твой вопрос состоит в том, что у тебя трабла с добавлением файла, который уже был добавлен в другой рабочей копии? Тогда я понял суть вопроса. Если нет — объясни по-подробнее.
Ещё раз: cvs add не пишет в репозиторий (только читает из него для проверки, нет ли там уже файла пишет cvs commit. Поэтому добавление файла не является атомарной операцией, и в случае разных последовательностей команд, получаются разные результаты.
Например, если ты сделаешь add в 1-й рабочей копии, потом add во 2-й, потом commit в 1-й, потом commit во 2-й, то:
1) оба add'а будут успешными;
2) второй commit свалится;
3) из-за того, что add во 2-й рабочей копии был успешен, в ней останется запись о том, что ты намереваешься добавить файл при следующем commit'е;
4) пока ты не сотрёшь эту запись (cvs delete ничего у тебя точно не выйдет.
В этом случае последовательность действий во 2-й рабочей копии (уже приводилась):
mv file file_
cvs delete file
cvs up
mv file_ file
cvs ci
Если же у тебя последовательность была такой: add в 1-й рабочей копии, потом commit в 1-й, потом add во 2-й, потом commit во 2-й, то свалится у тебя уже второй add.
В этом случае в последовательности действий во 2-й рабочей копии можно опустить cvs delete (тоже уже приводилось):
mv file file_
cvs up
mv file_ file
cvs ci
Однако, если ты его там напишешь, то ничего плохого не случится, так что я бы написал его в любом случае, чтобы не заниматься детальным разбором, какая же последовательность команд была.
Оставить комментарий
Имя или ник:
Комментарий: