X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=doc%2FGIT-FOR-SBCL-HACKERS.txt;h=ae9446bc83f1e56d0b0238cf68d4bea25a31ea32;hb=ff47700ddec4f06b3ee45764591ec9ecf92bf7e9;hp=264766facd15b61460315dda4c206eee33b5acce;hpb=0d9184c70988bfa5d99e4a25368c155c9ced63ed;p=sbcl.git diff --git a/doc/GIT-FOR-SBCL-HACKERS.txt b/doc/GIT-FOR-SBCL-HACKERS.txt index 264766f..ae9446b 100644 --- a/doc/GIT-FOR-SBCL-HACKERS.txt +++ b/doc/GIT-FOR-SBCL-HACKERS.txt @@ -30,7 +30,7 @@ The command clones the SBCL Git mirror into the directory sbcl-git (there's a naming convention in play here, but ignore that for now.) The clone -contains full history, and is an independent repository on it's own +contains full history, and is an independent repository on its own right. Doing the clone takes as long as downloading 25Mb takes on your line, but after that things are very fast. @@ -72,8 +72,7 @@ in one step, which you will be doing a lot, since branches are really nice in Git! The magic is: "git checkout -b hack-a-bit-more" -- but leave that for another time. -Let's do something. Edit version.lisp-expr, and maybe give SBCL some -love. +Let's do something. Edit BUGS, and maybe give SBCL some love. git diff # shows you the changes in your tree git status # shows you the state of files in the tree @@ -85,7 +84,7 @@ nothing would happen. What's going on? Git has a notion of a separate "staging area", from which commits are made. You can add content to the it by using git-add: - git add version.lisp-expr + git add BUGS git status git diff @@ -95,8 +94,8 @@ is silent! By default git-diff shows the differences between the working tree and the staging area (which starts out identical to HEAD after a checkout). -Edit version.lisp-expr again. Now you have three versions of it -(ignoring all the historical versions for a second) to compare: +Edit BUGS again. Now you have three versions of it (ignoring all the +historical versions for a second) to compare: git diff # between tree and staging area git diff HEAD # between tree and last commit @@ -107,7 +106,7 @@ staging area, not the one in the tree. We like our latest version, so do - git add version.lisp-expr + git add BUGS again. Now the latest version is in the staging area, and version that used to be there is gone. You don't need to worry about the staging @@ -155,10 +154,10 @@ current version as a single diff. Similarly, can be used to compare two arbitrary versions. The -w switch tells Git to ignore whitespace changes -- you can usually leave it out, but it's -nice when diffing across the great whilespacification patches. +nice when diffing across the great whitespacification patches. Onwards: just so that we have a bit more history on the branch, edit -version.lisp-expr again, and git-commit again. You can use +BUGS again, and git-commit again. You can use git commit -a @@ -231,7 +230,7 @@ from where they end up in sbcl.git. Turtles, you see." in the comment box. Then you will be directed to set up an account, which you will then have to add as a "pusher" to your SBCL fork. -Finally, add the following snipped (adjusting for your own name) in +Finally, add the following snippet (adjusting for your own name) in ~/sbcl-git/.git/config [remote "public"] @@ -264,6 +263,17 @@ wish to commit the changes you have wrought on branch foo-hacks review, fix any problems cvs commit -F .msg +To make things a bit easier, add eg. this stanza to ~/sbcl-git/.git/config: + + [alias] + sbcl-export = ! cd ~/sbcl-cvs && GIT_DIR=~/sbcl-git/.git git-cvsexportcommit -v + +Then you can just run + + git sbcl-export foo-hacks-to-cvs + +from inside ~/sbcl-git/, and have it prepare your CVS tree for commit. + git-cvsexportcommit is fairly conservative by default, and will fail if the patch doens't apply cleanly. If that happens, you can fix the issues manually: @@ -285,6 +295,11 @@ foo-hacks, naming them 0002-and-so-and-so-forth.patch ... +Due to, among other things, the cvs->git synchronization lag it is +easy to get conflicts on version.lisp-expr so you may want to delay +finalizing version.lisp-expr and the .msg file that cvsexportcommit +produced by bumping the version and adding it to the commit message. + To get latest changes from the CVS Git mirror you originally cloned from, do