chiark / gitweb /
Copyright: Actually provide copy of DCO
[dgit.git] / dgit.7
diff --git a/dgit.7 b/dgit.7
index a988656..cbf91b9 100644 (file)
--- a/dgit.7
+++ b/dgit.7
@@ -32,8 +32,9 @@ normally the dgit-repos repo for the package will be accessible via
 the remote name `origin'.
 
 dgit push will also make signed tags called
-.BI debian/ version
-(a la DEP-14) and push them to dgit-repos.  These are used at the
+.BI archive/debian/ version
+(with version encoded a la DEP-14)
+and push them to dgit-repos.  These are used at the
 server to authenticate pushes.
 
 dgit push can operate on any commit which is a descendant of the
@@ -48,7 +49,7 @@ branch) whose tree is identical to the unpacked source upload.
 Uploads not made by dgit are represented in git by commits which are
 synthesised by dgit.  The tree of each such commit corresponds to the
 unpacked source; there is an origin commit with the contents, and a
-psuedo-merge from last known upload - that is, from the contents of
+pseudo-merge from last known upload - that is, from the contents of
 the dgit/suite branch.
 
 dgit expects repos that it works with to have a
@@ -104,7 +105,7 @@ If you are a quilt user you need to know that dgit's git trees are
 directory (which is used by quilt to record which patches are
 applied).  If you want to manipulate the patch stack you probably want
 to be looking at tools like git-dpm.
-.SH FILES IN THE SOURCE PACKAGE BUT NOT IN GIT
+.SH FILES IN THE SOURCE PACKAGE BUT NOT IN GIT - AUTOTOOLS ETC.
 This section is mainly of interest to maintainers who want to use dgit
 with their existing git history for the Debian package.
 
@@ -150,16 +151,72 @@ bugs, which cause unintended files to end up in the source package.
 dgit will notice this and complain.  You may have to fix these bugs
 before you can unify your existing git history with dgit's.
 .LP
+.SH FILES IN THE SOURCE PACKAGE BUT NOT IN GIT - DOCS, BINARIES ETC.
+Some upstream tarballs contain build artifacts which upstream expects
+some users not to want to rebuild (or indeed to find hard to rebuild),
+but which in Debian we always rebuild.
+.LP
+Examples sometimes include crossbuild firmware binaries and
+documentation.
+To avoid problems when building updated source
+packages
+(in particular, to avoid trying to represent as changes in
+the source package uninteresting or perhaps unrepresentable changes
+to such files)
+many maintainers arrange for the package clean target
+to delete these files.
+.LP
+dpkg-source does not
+(with any of the commonly used source formats)
+represent deletion of files (outside debian/) present in upstream.
+Thus deleting such files in a dpkg-source working tree does not
+actually result in them being deleted from the source package.
+Thus
+deleting the files in rules clean sweeps this problem under the rug.
+.LP
+However, git does always properly record file deletion.
+Since dgit's
+principle is that the dgit git tree is the same of dpkg-source -x,
+that means that a dgit-compatible git tree always contains these
+files.
+.LP
+For the non-maintainer,
+this can be observed in the following suboptimal occurrences:
+.TP
+\(bu
+The package clean target often deletes these files, making the git
+tree dirty trying to build the source package, etc.
+This can be fixed
+by using
+.BR "dgit -wg" " aka " "--clean=git" ,
+so that the package clean target is never run.
+.TP
+\(bu
+The package build modifies these files, so that builds make the git
+tree dirty.
+This can be worked around by using `git reset --hard'
+after each build
+(or at least before each commit or push).
+.LP
+From the maintainer's point of view,
+the main consequence is that to make a dgit-compatible git branch
+it is necessary to commit these files to git.
+The maintainer has a few additional options for mitigation:
+for example,
+it may be possible for the rules file to arrange to do the
+build in a temporary area, which avoids updating the troublesome
+files;
+they can then be left in the git tree without seeing trouble.
 .SH PROBLEMS WITH PACKAGE CLEAN TARGETS ETC.
-A related problem is unexpected behaviour by a package's
+A related problem is other unexpected behaviour by a package's
 .B clean
 target.
 If a package's rules
-remove or modify files which are distributed in the package,
-or simply forgets to remove certain files,
+modify files which are distributed in the package,
+or simply forget to remove certain files,
 dgit will complain that the tree is dirty.
 .LP
-The solution is to use
+Again, the solution is to use
 .BR "dgit -wg" " aka " "--clean=git" ,
 which instructs dgit to use git clean instead of the package's
 build target,