=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/update.c,v retrieving revision 1.109 retrieving revision 1.110 diff -c -r1.109 -r1.110 *** src/usr.bin/cvs/update.c 2007/09/07 23:59:01 1.109 --- src/usr.bin/cvs/update.c 2007/09/22 16:01:22 1.110 *************** *** 1,4 **** ! /* $OpenBSD: update.c,v 1.109 2007/09/07 23:59:01 tobias Exp $ */ /* * Copyright (c) 2006 Joris Vink * --- 1,4 ---- ! /* $OpenBSD: update.c,v 1.110 2007/09/22 16:01:22 joris Exp $ */ /* * Copyright (c) 2006 Joris Vink * *************** *** 121,126 **** --- 121,130 ---- if (print_stdout) cvs_client_send_request("Argument -p"); + if (cvs_specified_tag != NULL) + cvs_client_send_request("Argument -r%s", + cvs_specified_tag); + cr.enterdir = NULL; cr.leavedir = NULL; cr.fileproc = cvs_client_sendfile; *************** *** 151,157 **** cvs_log(LP_TRACE, "cvs_update_enterdir(%s)", cf->file_path); ! cvs_file_classify(cf, NULL); if (cf->file_status == DIR_CREATE && build_dirs == 1) { cvs_mkpath(cf->file_path, cvs_specified_tag); --- 155,161 ---- cvs_log(LP_TRACE, "cvs_update_enterdir(%s)", cf->file_path); ! cvs_file_classify(cf, cvs_directory_tag); if (cf->file_status == DIR_CREATE && build_dirs == 1) { cvs_mkpath(cf->file_path, cvs_specified_tag); *************** *** 176,184 **** if (cvs_specified_tag != NULL) cvs_write_tagfile(cf->file_path, cvs_specified_tag, NULL, 0); - - cvs_parse_tagfile(cf->file_path, - &cvs_specified_tag, NULL, NULL); } } --- 180,185 ---- *************** *** 303,309 **** } flags = 0; ! cvs_file_classify(cf, cvs_specified_tag); if ((cf->file_status == FILE_UPTODATE || cf->file_status == FILE_MODIFIED) && cf->file_ent != NULL && --- 304,310 ---- } flags = 0; ! cvs_file_classify(cf, cvs_directory_tag); if ((cf->file_status == FILE_UPTODATE || cf->file_status == FILE_MODIFIED) && cf->file_ent != NULL && *************** *** 312,317 **** --- 313,319 ---- cf->file_status = FILE_MERGE; else cf->file_status = FILE_CHECKOUT; + cf->file_rcsrev = rcs_head_get(cf->file_rcs); /* might be a bit overkill */ *************** *** 358,364 **** case FILE_LOST: case FILE_CHECKOUT: case FILE_PATCH: ! if (cvs_specified_tag != NULL) flags = CO_SETSTICKY; cvs_checkout_file(cf, cf->file_rcsrev, flags); --- 360,368 ---- case FILE_LOST: case FILE_CHECKOUT: case FILE_PATCH: ! if (cvs_directory_tag != NULL || ! (((cf->file_ent != NULL) && cf->file_ent->ce_tag != NULL) && ! (reset_stickies != 1))) flags = CO_SETSTICKY; cvs_checkout_file(cf, cf->file_rcsrev, flags); *************** *** 387,392 **** --- 391,403 ---- cvs_ent_remove(entlist, cf->file_name); cvs_ent_close(entlist, ENT_SYNC); cvs_history_add(CVS_HISTORY_UPDATE_REMOVE, cf, NULL); + break; + case FILE_UPTODATE: + if (cvs_cmdop != CVS_OP_UPDATE) + break; + + if (cvs_directory_tag != NULL && cf->file_rcs->rf_dead != 1) + cvs_checkout_file(cf, cf->file_rcsrev, CO_SETSTICKY); break; default: break;