[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Cvs-cvs] ccvs/src ChangeLog add.c base.c base.h client.c... [signed-com
From: |
Derek Robert Price |
Subject: |
[Cvs-cvs] ccvs/src ChangeLog add.c base.c base.h client.c... [signed-commits2] |
Date: |
Mon, 12 Dec 2005 19:37:33 +0000 |
CVSROOT: /cvsroot/cvs
Module name: ccvs
Branch: signed-commits2
Changes by: Derek Robert Price <address@hidden> 05/12/12 19:37:33
Modified files:
src : ChangeLog add.c base.c base.h client.c update.c
Log message:
Simplify protocol slightly.
* add.c (add), update.c (join_file): Use temp files rather than base
files for resurrection and additions via join.
* base.c (temp_checkout): Export function.
(ibase_copy): Factor from...
(base_copy): ...here.
(temp_copy): New function.
* base.h (temp_checkout, temp_copy): New functions.
* client.c (client_base_copy): Work with temp files when necessary.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/ChangeLog.diff?only_with_tag=signed-commits2&tr1=1.3306.2.45&tr2=1.3306.2.46&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/add.c.diff?only_with_tag=signed-commits2&tr1=1.121.4.4&tr2=1.121.4.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/base.c.diff?only_with_tag=signed-commits2&tr1=1.1.2.12&tr2=1.1.2.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/base.h.diff?only_with_tag=signed-commits2&tr1=1.1.2.7&tr2=1.1.2.8&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/client.c.diff?only_with_tag=signed-commits2&tr1=1.433.4.20&tr2=1.433.4.21&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/cvs/ccvs/src/update.c.diff?only_with_tag=signed-commits2&tr1=1.256.4.14&tr2=1.256.4.15&r1=text&r2=text
Patches:
Index: ccvs/src/ChangeLog
diff -u ccvs/src/ChangeLog:1.3306.2.45 ccvs/src/ChangeLog:1.3306.2.46
--- ccvs/src/ChangeLog:1.3306.2.45 Sat Dec 10 16:40:27 2005
+++ ccvs/src/ChangeLog Mon Dec 12 19:37:32 2005
@@ -1,3 +1,15 @@
+2005-12-12 Derek Price <address@hidden>
+
+ Simplify protocol slightly.
+ * add.c (add), update.c (join_file): Use temp files rather than base
+ files for resurrection and additions via join.
+ * base.c (temp_checkout): Export function.
+ (ibase_copy): Factor from...
+ (base_copy): ...here.
+ (temp_copy): New function.
+ * base.h (temp_checkout, temp_copy): New functions.
+ * client.c (client_base_copy): Work with temp files when necessary.
+
2005-12-10 Derek Price <address@hidden>
* sanity.sh: Minor corrections for nobase testing.
Index: ccvs/src/add.c
diff -u ccvs/src/add.c:1.121.4.4 ccvs/src/add.c:1.121.4.5
--- ccvs/src/add.c:1.121.4.4 Fri Dec 2 21:12:44 2005
+++ ccvs/src/add.c Mon Dec 12 19:37:33 2005
@@ -474,7 +474,7 @@
*/
char *prev = previous_rev (vers->srcfile,
vers->vn_rcs);
- int status;
+ char *tempfile;
if (prev == NULL)
{
/* There is no previous revision. Either:
@@ -498,11 +498,11 @@
error (0, 0,
"Resurrecting file `%s' from revision %s.",
finfo.fullname, prev);
- status = base_checkout (vers->srcfile, &finfo,
- NULL, prev, NULL,
- vers->tag,
- NULL, vers->options);
- if (status != 0)
+ tempfile = temp_checkout (vers->srcfile, &finfo,
+ NULL, prev, NULL,
+ vers->tag,
+ NULL, vers->options);
+ if (!tempfile)
{
error (0, 0, "Failed to resurrect revision %s",
prev);
@@ -513,10 +513,11 @@
/* I don't actually set vers->ts_user here
* because it would confuse server_update ().
*/
- base_copy (&finfo, prev, "nyd");
+ temp_copy (&finfo, "ny", tempfile);
timestamp = time_stamp (finfo.file);
if (!really_quiet)
write_letter (&finfo, 'U');
+ free (tempfile);
}
free (prev);
}
Index: ccvs/src/base.c
diff -u ccvs/src/base.c:1.1.2.12 ccvs/src/base.c:1.1.2.13
--- ccvs/src/base.c:1.1.2.12 Thu Dec 8 20:49:44 2005
+++ ccvs/src/base.c Mon Dec 12 19:37:33 2005
@@ -283,7 +283,7 @@
-static char *
+char *
temp_checkout (RCSNode *rcs, struct file_info *finfo,
const char *prev, const char *rev, const char *ptag,
const char *tag, const char *poptions, const char *options)
@@ -398,13 +398,15 @@
-void
-base_copy (struct file_info *finfo, const char *rev, const char *flags)
+static void
+ibase_copy (struct file_info *finfo, const char *rev, const char *flags,
+ const char *tempfile)
{
char *basefile;
- TRACE (TRACE_FUNCTION, "base_copy (%s, %s, %s)",
- finfo->fullname, rev, flags);
+ TRACE (TRACE_FUNCTION, "ibase_copy (%s, %s, %s, %s)",
+ finfo->fullname, rev, flags,
+ tempfile ? tempfile : "(null)");
assert (flags && flags[0] && flags[1]);
@@ -418,7 +420,11 @@
if (noexec)
return;
- basefile = make_base_file_name (finfo->file, rev);
+ if (tempfile)
+ basefile = tempfile;
+ else
+ basefile = make_base_file_name (finfo->file, rev);
+
if (isfile (finfo->file))
xchmod (finfo->file, true);
@@ -427,11 +433,28 @@
xchmod (finfo->file, true);
if (server_active && strcmp (cvs_cmd_name, "export"))
- server_base_copy (finfo, rev, flags);
+ server_base_copy (finfo, rev ? rev : "", flags);
- if (suppress_bases && CVS_UNLINK (basefile) < 0)
+ if ((suppress_bases || tempfile) && CVS_UNLINK (basefile) < 0)
error (0, errno, "Failed to remove temp file `%s'", basefile);
- free (basefile);
+ if (!tempfile)
+ free (basefile);
+}
+
+
+
+void
+temp_copy (struct file_info *finfo, const char *flags, const char *tempfile)
+{
+ ibase_copy (finfo, NULL, flags, tempfile);
+}
+
+
+
+void
+base_copy (struct file_info *finfo, const char *rev, const char *flags)
+{
+ ibase_copy (finfo, rev, flags, NULL);
}
Index: ccvs/src/base.h
diff -u ccvs/src/base.h:1.1.2.7 ccvs/src/base.h:1.1.2.8
--- ccvs/src/base.h:1.1.2.7 Thu Dec 8 15:02:36 2005
+++ ccvs/src/base.h Mon Dec 12 19:37:33 2005
@@ -41,10 +41,16 @@
int base_checkout (RCSNode *rcs, struct file_info *finfo,
const char *prev, const char *rev, const char *ptag,
const char *tag, const char *poptions, const char *options);
+char *temp_checkout (RCSNode *rcs, struct file_info *finfo,
+ const char *prev, const char *rev, const char *ptag,
+ const char *tag, const char *poptions,
+ const char *options);
enum update_existing translate_exists (const char *exists);
bool validate_change (enum update_existing existp, const char *filename,
const char *fullname);
void base_copy (struct file_info *finfo, const char *rev, const char *flags);
+void temp_copy (struct file_info *finfo, const char *flags,
+ const char *tempfile);
void base_remove (const char *file, const char *rev);
int base_merge (RCSNode *rcs, struct file_info *finfo, const char *ptag,
const char *poptions, const char *options,
Index: ccvs/src/client.c
diff -u ccvs/src/client.c:1.433.4.20 ccvs/src/client.c:1.433.4.21
--- ccvs/src/client.c:1.433.4.20 Thu Dec 8 20:49:44 2005
+++ ccvs/src/client.c Mon Dec 12 19:37:33 2005
@@ -2370,7 +2370,15 @@
return;
}
- basefile = make_base_file_name (filename, rev);
+ if (temp_checkout1)
+ {
+ if (temp_checkout2)
+ error (1, 0, "Server sent two temp files before a Base-copy.");
+ basefile = temp_checkout1;
+ }
+ else
+ basefile = make_base_file_name (filename, rev);
+
temp_filename = newfilename (filename);
copy_file (basefile, temp_filename);
@@ -2385,11 +2393,12 @@
* file be sent.
*/
- /* If EXISTS[2] == "d", don't keep the base file. This happens
- * when a merge adds a file and when `cvs add' resurrects a file.
- */
- if (flags[0] && flags [1] && flags[2] == 'd' && CVS_UNLINK (basefile) < 0)
- error (0, errno, "Failed to delete `%s'", short_pathname);
+ if (temp_checkout1)
+ {
+ temp_checkout1 = NULL;
+ if (CVS_UNLINK (basefile) < 0)
+ error (0, errno, "Failed to remove temp file `%s'", basefile);
+ }
free (flags);
free (temp_filename);
Index: ccvs/src/update.c
diff -u ccvs/src/update.c:1.256.4.14 ccvs/src/update.c:1.256.4.15
--- ccvs/src/update.c:1.256.4.14 Thu Dec 8 20:49:46 2005
+++ ccvs/src/update.c Mon Dec 12 19:37:33 2005
@@ -2327,6 +2327,7 @@
if (vers->vn_user == NULL)
{
Vers_TS *xvers;
+ char *tempfile;
/* Use NULL for keyword expansion options. Otherwise, when a
command like `cvs update -kk -jT1 -jT2' creates a new file
@@ -2343,16 +2344,17 @@
/* FIXME: If base_checkout fails, we should arrange to
return a non-zero exit status. */
- status = base_checkout (xvers->srcfile, finfo,
- NULL, xvers->vn_rcs,
- xvers->entdata
- ? xvers->entdata->tag : NULL,
- xvers->tag,
- xvers->entdata
- ? xvers->entdata->options : NULL,
- xvers->options);
+ tempfile = temp_checkout (xvers->srcfile, finfo,
+ NULL, xvers->vn_rcs,
+ xvers->entdata
+ ? xvers->entdata->tag : NULL,
+ xvers->tag,
+ xvers->entdata
+ ? xvers->entdata->options : NULL,
+ xvers->options);
/* Added files are always writable until commit. */
- base_copy (finfo, xvers->vn_rcs, "nyd");
+ temp_copy (finfo, "ny", tempfile);
+ free (tempfile);
Register (finfo->entries, finfo->file, "0",
"Result of merge", NULL, vers->tag, vers->date, NULL);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Cvs-cvs] ccvs/src ChangeLog add.c base.c base.h client.c... [signed-commits2],
Derek Robert Price <=