In CVS (Concurrent Versions System), sharing common code between two different projects can be achieved using modules, symbolic links, or branching and merging. Below are some methods to accomplish this:
Methods to Share Common Code Between Two CVS Projects
1. Using CVS Modules File (Best Practice for Common Code)
The modules file in CVS allows you to define virtual modules that can include multiple directories or files from different locations in the repository.
How to Use Modules File:
- Edit the
CVSROOT/modulesfile.cd /path/to/CVSROOT vi modules - Add an entry to combine multiple directories under a common virtual module.
shared_lib -a project1/common_lib project2/common_libshared_libis the virtual module name.project1/common_libandproject2/common_libare the directories containing the shared code.
- Check out the new virtual module:
cvs checkout shared_lib
Advantages:
- Easy to manage shared code between projects.
- Changes to the shared module reflect in both projects.
Disadvantages:
- Complex if there are too many shared directories.
- Requires manual updates to the
modulesfile.
2. Using Symbolic Links (on the Server-Side)
You can create symbolic links (symlinks) on the CVS server to share directories or files between multiple projects.
How to Create Symbolic Links:
- Go to the CVS repository directory on the server.
Example:/cvsroot/project1and/cvsroot/project2. - Create a symbolic link from the common directory:
ln -s /cvsroot/project1/common_lib /cvsroot/project2/common_lib - When users check out
project2, they will see thecommon_libdirectory linked fromproject1.
Advantages:
- Simple to implement on Unix-based systems.
- Changes to the shared directory are automatically reflected.
Disadvantages:
- Not portable on Windows-based CVS servers.
- Symbolic links are not visible in CVS client history or commands.
3. Branching and Merging for Shared Code
You can maintain shared code on a separate branch and merge it into both projects when necessary.
How to Use Branching and Merging:
- Create a branch for the shared code:
cvs tag -b shared_branch project1/common_lib - Merge the branch into
project1andproject2periodically:cvs update -j shared_branch - Commit the merged changes:
cvs commit -m "Merged shared_branch into project1"
Advantages:
- Provides better control over when shared code is updated.
- Suitable for large projects with independent development cycles.
Disadvantages:
- Requires manual merging and conflict resolution.
- More complex workflow for teams unfamiliar with branching.
4. External Scripts for Code Synchronization
Write custom scripts to copy or sync shared code between projects at regular intervals.
Example Script (Shell):
#!/bin/bash
rsync -av /path/to/project1/common_lib /path/to/project2/common_lib
Code language: JavaScript (javascript)
Run this script after updates to keep the shared code in sync.
Advantages:
- Simple to automate.
- Ensures both projects always have the latest shared code.
Disadvantages:
- Not integrated with CVS.
- No version history in the second project.
Which Method Should You Choose?
- Modules File: Best for combining existing repositories into a single shared module.
- Symbolic Links: Ideal for Unix-based CVS servers with simple sharing requirements.
- Branching and Merging: Best for large projects with controlled updates to shared code.
- Scripts: Useful for automation and synchronization in specific environments.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals