RCSMERGE(1)

πŸ’… RCSMERGE(1) β€” the General Commands Manual, but make it cute

okay so bestie, gather round, because this is the rcsmerge page from the General Commands Manual and it's genuinely about to make your life so much easier 🫢


✨ NAME ✨

rcsmerge β€” merge RCS revisions. that's it. that's the whole vibe. no cap πŸ’–


🌸 SYNOPSIS 🌸

rcsmerge [options] file

literally just that. options plus a file. slay.


πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea β˜•: rcsmerge takes the changes between two revisions of an RCS file and folds them into the matching working file. like, it's giving "please combine my work with someone else's work without me crying." iconic behaviour honestly πŸ’…

filenames that match an RCS suffix mean RCS files; everything else means working files. the names get paired up exactly the way ci(1) explains it. iykyk.

you must specify at least one revision using one of the options down below β€” usually -r. you can specify at most two revisions. if you only give one, then the latest revision on the default branch (normally the highest branch on the trunk) gets assumed as the second revision. revisions can be written numerically or symbolically, your choice, we don't gatekeep πŸŽ€

rcsmerge prints a warning if there are overlaps, and it delimits those overlapping regions the way merge(1) explains. the command is super useful for incorporating changes into a checked-out revision. that's the whole point bestie 🌈


✨ OPTIONS ✨

  • -A β€” outputs conflicts using the -A style of diff3(1), if diff3 supports it. this merges all changes leading from file2 to file3 into file1, and generates the most verbose output. maximum yapping mode, honestly πŸ’€
  • -E, -e β€” these options specify conflict styles that generate less information than -A. see diff3(1) for the details. the default is -E. and with -e, rcsmerge does not warn you about conflicts (so like, don't say we didn't tell you πŸ™ˆ).
  • -ksubst β€” use subst style keyword substitution. see co(1) for the details. for example, -kk -r1.1 -r1.2 ignores differences in keyword values when merging the changes from 1.1 to 1.2. also important: it normally does not make sense to merge binary files as if they were text, so rcsmerge refuses to merge files if -kb expansion is used. hard no, respectfully 🚫
  • -p[rev] β€” send the result to standard output instead of overwriting the working file. very "look but don't touch" of it ✨
  • -q[rev] β€” run quietly; do not print diagnostics. shhh 🀫
  • -r[rev] β€” merge with respect to revision rev. here an empty rev stands for the latest revision on the default branch, normally the head. the main character option, fr fr πŸ‘‘
  • -T β€” this option has no effect; it's present for compatibility with other RCS commands. it's just there. standing in the corner. supporting the group 🫢
  • -V β€” print RCS's version number.
  • -Vn β€” emulate RCS version n. see co(1) for details.
  • -xsuffixes β€” use suffixes to characterize RCS files. see ci(1) for details.
  • -zzone β€” use zone as the time zone for keyword substitution. see co(1) for details.

πŸŽ€ EXAMPLES πŸŽ€

okay imagine this scenario bestie: you've released revision 2.8 of f.c. and assume furthermore that after you complete an unreleased revision 3.4, you receive updates to release 2.8 from someone else. to combine the updates to 2.8 and your changes between 2.8 and 3.4, put the updates to 2.8 into file f.c and execute:

rcsmerge  -p  -r2.8  -r3.4  f.c  >f.merged.c

then examine f.merged.c. πŸ‘€

alternatively, if you want to save the updates to 2.8 in the RCS file, check them in as revision 2.8.1.1 and execute co -j:

ci  -r2.8.1.1  f.c
co  -r3.4  -j2.8:2.8.1.1  f.c

as another example, the following command undoes the changes between revision 2.4 and 2.8 in your currently checked out revision in f.c:

rcsmerge  -r2.8  -r2.4  f.c
note the order of the arguments, and that f.c will be overwritten. like, actually overwritten. not a drill πŸ’€

🌈 ENVIRONMENT 🌈

  • RCSINIT β€” options prepended to the argument list, separated by spaces. a backslash escapes spaces within an option. the RCSINIT options are prepended to the argument lists of most RCS commands. useful RCSINIT options include -q, -V, -x, and -z. it's the pre-game playlist for your flags 🎧
  • RCS_MEM_LIMIT β€” normally, for speed, commands either memory map or copy into memory the RCS file if its size is less than the memory-limit, currently defaulting to ``unlimited''. otherwise (or if the initially-tried speedy ways fail), the commands fall back to using standard i/o routines. you can adjust the memory limit by setting RCS_MEM_LIMIT to a numeric value lim (measured in kilobytes). an empty value is silently ignored. as a side effect, specifying RCS_MEM_LIMIT inhibits fall-back to slower routines. so like, choose wisely bestie ⚑
  • TMPDIR β€” name of the temporary directory. if not set, the environment variables TMP and TEMP are inspected instead and the first value found is taken; if none of them are set, a host-dependent default is used, typically /tmp. the classic "who's gonna provide the temp dir" chain of command 🏠

πŸ’œ DIAGNOSTICS πŸ’œ

exit status is 0 for no overlaps, 1 for some overlaps, 2 for trouble. so like:

  • 0 β€” clean merge, no drama, we love to see it πŸ’–
  • 1 β€” some overlaps happened, slight chaos, still fine 🌸
  • 2 β€” trouble. actual trouble. 😭

πŸ‘‘ IDENTIFICATION πŸ‘‘

  • Author: Walter F. Tichy.
  • Manual Page Revision: 5.10.1; Release Date: 2024-10-01.
  • Copyright Β© 2010-2022 Thien-Thi Nguyen.
  • Copyright Β© 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
  • Copyright Β© 1982, 1988, 1989 Walter F. Tichy.

⭐ SEE ALSO ⭐

ci(1), co(1), ident(1), merge(1), rcs(1), rcsdiff(1), rlog(1), rcsfile(5).

Walter F. Tichy, RCS--A System for Version Control, Software--Practice & Experience 15, 7 (July 1985), 637-654.

the full documentation for RCS is maintained as a Texinfo manual. if the info(1) and RCS programs are properly installed at your site, the command

info rcs

should give you access to the complete manual. additionally, the RCS homepage:

http://www.gnu.org/software/rcs/

has news and links to the latest release, development site, etc. go click around, it's giving ✨ resources ✨


and that's the whole page bestie!! this cutie is from GNU RCS 5.10.1, dated 2024-10-01 β€” go merge some revisions and slay πŸ’…βœ¨πŸ’–

πŸ“¦ where this page comes from