[pnfs] GIT Recipes
William A. (Andy) Adamson
andros at citi.umich.edu
Thu Mar 15 09:36:24 EDT 2007
We want to continue development on the prototype while keeping the
sessions/pnfs split. Here's some basic git recipes for doing that.
To start with, your git tree should look like this:
git branch -r
origin/4.1-sessions
origin/HEAD
origin/master
The idea is to create your own parallel branches for 4.1-sessions and master
to do your work in, and each day to update the origin/4.1-sessions and
origin/master.
Contents:
1) working on your own copy of origin/master (pnfs + sessions).
2) working on your own copy of origin/4.1-sessions, and merging
results into master for testing.
3) updating your tree with patches committed by CITI.
##########################
1) working on your own copy of origin/master (pnfs + sessions)
Run "git fetch origin" first to make sure origin/master is up to date,
then:
git checkout -b my-master origin/master
to be sure...
git branch
* my-master
then make changes to existing files
if add a file
git add <filename>
if remove a file
git rm <filename>
when done,
git commit -a
(Note: it'll give you a chance to edit the commit message. The first
line should be a *short* description of the patch (will be used as email
subject line); skip a blank line then write at length with any other
comments about the branch.)
this commits the changes to your local tree.
to show last commit: (review the patch)
git show
compile, test.
create a patch for review:
git format-patch origin/4.1-sessions
(This tells it to produce patches for all commits on your current branch
("my-sessions") that aren't in origin/4.1-sessions--so that's all the
commits you've made. Maybe just one in the example above.)
NOTE: SAVE THOSE PATCHES!
mail to the list
git send-email --to pnfs at linux-nfs.org --from <yourself> <filelist
from format patch>
note: the <filelist from format-patch> is usually 00*.
compile, test.
create a patch for review. (everything from the previous commit to this
latest commit in my-master diff against origin/master)
git format-patch origin/master
NOTE: SAVE YOUR PATCHES!
mail to the list
git send-email --to:pnfs at linux-nfs.org --from:<yourself> <filelist
from format patch>
note: the <filelist from format-patch is usually 00*.
########################################################
2) work on your own copy of origin/4.1-sessions
Run "git fetch origin" to make sure origin/4.1-sessions is uptodate,
then:
git checkout -b my-sessions origin/4.1-sessions
to be sure...
git branch
* my-sessions
then make changes to existing files, git add, commit -a, and make a
commit message as in step 1.
compile, test with NFSv4.1 (no pnfs)
Create patches for review, save them, and mail to the list as above.
Next, to merge your changes with your local origin/master (e.g the pnfs
branch)
git checkout -b my-master origin/master
git merge 4.1-sessions
If you have conflicts due to the merge, it will tell you the file names.
The conflicts will show up in files as arrows...
<<<<<<
======
>>>>>>
fix conflicts
git commit -a
(Note: git will automatically produce a commit message for you in this
case. You can add comments if you want, but usually the message it
creates is fine on its own.)
Please, if there were non-trivial conflicts, note merge changes and send
them to the list to help us do the repeat the merge on the citi repo:
git show > <file>
email <file> to list...
(git format-patch doesn't deal with merge commits.)
the command
gitk v2.6.18.3.. &
will bring up a nice little browser and show the merge, ignoring all the
v2.6.18.3 kernel stuff.
##########################
##########################
3) to update your tree with patches committed by CITI:
a) reset your origin branches (not your personal branches)
git fetch origin
b) check differences between your branches and origin due to fetch
git diff my-sessions origin/4.1-sessions
git diff my-master origin/master
c) see what is in origin that is not in your branch
git log my-sessions..origin/4.1-sessions
git log my-master..origin/master
(or gitk instead of git log)
you have several choices, but we suggest that you save your changes as
patches.
destroy your branches, and re-create them, applying the saved patches.
(or, create new branches and destroy them after updating new branches)
to revert your branch to origin, e.g. destroy your changes
git checkout my-sessions
git reset --hard origin/4.1-sessions
git checkout my-master
git reset --hard origin/master
to apply patches:
git am <list of files from format-patch>
to destroy a branch (if you created new personal branches, updated them, and
want to destroy the old personal branch)
git branch -d
-->Andy and Bruce
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://linux-nfs.org/pipermail/pnfs/attachments/20070315/b30a12ab/attachment.htm
More information about the pNFS
mailing list