Difference between revisions of "Version Control"

From Dreamwidth Notes
Jump to: navigation, search
(New page: == Checking out the code == == Working with bin/cvsreport.pl == == Displaying code changes == == Reverting changes == == Committing changes == Right now, only <ljuser>xb95</ljuser> ca...)
 
Line 1: Line 1:
 +
The Dreamwidth code uses a [[Mercurial]] repository.  However, it also uses code that uses different repository systems like [[subversion]].
 +
 
== Checking out the code ==
 
== Checking out the code ==
  
== Working with bin/cvsreport.pl ==
+
Get the bootstrap script that downloads all of the code:
 +
 
 +
wget http://hg.dwscoalition.org/dw-free/raw-file/e4be2e864b95/bin/bootstrap.pl
 +
 
 +
If your <code>$LJHOME</code> environment variable is set up (see [[Dreamwidth Scratch Installation]] for more information on this), run the script:
 +
 
 +
perl bootstrap.pl
 +
 
 +
Checking out all the various packages and repositories will take same time.  Afterwards, you can delete the bootstrap script:
 +
 
 +
rm bootstrap.pl
 +
 
 +
== Working with $LJHOME/bin/cvsreport.pl ==
 +
 
 +
The workhorse that ties all the version control systems of all the code bases together is <code>$LJHOME/bin/cvsreport.pl</code>.  With it, you can update to new versions and track changes.
 +
 
 +
Here is a list of the options that come up with <code>bin/cvsreport.pl -help</code>:
 +
 
 +
--help          Get this help
 +
--sync          Put files where they need to go.
 +
                All files, unless you specify which ones.
 +
--diff          Show diffs of changed files.
 +
--cvsonly      Don't consider files changed in live dirs.
 +
--liveonly      Don't consider files changed in the CVS dirs.
 +
--init          Copy all files from cvs to main, unconditionally.
 +
--update        Updates files in the CVS dirs from the cvs repositories.
 +
--justfiles -1  Only output files, not the old -> new arrow. (good for xargs)
 +
--livelist -ll  Output the list of all accounted-for files.
 +
--which        Output the source of the given file
 +
--these -t      Refuse to --sync if no files are specified.
 +
--map          Like --livelist and --which combined.
 +
--all          Overrides --these, allowing --sync to run with no args.
 +
--print-current-branches -pcb    Print repositories and their current branches
 +
--print-branches -pb    Print repositories and their branches.
 +
--print-repos -pr        Print repositories and their resource URLs.
 +
--print-vars -pv        Print configuration variables specified in .conf files.
 +
--no-space-changes -b    Do not display whitespace differences.
 +
 
 +
== Updating to the latest code ==
 +
 
 +
See the [[Dev Maintenance]] article for instructions on this.
  
 
== Displaying code changes ==
 
== Displaying code changes ==
 +
 +
This will show all the changes you've made to the code:
 +
 +
.$LJHOME/bin/cvsreport.pl -diff
 +
 +
You can make a patch by directing this output to a file (see [[Dev Patches]] for more information on patches):
 +
 +
.$LJHOME/bin/cvsreport.pl -diff > PATCHFILE.
  
 
== Reverting changes ==
 
== Reverting changes ==
 +
 +
There is unfortunately no <code>.$LJHOME/bin/cvsreport.pl -revert</code>. One way to revert changes is to delete the file with the changes from the live code and then run:
 +
 +
bin/cvsreport.pl -sync -cvsonly
  
 
== Committing changes ==
 
== Committing changes ==
Line 13: Line 67:
 
# Apply patch to live code
 
# Apply patch to live code
 
# Test the patch  
 
# Test the patch  
# Sync to the cvs copy of the code
+
# Sync to the cvs copy of the code:
 
# <code>hg diff</code> in the repository
 
# <code>hg diff</code> in the repository
 
# <code>hg commit</code>
 
# <code>hg commit</code>

Revision as of 17:44, 16 September 2008

The Dreamwidth code uses a Mercurial repository. However, it also uses code that uses different repository systems like subversion.

Checking out the code

Get the bootstrap script that downloads all of the code:

wget http://hg.dwscoalition.org/dw-free/raw-file/e4be2e864b95/bin/bootstrap.pl

If your $LJHOME environment variable is set up (see Dreamwidth Scratch Installation for more information on this), run the script:

perl bootstrap.pl

Checking out all the various packages and repositories will take same time. Afterwards, you can delete the bootstrap script:

rm bootstrap.pl

Working with $LJHOME/bin/cvsreport.pl

The workhorse that ties all the version control systems of all the code bases together is $LJHOME/bin/cvsreport.pl. With it, you can update to new versions and track changes.

Here is a list of the options that come up with bin/cvsreport.pl -help:

--help          Get this help
--sync          Put files where they need to go.
                All files, unless you specify which ones.
--diff          Show diffs of changed files.
--cvsonly       Don't consider files changed in live dirs.
--liveonly      Don't consider files changed in the CVS dirs.
--init          Copy all files from cvs to main, unconditionally.
--update        Updates files in the CVS dirs from the cvs repositories.
--justfiles -1  Only output files, not the old -> new arrow. (good for xargs)
--livelist -ll  Output the list of all accounted-for files.
--which         Output the source of the given file
--these -t      Refuse to --sync if no files are specified.
--map           Like --livelist and --which combined.
--all           Overrides --these, allowing --sync to run with no args.
--print-current-branches -pcb    Print repositories and their current branches
--print-branches -pb     Print repositories and their branches.
--print-repos -pr        Print repositories and their resource URLs.
--print-vars -pv         Print configuration variables specified in .conf files.
--no-space-changes -b    Do not display whitespace differences.

Updating to the latest code

See the Dev Maintenance article for instructions on this.

Displaying code changes

This will show all the changes you've made to the code:

.$LJHOME/bin/cvsreport.pl -diff

You can make a patch by directing this output to a file (see Dev Patches for more information on patches):

.$LJHOME/bin/cvsreport.pl -diff > PATCHFILE.

Reverting changes

There is unfortunately no .$LJHOME/bin/cvsreport.pl -revert. One way to revert changes is to delete the file with the changes from the live code and then run:

bin/cvsreport.pl -sync -cvsonly

Committing changes

Right now, only [info]xb95 can do this.

  1. Apply patch to live code
  2. Test the patch
  3. Sync to the cvs copy of the code:
  4. hg diff in the repository
  5. hg commit
  6. hg push