Dear Wiki user, You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.
The "GitAndHadoop" page has been changed by SteveLoughran. The comment on this change is: generating valid patches. http://wiki.apache.org/hadoop/GitAndHadoop?action=diff&rev1=6&rev2=7 -------------------------------------------------- 1. For each project, fork. This gives you your own repository URL which you can then clone locally with {{{git clone}}} 1. For each patch, branch. - At the time of writing (December 2009), github was updating its copy of the Apache repositories every hour. + At the time of writing (December 2009), github was updating its copy of the Apache repositories every hour. == Building the source == @@ -108, +108 @@ {{{ #start off in your trunk git checkout trunk - #create a new branch from trunk + #create a new branch from trunk git branch HDFS-775 #switch to it git checkout HDFS-775 @@ -120, +120 @@ - == Creating Patches == + == Creating Patches for attachment to JIRA == Assuming your trunk repository is in sync with the apache projects, you can use {{{git diff}}} to create a patch file. First, have a directory for your patches: @@ -129, +129 @@ }}} Then generate a patch file listing the differences between your trunk and your branch {{{ - git diff trunk > ../outgoing/HDFS-775-1.patch + git diff --no-prefix trunk > ../outgoing/HDFS-775-1.patch }}} The patch file is an extended version of the unified patch format used by other tools; type {{{git help diff}}} to get more details on it. Here is what the patch file in this example looks like {{{ + cat ../outgoing/HDFS-775-1.patch - diff --git a/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java b/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java + diff --git src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java index 42ba15e..6383239 100644 - --- a/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java + --- src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java - +++ b/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java + +++ src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java @@ -355,12 +355,14 @@ public class FSDataset implements FSConstants, FSDatasetInterface { return dfsUsage.getUsed(); } - + + /** + * Calculate the capacity of the filesystem, after removing any + * reserved capacity. @@ -155, +156 @@ + long remaining = usage.getCapacity() - reserved; + return remaining > 0 ? remaining : 0; } - + long getAvailable() throws IOException { + }}} + It is essential that patches for JIRA issues are generated with the {{{--no-prefix}}} option. Without that an extra directory path is listed, and the patches can only be applied with a {{{patch -p1}}} call, ''which Hudson does not know to do''. If you want your patches to take, this is what you have to do. You can of course test this yourself by using a command like {{{patch -p0 << ../outgoing/HDFS-775.1}}} in a copy of the SVN source tree to test that your patch takes. - This patch has a git file path in it, with an a/ and a b/ at the front, which will not work directly against the svn repository. Try it: - {{{ - trunk/hadoop-hdfs$ patch -p0 < ../../github/outgoing/HDFS-775-1.patch - can't find file to patch at input line 5 - Perhaps you used the wrong -p or --strip option? - The text leading up to this was: - -------------------------- - |diff --git a/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java b/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java - |index 42ba15e..6383239 100644 - |--- a/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java - |+++ b/src/java/org/apache/hadoop/hdfs/server/datanode/FSDataset.java - -------------------------- - }}} - See that? Not working. You can get it to take by saying "strip one path entry": {{{ - patch -p1 < ../../github/outgoing/HDFS-775-1.patch - }}} - Sadly, that doesn't work for JIRA issues, as Hudson doesn't know to do this. You need to edit the patch file and strip the a/ and b/ from the +++ and --- lines. -
