{"thread":{"id":"4032","subject":"[PATCH 1/2] Add .gitignore files, list generated files there","startedAt":"2006-05-03T08:29:31Z","lastAt":"2006-05-03T08:29:33Z","messageCount":2,"participants":["Pavel Roskin"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"19407","messageId":"20060503082931.1548.14118.stgit@dv.roinet.com","threadId":"4032","inReplyTo":null,"subject":"[PATCH 1/2] Add .gitignore files, list generated files there","fromName":"Pavel Roskin","fromEmail":"proski@gnu.org","sentAt":"2006-05-03T08:29:31Z","receivedAt":"2006-05-03T08:29:31Z","isPatch":true,"sender":{"key":"proski@gnu.org","avatar":null},"body":"From: Pavel Roskin <proski@gnu.org>\n\nSigned-off-by: Pavel Roskin <proski@gnu.org>\n---\n\n .gitignore       |    1 +\n doc/.gitignore   |    2 ++\n stgit/.gitignore |    1 +\n 3 files changed, 4 insertions(+), 0 deletions(-)\n\ndiff --git a/.gitignore b/.gitignore\nnew file mode 100644\nindex 0000000..378eac2\n--- /dev/null\n+++ b/.gitignore\n@@ -0,0 +1 @@\n+build\ndiff --git a/doc/.gitignore b/doc/.gitignore\nnew file mode 100644\nindex 0000000..15ba6af\n--- /dev/null\n+++ b/doc/.gitignore\n@@ -0,0 +1,2 @@\n+tutorial.html\n+tutorial.pdf\ndiff --git a/stgit/.gitignore b/stgit/.gitignore\nnew file mode 100644\nindex 0000000..0d20b64\n--- /dev/null\n+++ b/stgit/.gitignore\n@@ -0,0 +1 @@\n+*.pyc\n"},{"id":"19408","messageId":"20060503082933.1548.38485.stgit@dv.roinet.com","threadId":"4032","inReplyTo":"20060503082931.1548.14118.stgit@dv.roinet.com","subject":"[PATCH 2/2] Improve \"Technical Information\" in the tutorial","fromName":"Pavel Roskin","fromEmail":"proski@gnu.org","sentAt":"2006-05-03T08:29:33Z","receivedAt":"2006-05-03T08:29:33Z","isPatch":true,"sender":{"key":"proski@gnu.org","avatar":null},"body":"From: Pavel Roskin <proski@gnu.org>\n\nIn the \"StGIT patch theory\", use traditional (old, new) argument order\nof diff.  Make formulas more readable.  Add more description.\n\nIn the \"Layout of the .git directory\", update the layout, add more\ndescriptions, organize layout as a table.  Sort entries alphabetically -\nit's easier to find them this way.\n\nSigned-off-by: Pavel Roskin <proski@gnu.org>\n---\n\n doc/tutorial.txt |  123 +++++++++++++++++++++++++++++++-----------------------\n 1 files changed, 70 insertions(+), 53 deletions(-)\n\ndiff --git a/doc/tutorial.txt b/doc/tutorial.txt\nindex 5899c38..ddc0cf9 100644\n--- a/doc/tutorial.txt\n+++ b/doc/tutorial.txt\n@@ -339,75 +339,92 @@ A bit of StGIT patch theory\n ---------------------------\n \n We assume that a patch is a diff between two nodes - bottom and top. A\n-node is a commit SHA1 id or tree SHA1 id in the GIT terminology:\n+node is a commit SHA1 ID or tree SHA1 ID in the GIT terminology:\n \n-  P - patch\n-  N - node\n-\n-  P = diff(Nt, Nb)\n+  P = diff(Nb, Nt)\n \n-  \tNb - bottom (start) node\n-  \tNt - top (end) node\n-  \tNf - first node (for log generation)\n+  P - patch\n+  Nb - bottom (start) node\n+  Nt - top (end) node\n \n-For an ordered stack of patches:\n+The order of diff parameters is (old, new). We use \"+\" for superposition\n+of patches. For an ordered stack of patches:\n \n-  P1 = diff(N1, N0)\n-  P2 = diff(N2, N1)\n+  P1 = diff(N0, N1)\n+  P2 = diff(N1, N2)\n   ...\n+  Ps = P1 + P2 + P3 + ... + Pn = diff(Nsb, Nst)\n \n+  Ps  - the big patch of the whole stack\n+  Nsb - bottom stack node (= N0)\n+  Nst - top stack node (= Nn)\n \n-  Ps = P1 + P2 + P3 + ... = diff(Nst, Nsb)\n+When pushing a patch P from the stack, it may happen that the patch\n+bottom Nb is different from the stack top Nst, i.e. the patch was\n+originally applied to a different node. The patch needs to be adjusted\n+to its new position in the stack. First, the new stack top is calculated\n+by diff3 merging:\n \n-  \tPs  - the big patch of the whole stack\n-  \tNsb - bottom stack node (= N0)\n-  \tNst - top stack node (= Nn)\n+  Nst' = diff3(Nst, Nb, Nt)\n \n-Applying (pushing) a patch on the stack (Nst can differ from Nb) is done\n-by diff3 merging. The new patch becomes:\n+The order of diff3 parameters is (branch1, ancestor, branch2). If the\n+merge succeeds, the patch is adjusted as following:\n \n-  P' = diff(Nt', Nb')\n   Nb' = Nst\n-  Nt' = diff3(Nst, Nb, Nt)\n+  Nt' = Nst'\n+  P' = diff(Nb', Nt')\n \n-(note that the diff3 parameters order is: branch1, ancestor, branch2)\n-The above operation allows easy patch re-ordering.\n Removing (popping) a patch from the stack is done by simply setting the\n Nst to Nb.\n \n+This approach allows easy reordering of patches. To reorder applied\n+patches, user should pop them first and then push them back to the stack\n+in the desired order. Unless the patches modify the same or adjacent\n+lines in the same files, StGIT should be able to adjust the patches\n+automatically for the new order.\n+\n \n Layout of the .git directory\n ----------------------------\n \n-  HEAD\t\t\t-> refs/heads/<something>\n-  objects/\n-    ??/\n-    ...\n-  refs/\n-    heads/\n-      master\t\t- the master commit id\n-      ...\n-    bases/\n-      master\t\t- the bottom id of the stack (to get a big diff)\n-      ...\n-    tags/\n-      ...\n-    branches/\n-      ...\n-    patches/\n-      master/\n-        applied\t\t- list of applied patches\n-        unapplied\t\t- list of not-yet applied patches\n-        current\t\t- name of the topmost patch\n-        patch1/\n-          bottom\t\t- the bottom id of the patch\n-          top\t\t- the top id of the patch\n-  \tdescription\t- the patch description\n-  \tauthname\t- author's name\n-  \tauthemail\t- author's e-mail\n-  \tcommname\t- committer's name\n-  \tcommemail\t- committer's e-mail\n-        patch2/\n-          ...\n-        ...\n-      ...\n+`-----------------------`----------------------------------------------\n+`branches/`\t\tremote branches to pull (deprecated)\n+`hooks/`\t\tscripts executed by git on some events\n+`info/`\n+`  exclude`\t\tlist of files ignored for the purpose of commit\n+`  refs`\t\tlist of commit IDs from refs/ (used on servers)\n+`objects/`\t\tgit objects\n+`  ??/`\t\t\tunpacked objects\n+`  info/`\n+`    packs`\t\tlist of object packs\n+`  pack/`\t\tobject packs\n+`    *.idx`\t\tindex files\n+`    *.pack`\t\tactual pack files\n+`patches/`\t\tstorage for StGIT patches\n+`  master/`\t\tpatches for the master branch\n+`    patches/`\t\tstorage for individual patches\n+`      patch1/`\t\tone of the StGIT patches\n+`        authdate`\tpatch date\n+`        authemail`\tauthor's e-mail\n+`        authname`\tauthor's name\n+`        bottom`\tbottom ID of the patch\n+`        bottom.old`\told bottom ID of the patch (for undo)\n+`        commemail`\tcommitter's e-mail\n+`        commname`\tcommitter's name\n+`        description`\tpatch description\n+`        top`\t\ttop ID of the patch\n+`        top.old`\told top ID of the patch (for undo)\n+`      patch2/`\t\tanother StGIT patch\n+`        ...`\n+`    applied`\t\tlist of applied patches\n+`    description`\tbranch description\n+`    current`\t\tname of the topmost patch\n+`    unapplied`\t\tlist of unapplied patches\n+`refs/`\t\t\tvarious significant commit IDs\n+`  bases/`\t\tbottom commit IDs of the patch stacks\n+`  heads/`\t\ttop commit IDs of branches\n+`  patches/`\t\tcommit IDs of StGIT patches\n+`  tags/`\t\tcommit IDs of tags (commit and tag objects)\n+`remotes/`\t\tremote branches to pull and push\n+`HEAD`\t\t\treference to the current branch\n+-----------------------------------------------------------------------\n"}]}