β β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ FRESH PREMIUM PROXIES :
T.me/UndercodeTesting
144.91.100.154 3129 1 hour ago
4191 ms 9% (58) de Germany - Nuremberg Elite -
150.129.52.74 6666 1 hour ago
4059 ms 17% (49) in India - Bardoli Elite -
172.254.124.231 3128 1 hour ago
1102 ms 20% (56) us United States - New York Elite -
180.252.181.2 80 1 hour ago
977 ms 77% (38) id Indonesia - Samarinda Elite -
185.21.217.8 3128 1 hour ago
459 ms 11% (58) au Australia - Sinnamon Park Elite -
46.0.203.186 8080 1 hour ago
3756 ms 7% (61) ru Russia - Samara Elite -
50.246.120.125 8080 1 hour ago
3944 ms 15% (49) us United States - Woodbridge Elite -
103.216.82.43 6666 1 hour ago
4143 ms 7% (64) in India - Ahmedabad Elite -
123.163.122.117 9999 1 hour ago
1894 ms 5% (45) cn China - Beijing Elite -
123.194.231.55 80 1 hour ago
1015 ms 26% (58) tw Taiwan - Taipei Elite -
125.59.223.27 8380 1 hour ago
891 ms 49% (45) hk Hong Kong Elite -
129.28.183.30 8118 1 hour ago
2446 ms 7% (65) cn China Elite -
47.244.126.160 8081 1 hour ago
745 ms 37% (47) cn China Elite -
27.116.51.186 6666 1 hour ago
3477 ms 9% (56) in India - Gandhinagar Elite -
169.57.157.148 80 1 hour ago
532 ms 92% (36) br Brazil - SΓ£o Paulo Elite -
173.192.128.238 9999 1 hour ago
304 ms 98% (37) us United States - Seattle Elite -
157.119.207.36 6666 1 hour ago
4649 ms 7% (44) in India - Satara Elite -
180.252.181.3 80 1 hour ago
1006 ms 78% (35) id Indonesia - Samarinda Elite -
18.163.28.22 1080 1 hour ago
1951 ms 66% (43) hk Hong Kong Elite -
188.120.232.181 8118 1 hour ago
840 ms 24% (38) ru Russia Elite -
115.223.2.114 80 1 hour ago
1097 ms 64% (44) cn China - Wuhan Elite -
122.226.57.70 8888 1 hour ago
1072 ms 74% (41) cn China Elite -
118.24.128.46 1080 1 hour ago
3611 ms 15% (40) cn China Elite -
144.76.214.155 1080 1 hour ago
1855 ms 47% (43) de Germany Elite -
159.138.20.247 443 1 hour ago
2695 ms 36% (50) hk Hong Kong Elite -
80.187.140.26 80 1 hour ago
743 ms 97% (32) de Germany Elite -
78.46.40.154 8118 1 hour ago
928 ms 4% (52) de Germany - Nuremberg Elite -
91.205.174.26 80 1 hour ago
679 ms 100% (51) de Germany - Munich Elite -
91.226.212.133 1182 1 hour ago
657 ms 5% (47) ua Ukraine Elite -
91.207.60.241 1182 1 hour ago
616 ms 2% (55) ua Ukraine Elite -
83.168.86.1 8090 1 hour ago
2736 ms 7% (59) pl Poland - Lobez Elite -
94.130.179.24 8023 1 hour ago
2017 ms 13% (41) de Germany Elite -
85.10.219.99 1080 1 hour ago
3553 ms 54% (50) de Germany Elite -
89.223.80.30 8080 1 hour ago
3372 ms 28% (47) ru Russia - St Petersburg Elite -
91.203.176.204 8080 1 hour ago
4789 ms 6% (58) ru Russia - Smolensk Elite -
β β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ FRESH PREMIUM PROXIES :
T.me/UndercodeTesting
144.91.100.154 3129 1 hour ago
4191 ms 9% (58) de Germany - Nuremberg Elite -
150.129.52.74 6666 1 hour ago
4059 ms 17% (49) in India - Bardoli Elite -
172.254.124.231 3128 1 hour ago
1102 ms 20% (56) us United States - New York Elite -
180.252.181.2 80 1 hour ago
977 ms 77% (38) id Indonesia - Samarinda Elite -
185.21.217.8 3128 1 hour ago
459 ms 11% (58) au Australia - Sinnamon Park Elite -
46.0.203.186 8080 1 hour ago
3756 ms 7% (61) ru Russia - Samara Elite -
50.246.120.125 8080 1 hour ago
3944 ms 15% (49) us United States - Woodbridge Elite -
103.216.82.43 6666 1 hour ago
4143 ms 7% (64) in India - Ahmedabad Elite -
123.163.122.117 9999 1 hour ago
1894 ms 5% (45) cn China - Beijing Elite -
123.194.231.55 80 1 hour ago
1015 ms 26% (58) tw Taiwan - Taipei Elite -
125.59.223.27 8380 1 hour ago
891 ms 49% (45) hk Hong Kong Elite -
129.28.183.30 8118 1 hour ago
2446 ms 7% (65) cn China Elite -
47.244.126.160 8081 1 hour ago
745 ms 37% (47) cn China Elite -
27.116.51.186 6666 1 hour ago
3477 ms 9% (56) in India - Gandhinagar Elite -
169.57.157.148 80 1 hour ago
532 ms 92% (36) br Brazil - SΓ£o Paulo Elite -
173.192.128.238 9999 1 hour ago
304 ms 98% (37) us United States - Seattle Elite -
157.119.207.36 6666 1 hour ago
4649 ms 7% (44) in India - Satara Elite -
180.252.181.3 80 1 hour ago
1006 ms 78% (35) id Indonesia - Samarinda Elite -
18.163.28.22 1080 1 hour ago
1951 ms 66% (43) hk Hong Kong Elite -
188.120.232.181 8118 1 hour ago
840 ms 24% (38) ru Russia Elite -
115.223.2.114 80 1 hour ago
1097 ms 64% (44) cn China - Wuhan Elite -
122.226.57.70 8888 1 hour ago
1072 ms 74% (41) cn China Elite -
118.24.128.46 1080 1 hour ago
3611 ms 15% (40) cn China Elite -
144.76.214.155 1080 1 hour ago
1855 ms 47% (43) de Germany Elite -
159.138.20.247 443 1 hour ago
2695 ms 36% (50) hk Hong Kong Elite -
80.187.140.26 80 1 hour ago
743 ms 97% (32) de Germany Elite -
78.46.40.154 8118 1 hour ago
928 ms 4% (52) de Germany - Nuremberg Elite -
91.205.174.26 80 1 hour ago
679 ms 100% (51) de Germany - Munich Elite -
91.226.212.133 1182 1 hour ago
657 ms 5% (47) ua Ukraine Elite -
91.207.60.241 1182 1 hour ago
616 ms 2% (55) ua Ukraine Elite -
83.168.86.1 8090 1 hour ago
2736 ms 7% (59) pl Poland - Lobez Elite -
94.130.179.24 8023 1 hour ago
2017 ms 13% (41) de Germany Elite -
85.10.219.99 1080 1 hour ago
3553 ms 54% (50) de Germany Elite -
89.223.80.30 8080 1 hour ago
3372 ms 28% (47) ru Russia - St Petersburg Elite -
91.203.176.204 8080 1 hour ago
4789 ms 6% (58) ru Russia - Smolensk Elite -
β β β ο½ππ»βΊπ«Δπ¬πβ β β β
β β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦CONTENT :
1) CVS environment settings
2) Log in to the CVS server:γ
3) cvs command format
4) CVS Daily use of
5) other common commands
6) CVS macro / keyword
7) CVS branch management
8) CVS server installation and configuration
9) Watchers
10) WinCVS installation and configuration
11) CVSWEB installation
π¦CONTENT :
1) CVS environment settings
2) Log in to the CVS server:γ
3) cvs command format
4) CVS Daily use of
5) other common commands
6) CVS macro / keyword
7) CVS branch management
8) CVS server installation and configuration
9) Watchers
10) WinCVS installation and configuration
11) CVSWEB installation
π¦WHAT IS CVS ?
CVS is a parallel version control system, it uses C / S mode, it The complexity and functionality are moderate and are the most popular version control system today. It has two basic features:
* Save modification records: save the modification history of all files, and can establish branches
* Collaboration and parallelism: cvs is not recommended to use the serial working mode of lock-modify-unlock, but multiplayer You can modify the same file in parallel, and merge conflict when you commit; it is more suitable for large work groups.
The advantages of using CVS:
* Centralized file management, everyone can easily see the latest files of all personnel, standardized file management
* Can view any previous version or revision history
* Can maintain multiple versions and branch
CVS is a parallel version control system, it uses C / S mode, it The complexity and functionality are moderate and are the most popular version control system today. It has two basic features:
* Save modification records: save the modification history of all files, and can establish branches
* Collaboration and parallelism: cvs is not recommended to use the serial working mode of lock-modify-unlock, but multiplayer You can modify the same file in parallel, and merge conflict when you commit; it is more suitable for large work groups.
The advantages of using CVS:
* Centralized file management, everyone can easily see the latest files of all personnel, standardized file management
* Can view any previous version or revision history
* Can maintain multiple versions and branch
π¦ CVS environment at the same time Settings
========================================
First of all, regardless of the configuration of the CVS server, let βs assume that there is already a configuration Good server, to access CVS, you must first set the environment variable CVSROOT
CVSROOT =: pserver: user @ server # port: / path / to / cvsroot
* pserver is the access method, meaning password authentication, which is the most commonly used method, other There are also gserver, kserver, ext
* user is the user name of the CVS server,
* server is the name or IP address of the CVS server
* / path / to / cvsroot is the CVSROOT directory of your CVS server, modify it according to your CVS server settings Or ask the administrator
You can put the settings in your shell's profile (.bash_profile, .profile, etc.) so that you don't have to type a long list of commands at a time.
> Advanced function: Now it is more popular to use ssh to encrypt passwords and data streams.
CVSROOT =: ext : user @ server # port: / path / to / cvsroot
CVS_RSH = ssh
hints:
> Actually, there is no CVSROOT, you can use cvs -d: pserver: user @ server # port: / path / to / cvsroot to access each time , And it will ignore the CVSROOT environment variable, maybe you will laugh at me as a madman, but cvs can put the command parameters used each time in a file, so add
cvs -d: pserver to ~ / .cvsrc : user @ server # port: / path / to / cvsroot
, its biggest advantage is that the modification will take effect immediately, and its priority is higher than the CVSROOT environment variable. Do nβt ask me silly by the time, my environment variable It doesn't work anymore.
========================================
First of all, regardless of the configuration of the CVS server, let βs assume that there is already a configuration Good server, to access CVS, you must first set the environment variable CVSROOT
CVSROOT =: pserver: user @ server # port: / path / to / cvsroot
* pserver is the access method, meaning password authentication, which is the most commonly used method, other There are also gserver, kserver, ext
* user is the user name of the CVS server,
* server is the name or IP address of the CVS server
* / path / to / cvsroot is the CVSROOT directory of your CVS server, modify it according to your CVS server settings Or ask the administrator
You can put the settings in your shell's profile (.bash_profile, .profile, etc.) so that you don't have to type a long list of commands at a time.
> Advanced function: Now it is more popular to use ssh to encrypt passwords and data streams.
CVSROOT =: ext : user @ server # port: / path / to / cvsroot
CVS_RSH = ssh
hints:
> Actually, there is no CVSROOT, you can use cvs -d: pserver: user @ server # port: / path / to / cvsroot to access each time , And it will ignore the CVSROOT environment variable, maybe you will laugh at me as a madman, but cvs can put the command parameters used each time in a file, so add
cvs -d: pserver to ~ / .cvsrc : user @ server # port: / path / to / cvsroot
, its biggest advantage is that the modification will take effect immediately, and its priority is higher than the CVSROOT environment variable. Do nβt ask me silly by the time, my environment variable It doesn't work anymore.
π¦ Log in to the CVS server:γ
==================================
$ cvs login, at this time cvs will ask you for your password, Please type in your password on the CVS server.
If there is no error message, congratulations, you succeeded!
After successful login, a ~ / .cvspass file will be created to save your password and you will not need to enter the password in the future.
==================================
$ cvs login, at this time cvs will ask you for your password, Please type in your password on the CVS server.
If there is no error message, congratulations, you succeeded!
After successful login, a ~ / .cvspass file will be created to save your password and you will not need to enter the password in the future.
π¦ cvs command format
==================================
cvs [global_opts] command [command_opts] [command_args]
Global options belong to the left cvs, are global
command_opts belong to the left command, are partial
cvs --help-commands view the command list
cvs -H command / cvs -help command view this Command options
hints: If you use some commands with the same parameters each time, you can put them in the ~ / .cvsrc file to
update -c
diff -c
add -kb
cvs -Q
==================================
cvs [global_opts] command [command_opts] [command_args]
Global options belong to the left cvs, are global
command_opts belong to the left command, are partial
cvs --help-commands view the command list
cvs -H command / cvs -help command view this Command options
hints: If you use some commands with the same parameters each time, you can put them in the ~ / .cvsrc file to
update -c
diff -c
add -kb
cvs -Q
π¦ cvs global-option comand comand-
The daily use of option arguments CVS
==================================
CVS usage process
a checkout if there is no working locally When
copying , use b staus to check whether there is a new version of
c update on the server. If so, use update to synchronize file
d to make your own modifications, and ensure correct
e update to see if someone has modified your file
f. If there is a conflict, merge conflict
g commit Submit your changes. If someone fails to commit the changes, go back to step e and step
b.
The daily use of option arguments CVS
==================================
CVS usage process
a checkout if there is no working locally When
copying , use b staus to check whether there is a new version of
c update on the server. If so, use update to synchronize file
d to make your own modifications, and ensure correct
e update to see if someone has modified your file
f. If there is a conflict, merge conflict
g commit Submit your changes. If someone fails to commit the changes, go back to step e and step
b.
π¦ 1 cvs checkout module_name
-------------------------------------
module_name can be temporarily understood as the directory name, it The module_name directory will be created in the local but former directory, and the files under the module_name directory on the server will be copied to the local module_name directory.
Note: After the first checkout, instead of synchronizing files through cvs checkout, you need to enter the directory to synchronize the version of specific files (add, modify, delete).
-------------------------------------
module_name can be temporarily understood as the directory name, it The module_name directory will be created in the local but former directory, and the files under the module_name directory on the server will be copied to the local module_name directory.
Note: After the first checkout, instead of synchronizing files through cvs checkout, you need to enter the directory to synchronize the version of specific files (add, modify, delete).
π¦ 2 cvs update filename
-------------------------------------
> sync the file to the latest version: no Specify the file name, cvs will synchronize the files in all subdirectories.
> It is best to do it every day before starting work or before importing your work into the CVS library, and develop the habit of "synchronizing before modifying".
> Unlike Virvual SourceSafe, there is no concept of file locking in CVS, all conflict It is resolved before the commit. If someone else modifies and commits to the CVS library during the modification process, CVS will notify you of the file conflict
<<<<<<<< filename
content on your file
=======
server The content of the above file
>>>>>>>> latest revision number in the repository
> You confirm the choice of conflicting content. It can also be resolved through negotiation by multiple people. After the modification is completed, the conflict flag
conflict in the file is removed
-------------------------------------
> sync the file to the latest version: no Specify the file name, cvs will synchronize the files in all subdirectories.
> It is best to do it every day before starting work or before importing your work into the CVS library, and develop the habit of "synchronizing before modifying".
> Unlike Virvual SourceSafe, there is no concept of file locking in CVS, all conflict It is resolved before the commit. If someone else modifies and commits to the CVS library during the modification process, CVS will notify you of the file conflict
<<<<<<<< filename
content on your file
=======
server The content of the above file
>>>>>>>> latest revision number in the repository
> You confirm the choice of conflicting content. It can also be resolved through negotiation by multiple people. After the modification is completed, the conflict flag
conflict in the file is removed
π¦ 3 cvs commit -m "write some comments here" file_name
------------------------------------
> Confirm the modification Write to the CVS library.
> Note: Many actions of CVS are finally confirmed and modified by cvs commit, it is best to modify only one file at a time. Before confirming, users also need to fill in the modification notes to help other developers understand the reason for the modification. If you do not write -m "comments" and directly confirm
> The quality of comments is important: so not only must you write, but you must write something more meaningful: to facilitate other developers to understand
bad comments well, it is difficult for other developers to quickly understand: for example: -m "bug fixed" or even -m "" a
good comment, even in Chinese: -m "Email address verification added during user registration"
> Modify a version comment: only confirm one file to the CVS library at a time It is a good habit, but it is inevitable that sometimes you forget to specify the file name and commit multiple files to the CVS library with the same comment. The following command allows you to modify the comment of a certain version of a file:
cvs admin- m 1.3: "write some comments here" file_name
------------------------------------
> Confirm the modification Write to the CVS library.
> Note: Many actions of CVS are finally confirmed and modified by cvs commit, it is best to modify only one file at a time. Before confirming, users also need to fill in the modification notes to help other developers understand the reason for the modification. If you do not write -m "comments" and directly confirm
cvs commit file_name, cvs will automatically call the system's default text editor (usually vi) to ask you to write comments.> The quality of comments is important: so not only must you write, but you must write something more meaningful: to facilitate other developers to understand
bad comments well, it is difficult for other developers to quickly understand: for example: -m "bug fixed" or even -m "" a
good comment, even in Chinese: -m "Email address verification added during user registration"
> Modify a version comment: only confirm one file to the CVS library at a time It is a good habit, but it is inevitable that sometimes you forget to specify the file name and commit multiple files to the CVS library with the same comment. The following command allows you to modify the comment of a certain version of a file:
cvs admin- m 1.3: "write some comments here" file_name
π¦ 4 View status
------------------------------------
cvs status filename
status report, similar to this:
File: foo.c Status: Up-to-date
Working revision: 1.1.1.1 'Some Date'
Repository revision: 1.2 /home/cvsroot/cvstest/foo.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
> The most important thing here is the Status column. There may be four states in total:
Up-to-date: Indicates that the file you want to get is the latest.
Locally Modified: Indicates that you have modified the file but have not yet submitted it. Your version is newer than the one in the repository.
> Needing Patch: Indicates that a buddy has modified the file and has submitted it! Your version is older than the one in the warehouse.
Needs Merge: Indicates that you have modified the file, but an unintelligible person also modified the file, and also submitted it!
π¦ View the modification history and comment information
--------------- ---------------------
cvs log file_name
other commonly used commands
------------------------------------
cvs status filename
status report, similar to this:
File: foo.c Status: Up-to-date
Working revision: 1.1.1.1 'Some Date'
Repository revision: 1.2 /home/cvsroot/cvstest/foo.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
> The most important thing here is the Status column. There may be four states in total:
Up-to-date: Indicates that the file you want to get is the latest.
Locally Modified: Indicates that you have modified the file but have not yet submitted it. Your version is newer than the one in the repository.
> Needing Patch: Indicates that a buddy has modified the file and has submitted it! Your version is older than the one in the warehouse.
Needs Merge: Indicates that you have modified the file, but an unintelligible person also modified the file, and also submitted it!
π¦ View the modification history and comment information
--------------- ---------------------
cvs log file_name
other commonly used commands
π¦ 1 Add files and directories
---------------------------------- -
cvs add new_file_name
cvs add -kb new_file_name
cvs add dir_name
CVS generally only handles text files, it will expand the keyword (macro) and convert line endings.
For pictures, Word documents and other non-plain text items, you need to use the cvs add -kb option. Otherwise, there may be a situation where the file is damaged.
Then confirm the modification and comment
cvs ci -m "write some comments here" new_file_name
---------------------------------- -
cvs add new_file_name
cvs add -kb new_file_name
cvs add dir_name
CVS generally only handles text files, it will expand the keyword (macro) and convert line endings.
For pictures, Word documents and other non-plain text items, you need to use the cvs add -kb option. Otherwise, there may be a situation where the file is damaged.
Then confirm the modification and comment
cvs ci -m "write some comments here" new_file_name
π¦ 2 Delete the file
---------------------- --------------
After physically deleting a source file,
cvs remove file_name
and then confirm the modification and comment
cvs ci -m "write some comments here" file_name
Note: Many cvs commands have abbreviated forms οΌ Commit => ci; update => up; checkout => co; remove => rm;
3. Modify the file name
------------------------ ------------
Move files:
There is no cvs move or cvs rename in the file rename cvs, because these two operations are first cvs remove old_file_name, and then cvs add new_file_name.
4 directory structure synchronization
------------------------------------
If someone adds a new file or directory after you checkout , You need to take them out
cvs update -d
---------------------- --------------
After physically deleting a source file,
cvs remove file_name
and then confirm the modification and comment
cvs ci -m "write some comments here" file_name
Note: Many cvs commands have abbreviated forms οΌ Commit => ci; update => up; checkout => co; remove => rm;
3. Modify the file name
------------------------ ------------
Move files:
There is no cvs move or cvs rename in the file rename cvs, because these two operations are first cvs remove old_file_name, and then cvs add new_file_name.
4 directory structure synchronization
------------------------------------
If someone adds a new file or directory after you checkout , You need to take them out
cvs update -d
π¦ 5 Abandon local modification (undo)
------------------------------- -----
If the local file is modified, do not want to submit, and want to retake the new file
cvs update -C filename
It will first rename your local file.
Suggestion: It is recommended that you default the checkout file to readonly, put "cvs" -r "is added to the ~ / .cvsrc file. In
this way, each time you modify a file, cvs edit filename, and the file becomes readonly after submission.
If you want to give up local modification, cvs unedit filename, it will undo And the file becomes readonly
------------------------------- -----
If the local file is modified, do not want to submit, and want to retake the new file
cvs update -C filename
It will first rename your local file.
Suggestion: It is recommended that you default the checkout file to readonly, put "cvs" -r "is added to the ~ / .cvsrc file. In
this way, each time you modify a file, cvs edit filename, and the file becomes readonly after submission.
If you want to give up local modification, cvs unedit filename, it will undo And the file becomes readonly
π¦ 6 and revert to the old version
------------------------------------
cvs update -j1.20 -j1.15 ββfilenames
1.20 current version number, pay attention not to reverse the order, remember to commit, in order to ensure the previous version number, it is best to lock
attention: cvs update -r1.15 file.name -r version number is not here meant, is to add a file called sticky 1.15 a tag
if you accidentally addition STICK TAG has been the case With cvs update -A solve
------------------------------------
cvs update -j1.20 -j1.15 ββfilenames
1.20 current version number, pay attention not to reverse the order, remember to commit, in order to ensure the previous version number, it is best to lock
attention: cvs update -r1.15 file.name -r version number is not here meant, is to add a file called sticky 1.15 a tag
if you accidentally addition STICK TAG has been the case With cvs update -A solve
π¦ 7 file comparison
------------------------------------
cvs diff -c filename
cvs diff -c -r1.8- r 1.5 filename
8 Lock and unlock files
------------------------------------
To ensure serial modification Files, or modify two
cvs admin -l files
cvs admin -u files
π¦If you just use cvs in general, here it is So far it is enough. 20% of the functions of a system can often meet 80% of the needs, and CVS is no exception. The following are the most commonly used functions of CVS. You may not use 10% of all its command options. For more functions, please apply in practice. Experience in the process, how much should be used in the learning process, how much to learn, it is not too late to learn.
------------------------------------
cvs diff -c filename
cvs diff -c -r1.8- r 1.5 filename
8 Lock and unlock files
------------------------------------
To ensure serial modification Files, or modify two
cvs admin -l files
cvs admin -u files
π¦If you just use cvs in general, here it is So far it is enough. 20% of the functions of a system can often meet 80% of the needs, and CVS is no exception. The following are the most commonly used functions of CVS. You may not use 10% of all its command options. For more functions, please apply in practice. Experience in the process, how much should be used in the learning process, how much to learn, it is not too late to learn.
π¦ CVS macro / keyword
====================== ============
CVS will replace the file with a keyword (macro) by default. It is a good working habit to add these keywords to the file.
$ Id $ The keyword is to use the file name, version, and time. , The author and the nature of the code replacement, if you use the -l option to take it out, after Exp
The login user name will be added. In addition to the $ Id $ keyword, RCS also supports the following commonly used keywords:
$ Log $: the change log information you provide.
$ Author $: The author who deposited this version.
$ Locker $: The locker of this version
$ State $: The state of this version Exp (trial version), Stabe (stable version), Rel (release version). The default is Exp
$ Date $: the time this version is saved , Using UTC time format.
$ Revision $: The version number of the version
$ RCSfile $: RCS file name
$ Source $: RCS full path name
$ Name $: Symbol name to retrieve this version
$ Header $: Equivalent to $ Source $$ Revision $$ Date $ The combination of $ Author $$ State $$ Locker $
====================== ============
CVS will replace the file with a keyword (macro) by default. It is a good working habit to add these keywords to the file.
$ Id $ The keyword is to use the file name, version, and time. , The author and the nature of the code replacement, if you use the -l option to take it out, after Exp
The login user name will be added. In addition to the $ Id $ keyword, RCS also supports the following commonly used keywords:
$ Log $: the change log information you provide.
$ Author $: The author who deposited this version.
$ Locker $: The locker of this version
$ State $: The state of this version Exp (trial version), Stabe (stable version), Rel (release version). The default is Exp
$ Date $: the time this version is saved , Using UTC time format.
$ Revision $: The version number of the version
$ RCSfile $: RCS file name
$ Source $: RCS full path name
$ Name $: Symbol name to retrieve this version
$ Header $: Equivalent to $ Source $$ Revision $$ Date $ The combination of $ Author $$ State $$ Locker $
π¦ Sticky Tag
==================================
The role of tag It is a snapshot of multiple continuously changing files to represent all non-stop internal versions of a file at a certain time. Generally, it is a project to a certain stage. You can assign a stage milestone version number to all files uniformly, and you can export them at once Files with different versions. Another very important role of tags is to generate branches and merge branches.
1 cvs tag release_name module_name
----------------------- ------------- The
release_name should be concise and rich in meaning. It consists of a letter at the beginning, plus letters, numbers, underscores and hyphens, especially "."
2 cvs checkout -r release_name module_name
------------------------------------
Take out the tag_name flag file
3 cvs update -A
------------------------------------
The file identified by tag is a historical file and cannot be modified, This can remove this restriction locally and allow it to merge with the current version of
==================================
The role of tag It is a snapshot of multiple continuously changing files to represent all non-stop internal versions of a file at a certain time. Generally, it is a project to a certain stage. You can assign a stage milestone version number to all files uniformly, and you can export them at once Files with different versions. Another very important role of tags is to generate branches and merge branches.
1 cvs tag release_name module_name
----------------------- ------------- The
release_name should be concise and rich in meaning. It consists of a letter at the beginning, plus letters, numbers, underscores and hyphens, especially "."
2 cvs checkout -r release_name module_name
------------------------------------
Take out the tag_name flag file
3 cvs update -A
------------------------------------
The file identified by tag is a historical file and cannot be modified, This can remove this restriction locally and allow it to merge with the current version of
β β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ CVS branch management
=============================
CVS can save history Divided into multiple independent, parallel and non-influential branches, and to modify the history
1 Calibration milestone
----------------------------- -------
cvs tag release_1_0 prj_dir_name
2 Start a new milestone:
-------------------------------- ----
cvs commit -r 2
mark all files to start the development of 2.x
Note: There is no direct relationship between the recovery in CVS and the release version of the software package. However, the use of version numbers that are consistent with the published version of all files is helpful for maintenance.
3 Create a branch
------------------------------------
When developing the 2.x version of the project, it was found that 1.x had problems, but 2.x did not dare to use it, then export a branch from the previously marked milestone: release_1_0 release_1_0_b2
cvs rtag -b -r release_1_0 release_1_0_bugfixes prj_dir_name
-r What is released_1_0, -b is modified by release_1_0_bugfixes, the version number of cvs will become 4 digits, and each time it is branched in the future, the version number will increase by 2 digits.
4 branches parallel development
-------------- ----------------------
Some people first export the branch release_1_0_bugfixes in another directory: to solve the urgent problem in 1.0,
cvs checkout -r release_1_0_bugfixes
branch is OK Modified and automatically submitted to the branch
while other people are still developing the
5 tag branch on the main branch of the project 2.x
------------------------ ------------
After fixing the error on release_1_0_bugfixes, mark a 1.0 bug fix version number
cvs tag release_1_0_bugfixes_p1
6 Merge branch
----------------- -------------------
If you think 2.0 is also required to modify these errors in 2.0, can also be combined release_1_0_patch_1 at 2.0 development directory Change to the current code:
cvs update -j release_1_0_bugfixes
7 Merge the branch again
------------------------------------
If found again 1. x new bug, I have modified it in the branch and marked release_1_0_patch_2, we also hope to merge it to the trunk.
cvs update -j release_1_0_bugfixes_p1 -j release_1_0_bugfixes
It means to change release_1_0_bugfixes_p1 (tag) to release_1_0_bugfixes (branch) Part of
the previous file is merged into the current file (spine). Otherwise, the content of the previous merge will be re-merged with the 6-step method.
Note: At this time we use the result of step 5
: less frequent tagging, but at the same time, it cannot lead to tag flooding, tag In different branches, you can
lock the branch with the same name 8
------------------------------------
cvs admin -l r_0_2 lock r_0_2 branch
cvs admin -l lock main branch
9 set default branch
---------------------------------- -
cvs admin -b r_0_2 set r_0_2 default branch
cvs admin -b set the main branch
10 to delete the history
if the history file is too large, or to determine a stable version of several stages, we can remove some of the historical documents to Protect cvs performance
cvs admin -o rev1: rev2 filename delete the version from rev1 to rev2, including the two versions
cvs admin -o rev1 :: rev2 filename delete the version from rev1 to rev2, excluding the two versions.
If you omit rev1, it means deleting this branch All versions before rev2
If rev2 is omitted, it means that all versions of this branch after rev1 will be deleted.
cvs admin -o rev filename Delete the file of this version of rev.
Note: the version with tag cannot be deleted, so the tag is very important, and only a single one can be deleted. File
β β β ο½ππ»βΊπ«Δπ¬πβ β β β
π¦ CVS branch management
=============================
CVS can save history Divided into multiple independent, parallel and non-influential branches, and to modify the history
1 Calibration milestone
----------------------------- -------
cvs tag release_1_0 prj_dir_name
2 Start a new milestone:
-------------------------------- ----
cvs commit -r 2
mark all files to start the development of 2.x
Note: There is no direct relationship between the recovery in CVS and the release version of the software package. However, the use of version numbers that are consistent with the published version of all files is helpful for maintenance.
3 Create a branch
------------------------------------
When developing the 2.x version of the project, it was found that 1.x had problems, but 2.x did not dare to use it, then export a branch from the previously marked milestone: release_1_0 release_1_0_b2
cvs rtag -b -r release_1_0 release_1_0_bugfixes prj_dir_name
-r What is released_1_0, -b is modified by release_1_0_bugfixes, the version number of cvs will become 4 digits, and each time it is branched in the future, the version number will increase by 2 digits.
4 branches parallel development
-------------- ----------------------
Some people first export the branch release_1_0_bugfixes in another directory: to solve the urgent problem in 1.0,
cvs checkout -r release_1_0_bugfixes
branch is OK Modified and automatically submitted to the branch
while other people are still developing the
5 tag branch on the main branch of the project 2.x
------------------------ ------------
After fixing the error on release_1_0_bugfixes, mark a 1.0 bug fix version number
cvs tag release_1_0_bugfixes_p1
6 Merge branch
----------------- -------------------
If you think 2.0 is also required to modify these errors in 2.0, can also be combined release_1_0_patch_1 at 2.0 development directory Change to the current code:
cvs update -j release_1_0_bugfixes
7 Merge the branch again
------------------------------------
If found again 1. x new bug, I have modified it in the branch and marked release_1_0_patch_2, we also hope to merge it to the trunk.
cvs update -j release_1_0_bugfixes_p1 -j release_1_0_bugfixes
It means to change release_1_0_bugfixes_p1 (tag) to release_1_0_bugfixes (branch) Part of
the previous file is merged into the current file (spine). Otherwise, the content of the previous merge will be re-merged with the 6-step method.
Note: At this time we use the result of step 5
: less frequent tagging, but at the same time, it cannot lead to tag flooding, tag In different branches, you can
lock the branch with the same name 8
------------------------------------
cvs admin -l r_0_2 lock r_0_2 branch
cvs admin -l lock main branch
9 set default branch
---------------------------------- -
cvs admin -b r_0_2 set r_0_2 default branch
cvs admin -b set the main branch
10 to delete the history
if the history file is too large, or to determine a stable version of several stages, we can remove some of the historical documents to Protect cvs performance
cvs admin -o rev1: rev2 filename delete the version from rev1 to rev2, including the two versions
cvs admin -o rev1 :: rev2 filename delete the version from rev1 to rev2, excluding the two versions.
If you omit rev1, it means deleting this branch All versions before rev2
If rev2 is omitted, it means that all versions of this branch after rev1 will be deleted.
cvs admin -o rev filename Delete the file of this version of rev.
Note: the version with tag cannot be deleted, so the tag is very important, and only a single one can be deleted. File
β β β ο½ππ»βΊπ«Δπ¬πβ β β β