Managing Xen Patches with Git: Difference between revisions

From Xen
Jump to navigationJump to search
(Moved content from Xen Project Patches section Generating a patch to this section for further editing)
 
(Rework this, such that it fits with Submitting Xen Project Patches‎‎)
Line 1: Line 1:
This document assumes that you are familiar with the following documents
=== Generating a patch ===
* [[Xen Project Repositories]]
----
* [[Submitting Xen Project Patches]] - the document explains conventions related to cover letters, *-by tags, etc. as well as the tooling involved in sending patches and patch series
Here's a recommendation on how to create patches using '''git''', as suggested by the Xen Project maintainers.


It lays out basic examples and best practice of how to use Git to manage Xen patches as part of the submission process.
{{InfoLeft|The instructions on this page use the most common git workflow: aka '''the patch series is developed on a git branch'''. Many people find this '''difficult to work with'''. There are some alternatives
* '''StGit''' is a Python application providing similar functionality to Quilt (i.e. pushing/popping patches to/from a stack) on top of Git. You can find instructions at [[Submitting_Xen_Patches_with_StGit]].
* '''Patman''' is a Python script originally developed for U-Boot (but it also should work with Xen), which creates patches directly from your branch, cleans them up by removing unwanted tags, inserts a cover letter with change lists, ... This tool is useful for specially for long series that you expect to resend a couple of times.


Similar documents exist for
: Patman is available from <pre>http://git.denx.de/?p=u-boot.git;a=tree;f=tools/patman</pre> (also see the README).
* '''StGit''', a Python application providing similar functionality to Quilt (i.e. pushing/popping patches to/from a stack) on top of Git. You can find instructions at [[Managing Xen Patches with StGit]].
}}

If you want to use mercurial, please see [[Submitting_Xen_Patches_-_mercurial]].
== Generating a patch ==
<hr>
<br>
Begin by cloning the git repo from XenProject.org:
Begin by cloning the git repo from XenProject.org:
<syntaxhighlight lang="sh" highlight="1">
<syntaxhighlight lang="sh" highlight="1">
Line 36: Line 33:
The branch called <code>staging</code> is the bleeding-edge of commits; this is tested regularly with the <code>xen.org</code> build and regression testing system, and when it pases, is pushed to the <code>master</code> branch. It is suggested to develop patches based on the <code>master</code> branch.
The branch called <code>staging</code> is the bleeding-edge of commits; this is tested regularly with the <code>xen.org</code> build and regression testing system, and when it pases, is pushed to the <code>master</code> branch. It is suggested to develop patches based on the <code>master</code> branch.


When you want to introduce a change, start by making a new branch based on the most recent change in the <code>master</code> branch:
'''Important:''' When you want to introduce a change, start by making a new branch based on the most recent change in the <code>master</code> branch:


<syntaxhighlight lang="sh" highlight="1">
<syntaxhighlight lang="sh" highlight="1">
Line 88: Line 85:
Then in the commands above, you would use "staging" instead of "master" as the base branch.
Then in the commands above, you would use "staging" instead of "master" as the base branch.
...
...

== Sending a patch to xen-devel@ ==
You can find instructions on how to send patches in our [[Submitting_Xen_Project_Patches#send|Patch Submission Guide]].





Revision as of 12:12, 7 August 2019

This document assumes that you are familiar with the following documents

It lays out basic examples and best practice of how to use Git to manage Xen patches as part of the submission process.

Similar documents exist for

  • StGit, a Python application providing similar functionality to Quilt (i.e. pushing/popping patches to/from a stack) on top of Git. You can find instructions at Managing Xen Patches with StGit.

Generating a patch

Begin by cloning the git repo from XenProject.org:

$ git clone git://xenbits.xenproject.org/xen.git xen.git

At this point you should have xenbits set up as the remote repostiory called "origin":

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/stable-4.0
  remotes/origin/stable-4.1
  remotes/origin/stable-4.2
  remotes/origin/staging
  remotes/origin/staging-4.0
  remotes/origin/staging-4.1
  remotes/origin/staging-4.2

This process automatically creates a local branch called master that will track the XenProject.org branch called master.

The branch called staging is the bleeding-edge of commits; this is tested regularly with the xen.org build and regression testing system, and when it pases, is pushed to the master branch. It is suggested to develop patches based on the master branch.

Important: When you want to introduce a change, start by making a new branch based on the most recent change in the master branch:

$ git checkout -b out/trondle-calls master
Switched to a new branch 'out/trondle-calls'

Then edit the source files you want to change. You can see which files have changed by using git status.

When you're done editing, use git add to specify which file changes you want included in the changeset, and then use git commit to make a commit. You will be prompted to make a changset description:

$ git status
# On branch out/trondle-calls
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   foobar/zot.c
#	modified:   foobar/zot.h
#
no changes added to commit (use "git add" and/or "git commit -a")
$ git add foobar/zot.c foobar/zot.h
$ git commit

Alternatively, you can commit all changes using "git commit -a":

$ git commit -a
foobar: Add a new trondle calls

Add a some new trondle calls to the foobar interface to support
the new zot feature.

Signed-off-by: Joe Smith <joe.smith@citrix.com>

Make as many commits on your new branch as are necessary.


If you want to make a local branch based on staging rather than master (for example, to fix a changeset which has caused the XenProject.org nightly testing to fail), you can do the following:

$ git checkout -b staging remotes/origin/staging
Branch staging set up to track remote branch staging from origin.
Switched to a new branch 'staging'

Then in the commands above, you would use "staging" instead of "master" as the base branch. ...

Sending a patch to xen-devel@

You can find instructions on how to send patches in our Patch Submission Guide.