version 1.63, 2007/01/14 23:10:56 |
version 1.64, 2007/01/18 16:45:52 |
|
|
#include "cvs.h" |
#include "cvs.h" |
#include "diff.h" |
#include "diff.h" |
#include "log.h" |
#include "log.h" |
|
#include "remote.h" |
|
|
int cvs_import(int, char **); |
int cvs_import(int, char **); |
void cvs_import_local(struct cvs_file *); |
void cvs_import_local(struct cvs_file *); |
|
|
vendor_tag = argv[1]; |
vendor_tag = argv[1]; |
release_tag = argv[2]; |
release_tag = argv[2]; |
|
|
|
if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) { |
|
cvs_client_connect_to_server(); |
|
|
|
cvs_client_send_request("Argument -b%s", IMPORT_DEFAULT_BRANCH); |
|
cvs_client_send_request("Argument -m%s", logmsg); |
|
cvs_client_send_request("Argument %s", import_repository); |
|
cvs_client_send_request("Argument %s", vendor_tag); |
|
cvs_client_send_request("Argument %s", release_tag); |
|
|
|
cr.enterdir = NULL; |
|
cr.leavedir = NULL; |
|
cr.fileproc = cvs_client_sendfile; |
|
cr.flags = CR_RECURSE_DIRS; |
|
|
|
cvs_file_run(1, &arg, &cr); |
|
cvs_client_senddir("."); |
|
cvs_client_send_request("import"); |
|
|
|
cvs_client_get_responses(); |
|
return (0); |
|
} |
|
|
if (cvs_path_cat(current_cvsroot->cr_dir, import_repository, |
if (cvs_path_cat(current_cvsroot->cr_dir, import_repository, |
repo, sizeof(repo)) >= sizeof(repo)) |
repo, sizeof(repo)) >= sizeof(repo)) |
fatal("cvs_import: truncation"); |
fatal("cvs_import: truncation"); |
|
|
if ((bp = cvs_buf_load_fd(cf->fd, BUF_AUTOEXT)) == NULL) |
if ((bp = cvs_buf_load_fd(cf->fd, BUF_AUTOEXT)) == NULL) |
fatal("import_new: failed to load %s", cf->file_path); |
fatal("import_new: failed to load %s", cf->file_path); |
|
|
cvs_buf_putc(bp, '\0'); |
|
|
|
if ((brev = rcsnum_brtorev(branch)) == NULL) |
if ((brev = rcsnum_brtorev(branch)) == NULL) |
fatal("import_new: failed to get first branch revision"); |
fatal("import_new: failed to get first branch revision"); |
|
|
|
|
static void |
static void |
import_update(struct cvs_file *cf) |
import_update(struct cvs_file *cf) |
{ |
{ |
|
int ret; |
BUF *b1, *b2, *d; |
BUF *b1, *b2, *d; |
char branch[16]; |
char branch[16]; |
RCSNUM *newrev, *rev, *brev; |
RCSNUM *newrev, *rev, *brev, *hrev; |
|
|
cvs_log(LP_TRACE, "import_update(%s)", cf->file_path); |
cvs_log(LP_TRACE, "import_update(%s)", cf->file_path); |
|
|
|
|
fatal("import_update: failed to load %s", |
fatal("import_update: failed to load %s", |
cf->file_path); |
cf->file_path); |
|
|
if (cvs_buf_differ(b1, b2) == 0) { |
ret = cvs_buf_differ(b1, b2); |
|
if (ret == 0) { |
import_tag(cf, brev, rev); |
import_tag(cf, brev, rev); |
cvs_printf("U %s/%s\n", import_repository, |
|
cf->file_path); |
|
rcsnum_free(rev); |
|
rcsnum_free(brev); |
rcsnum_free(brev); |
rcs_write(cf->file_rcs); |
rcs_write(cf->file_rcs); |
return; |
return; |
|
|
d = import_get_rcsdiff(cf, rev); |
d = import_get_rcsdiff(cf, rev); |
newrev = rcsnum_inc(rev); |
newrev = rcsnum_inc(rev); |
} else { |
} else { |
d = import_get_rcsdiff(cf, rcs_head_get(cf->file_rcs)); |
hrev = rcs_head_get(cf->file_rcs); |
|
d = import_get_rcsdiff(cf, hrev); |
|
rcsnum_free(hrev); |
newrev = rcsnum_brtorev(brev); |
newrev = rcsnum_brtorev(brev); |
} |
} |
|
|
|
|
if (rcs_deltatext_set(cf->file_rcs, newrev, d) == -1) |
if (rcs_deltatext_set(cf->file_rcs, newrev, d) == -1) |
fatal("import_update: failed to set deltatext"); |
fatal("import_update: failed to set deltatext"); |
|
|
cvs_buf_free(d); |
|
import_tag(cf, brev, newrev); |
import_tag(cf, brev, newrev); |
|
|
if (cf->file_rcs->rf_branch == NULL || cf->file_rcs->rf_inattic == 1 || |
if (cf->file_rcs->rf_branch == NULL || cf->file_rcs->rf_inattic == 1 || |
|
|
cvs_printf("U %s/%s\n", import_repository, cf->file_path); |
cvs_printf("U %s/%s\n", import_repository, cf->file_path); |
} |
} |
|
|
if (rev != NULL) |
|
rcsnum_free(rev); |
|
rcsnum_free(brev); |
rcsnum_free(brev); |
|
|
rcs_write(cf->file_rcs); |
rcs_write(cf->file_rcs); |
} |
} |
|
|
|
|
char *p1, *p2; |
char *p1, *p2; |
BUF *b1, *b2; |
BUF *b1, *b2; |
|
|
if ((b1 = cvs_buf_load_fd(cf->fd, BUF_AUTOEXT)) == NULL) |
|
fatal("import_get_rcsdiff: failed loading %s", cf->file_path); |
|
|
|
b2 = cvs_buf_alloc(128, BUF_AUTOEXT); |
b2 = cvs_buf_alloc(128, BUF_AUTOEXT); |
|
|
if (cvs_noexec != 1) { |
if (cvs_noexec != 1) { |
|
if ((b1 = cvs_buf_load_fd(cf->fd, BUF_AUTOEXT)) == NULL) |
|
fatal("import_get_rcsdiff: failed loading %s", |
|
cf->file_path); |
|
|
(void)xasprintf(&p1, "%s/diff1.XXXXXXXXXX", cvs_tmpdir); |
(void)xasprintf(&p1, "%s/diff1.XXXXXXXXXX", cvs_tmpdir); |
cvs_buf_write_stmp(b1, p1, NULL); |
cvs_buf_write_stmp(b1, p1, NULL); |
cvs_buf_free(b1); |
cvs_buf_free(b1); |
|
|
(void)unlink(p1); |
(void)unlink(p1); |
(void)unlink(p2); |
(void)unlink(p2); |
|
|
if (p1 != NULL) |
xfree(p1); |
xfree(p1); |
xfree(p2); |
if (p2 != NULL) |
|
xfree(p2); |
|
} |
} |
|
|
if (b1 != NULL) |
|
cvs_buf_free(b1); |
|
|
|
return (b2); |
return (b2); |
} |
} |