=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/update.c,v retrieving revision 1.111 retrieving revision 1.112 diff -c -r1.111 -r1.112 *** src/usr.bin/cvs/update.c 2007/09/23 10:49:49 1.111 --- src/usr.bin/cvs/update.c 2007/09/23 11:19:24 1.112 *************** *** 1,4 **** ! /* $OpenBSD: update.c,v 1.111 2007/09/23 10:49:49 joris Exp $ */ /* * Copyright (c) 2006 Joris Vink * --- 1,4 ---- ! /* $OpenBSD: update.c,v 1.112 2007/09/23 11:19:24 joris Exp $ */ /* * Copyright (c) 2006 Joris Vink * *************** *** 287,292 **** --- 287,293 ---- void cvs_update_local(struct cvs_file *cf) { + char *tag; int ret, flags; CVSENTRIES *entlist; char rbuf[CVS_REV_BUFSZ]; *************** *** 304,311 **** } flags = 0; ! cvs_file_classify(cf, cvs_directory_tag); if ((cf->file_status == FILE_UPTODATE || cf->file_status == FILE_MODIFIED) && cf->file_ent != NULL && cf->file_ent->ce_tag != NULL && reset_stickies == 1) { --- 305,320 ---- } flags = 0; ! if (cvs_specified_tag != NULL) ! tag = cvs_specified_tag; ! else ! tag = cvs_directory_tag; + cvs_file_classify(cf, tag); + + if (cf->file_ent != NULL && cf->file_ent->ce_tag != NULL) + tag = cf->file_ent->ce_tag; + if ((cf->file_status == FILE_UPTODATE || cf->file_status == FILE_MODIFIED) && cf->file_ent != NULL && cf->file_ent->ce_tag != NULL && reset_stickies == 1) { *************** *** 330,336 **** cvs_log(LP_RCS, "VERS: %s", rbuf); cvs_log(LP_RCS, "***************"); } ! cvs_checkout_file(cf, cf->file_rcsrev, CO_DUMP); return; } --- 339,345 ---- cvs_log(LP_RCS, "VERS: %s", rbuf); cvs_log(LP_RCS, "***************"); } ! cvs_checkout_file(cf, cf->file_rcsrev, tag, CO_DUMP); return; } *************** *** 360,376 **** 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); cvs_printf("U %s\n", cf->file_path); cvs_history_add(CVS_HISTORY_UPDATE_CO, cf, NULL); break; case FILE_MERGE: ! cvs_checkout_file(cf, cf->file_rcsrev, CO_MERGE); if (diff3_conflicts != 0) { cvs_printf("C %s\n", cf->file_path); --- 369,385 ---- case FILE_LOST: case FILE_CHECKOUT: case FILE_PATCH: ! if ((tag != NULL && reset_stickies != 1) || (((cf->file_ent != NULL) && cf->file_ent->ce_tag != NULL) && (reset_stickies != 1))) flags = CO_SETSTICKY; ! cvs_checkout_file(cf, cf->file_rcsrev, tag, flags); cvs_printf("U %s\n", cf->file_path); cvs_history_add(CVS_HISTORY_UPDATE_CO, cf, NULL); break; case FILE_MERGE: ! cvs_checkout_file(cf, cf->file_rcsrev, tag, CO_MERGE); if (diff3_conflicts != 0) { cvs_printf("C %s\n", cf->file_path); *************** *** 385,391 **** case FILE_UNLINK: (void)unlink(cf->file_path); if (cvs_server_active == 1) ! cvs_checkout_file(cf, cf->file_rcsrev, CO_REMOVE); case FILE_REMOVE_ENTRY: entlist = cvs_ent_open(cf->file_wd); cvs_ent_remove(entlist, cf->file_name); --- 394,400 ---- case FILE_UNLINK: (void)unlink(cf->file_path); if (cvs_server_active == 1) ! cvs_checkout_file(cf, cf->file_rcsrev, tag, CO_REMOVE); case FILE_REMOVE_ENTRY: entlist = cvs_ent_open(cf->file_wd); cvs_ent_remove(entlist, cf->file_name); *************** *** 396,404 **** if (cvs_cmdop != CVS_OP_UPDATE) break; ! if (cvs_directory_tag != NULL && cf->file_rcs->rf_dead != 1 && (cf->file_flags & FILE_HAS_TAG)) ! cvs_checkout_file(cf, cf->file_rcsrev, CO_SETSTICKY); break; default: break; --- 405,414 ---- if (cvs_cmdop != CVS_OP_UPDATE) break; ! if (tag != NULL && cf->file_rcs->rf_dead != 1 && (cf->file_flags & FILE_HAS_TAG)) ! cvs_checkout_file(cf, cf->file_rcsrev, ! tag, CO_SETSTICKY); break; default: break;