GITCVS−MIGRATION - Online Linux Manual PageSection : 7
Updated : 2023−03−13
Source : Git 2​.40​.0
Note : Git Manual

NAMEgitcvs-migration − Git for CVS users

SYNOPSISgit cvsimport *

DESCRIPTIONGit differs from CVS in that every working tree contains a repository with a full copy of the project history, and no repository is inherently more important than any other​. However, you can emulate the CVS model by designating a single shared repository which people can synchronize with; this document explains how to do that​. Some basic familiarity with Git is required​. Having gone through gittutorial(7) and gitglossary(7) should be sufficient​.

DEVELOPING AGAINST A SHARED REPOSITORYSuppose a shared repository is set up in /pub/repo​.git on the host foo​.com​. Then as an individual committer you can clone the shared repository over ssh with: $ git clone foo​.com:/pub/repo​.git/ my−project $ cd my−projectand hack away​. The equivalent of cvs update is $ git pull originwhich merges in any work that others might have done since the clone operation​. If there are uncommitted changes in your working tree, commit them first before running git pull​. .it 1 an-trap
Note ¶.br The pull command knows where to get updates from because of certain configuration variables that were set by the first git clone command; see git config −l and the git-config(1) man page for details​.
You can update the shared repository with your changes by first committing your changes, and then using the git push command: $ git push origin masterto "push" those commits to the shared repository​. If someone else has updated the repository more recently, git push, like cvs commit, will complain, in which case you must pull any changes before attempting the push again​. In the git push command above we specify the name of the remote branch to update (master)​. If we leave that out, git push tries to update any branches in the remote repository that have the same name as a branch in the local repository​. So the last push can be done with either of: $ git push origin $ git push foo​.com:/pub/project​.git/as long as the shared repository does not have any branches other than master​.

SETTING UP A SHARED REPOSITORYWe assume you have already created a Git repository for your project, possibly created from scratch or from a tarball (see gittutorial(7)), or imported from an already existing CVS repository (see the next section)​. Assume your existing repo is at /home/alice/myproject​. Create a new "bare" repository (a repository without a working tree) and fetch your project into it: $ mkdir /pub/my−repo​.git $ cd /pub/my−repo​.git $ git −−bare init −−shared $ git −−bare fetch /home/alice/myproject master:masterNext, give every team member read/write access to this repository​. One easy way to do this is to give all the team members ssh access to the machine where the repository is hosted​. If you dont want to give them a full shell on the machine, there is a restricted shell which only allows users to do Git pushes and pulls; see git-shell(1)​. Put all the committers in the same group, and make the repository writable by that group: $ chgrp −R $group /pub/my−repo​.gitMake sure committers have a umask of at most 027, so that the directories they create are writable and searchable by other group members​.

IMPORTING A CVS ARCHIVE.it 1 an-trap
Note ¶.br These instructions use the git−cvsimport script which ships with git, but other importers may provide better results​. See the note in git-cvsimport(1) for other options​.
First, install version 2​.1 or higher of cvsps from https://github​.com/andreyvit/cvsps and make sure it is in your path​. Then cd to a checked out CVS working directory of the project you are interested in and run git-cvsimport(1): $ git cvsimport −C <destination> <module>This puts a Git archive of the named CVS module in the directory <destination>, which will be created if necessary​. The import checks out from CVS every revision of every file​. Reportedly cvsimport can average some twenty revisions per second, so for a medium−sized project this should not take more than a couple of minutes​. Larger projects or remote repositories may take longer​. The main trunk is stored in the Git branch named origin, and additional CVS branches are stored in Git branches with the same names​. The most recent version of the main trunk is also left checked out on the master branch, so you can start adding your own changes right away​. The import is incremental, so if you call it again next month it will fetch any CVS updates that have been made in the meantime​. For this to work, you must not modify the imported branches; instead, create new branches for your own changes, and merge in the imported branches as necessary​. If you want a shared repository, you will need to make a bare clone of the imported directory, as described above​. Then treat the imported directory as another development clone for purposes of merging incremental imports​.

ADVANCED SHARED REPOSITORY MANAGEMENTGit allows you to specify scripts called "hooks" to be run at certain points​. You can use these, for example, to send all commits to the shared repository to a mailing list​. See githooks(5)​. You can enforce finer grained permissions using update hooks​. See Controlling access to branches using update hooks[1]​.

PROVIDING CVS ACCESS TO A GIT REPOSITORYIt is also possible to provide true CVS access to a Git repository, so that developers can still use CVS; see git-cvsserver(1) for details​.

ALTERNATIVE DEVELOPMENT MODELSCVS users are accustomed to giving a group of developers commit access to a common repository​. As weve seen, this is also possible with Git​. However, the distributed nature of Git allows other development models, and you may want to first consider whether one of them might be a better fit for your project​. For example, you can choose a single person to maintain the projects primary public repository​. Other developers then clone this repository and each work in their own clone​. When they have a series of changes that theyre happy with, they ask the maintainer to pull from the branch containing the changes​. The maintainer reviews their changes and pulls them into the primary repository, which other developers pull from as necessary to stay coordinated​. The Linux kernel and other projects use variants of this model​. With a small group, developers may just pull changes from each others repositories without the need for a central maintainer​.

SEE ALSOgittutorial(7), gittutorial-2(7), gitcore-tutorial(7), gitglossary(7), giteveryday(7), The Git Users Manual[2]

GITPart of the git(1) suite

NOTES 1. Controlling access to branches using update hooks ­file:///usr/share/doc/git/howto/update-hook-example.html 2. The Git Users Manual ­file:///usr/share/doc/git/user-manual.html
0
Johanes Gumabo
Data Size   :   18,739 byte
man-gitcvs-migration.7Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 202,874
Visitor ID   :     :  
Visitor IP   :   3.22.130.228   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.

ERROR : Need New Coding :         (parse_manual_page_|249|gitcvs-migration.7|74|it|.it 1 an-trap )         (parse_manual_page_|249|gitcvs-migration.7|154|it|.it 1 an-trap )