{"thread":{"id":"34442","subject":"[PATCH] howto: Use all-space indentation in ASCII art","startedAt":"2013-07-15T16:46:58Z","lastAt":"2013-08-05T15:32:33Z","messageCount":16,"participants":["Dirk Wallenstein","Junio C Hamano","Jonathan Nieder","A Large Angry SCM","Fredrik Gustafsson","Piotr Krukowiecki"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"223450","messageId":"20130715164658.GA8675@bottich","threadId":"34442","inReplyTo":null,"subject":"[PATCH] howto: Use all-space indentation in ASCII art","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-15T16:46:58Z","receivedAt":"2013-07-15T16:46:58Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"Keep the sketch aligned independent of the tabstop width used.\n\nSigned-off-by: Dirk Wallenstein <halsmit@t-online.de>\n---\n Documentation/howto/revert-a-faulty-merge.txt | 16 ++++++++--------\n 1 file changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/Documentation/howto/revert-a-faulty-merge.txt b/Documentation/howto/revert-a-faulty-merge.txt\nindex 075418e..4b75bfc 100644\n--- a/Documentation/howto/revert-a-faulty-merge.txt\n+++ b/Documentation/howto/revert-a-faulty-merge.txt\n@@ -30,7 +30,7 @@ The history immediately after the \"revert of the merge\" would look like\n this:\n \n  ---o---o---o---M---x---x---W\n-\t       /\n+               /\n        ---A---B\n \n where A and B are on the side development that was not so good, M is the\n@@ -47,7 +47,7 @@ After the developers of the side branch fix their mistakes, the history\n may look like this:\n \n  ---o---o---o---M---x---x---W---x\n-\t       /\n+               /\n        ---A---B-------------------C---D\n \n where C and D are to fix what was broken in A and B, and you may already\n@@ -81,7 +81,7 @@ In such a situation, you would want to first revert the previous revert,\n which would make the history look like this:\n \n  ---o---o---o---M---x---x---W---x---Y\n-\t       /\n+               /\n        ---A---B-------------------C---D\n \n where Y is the revert of W.  Such a \"revert of the revert\" can be done\n@@ -93,14 +93,14 @@ This history would (ignoring possible conflicts between what W and W..Y\n changed) be equivalent to not having W nor Y at all in the history:\n \n  ---o---o---o---M---x---x-------x----\n-\t       /\n+               /\n        ---A---B-------------------C---D\n \n and merging the side branch again will not have conflict arising from an\n earlier revert and revert of the revert.\n \n  ---o---o---o---M---x---x-------x-------*\n-\t       /                       /\n+               /                       /\n        ---A---B-------------------C---D\n \n Of course the changes made in C and D still can conflict with what was\n@@ -111,13 +111,13 @@ faulty A and B, and redone the changes on top of the updated mainline\n after the revert, the history would have looked like this:\n \n  ---o---o---o---M---x---x---W---x---x\n-\t       /                 \\\n+               /                 \\\n        ---A---B                   A'--B'--C'\n \n If you reverted the revert in such a case as in the previous example:\n \n  ---o---o---o---M---x---x---W---x---x---Y---*\n-\t       /                 \\         /\n+               /                 \\         /\n        ---A---B                   A'--B'--C'\n \n where Y is the revert of W, A' and B' are rerolled A and B, and there may\n@@ -129,7 +129,7 @@ lot of overlapping changes that result in conflicts.  So do not do \"revert\n of revert\" blindly without thinking..\n \n  ---o---o---o---M---x---x---W---x---x\n-\t       /                 \\\n+               /                 \\\n        ---A---B                   A'--B'--C'\n \n In the history with rebased side branch, W (and M) are behind the merge\n-- \n1.8.3.2.50.g531c8dd\n"},{"id":"223489","messageId":"7v61wba3gu.fsf@alter.siamese.dyndns.org","threadId":"34442","inReplyTo":"20130715164658.GA8675@bottich","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-07-15T22:00:17Z","receivedAt":"2013-07-15T22:00:17Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Dirk Wallenstein <halsmit@t-online.de> writes:\n\n> Keep the sketch aligned independent of the tabstop width used.\n\nThanks.\n\nThis is a source text to be formatted into HTML, isn't it?\n\nIn our sources, a HT indents to multiple of 8 columns.  As long as\nthe output HTML produced from the source can be seen on a terminal\nwith any tab-width correctly, I do not see any reason to apply this\npatch.\n\nAm I missing something???\n"},{"id":"223503","messageId":"20130716082413.GA27283@bottich","threadId":"34442","inReplyTo":"7v61wba3gu.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-16T08:24:13Z","receivedAt":"2013-07-16T08:24:13Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"On Mon, Jul 15, 2013 at 03:00:17PM -0700, Junio C Hamano wrote:\n> Dirk Wallenstein <halsmit@t-online.de> writes:\n> \n> > Keep the sketch aligned independent of the tabstop width used.\n> \n> Thanks.\n> \n> This is a source text to be formatted into HTML, isn't it?\n> \n> In our sources, a HT indents to multiple of 8 columns.  As long as\n> the output HTML produced from the source can be seen on a terminal\n> with any tab-width correctly, I do not see any reason to apply this\n> patch.\n> \n> Am I missing something???\n> \n\nThose text files are installed as documentation (at least on my distribution).\nThey have a *.txt suffix, which tells me that they are meant to be read.  If those\nwould ever be opened with a text editor where the user has set the default\ntabstop width to something other than 8 it would teach something nonsensical.\nNot to mention if those files would have been printed with the wrong setting.\n\nWhy would you want to limit those files to be source for HTML only?\n\nThe HTML after this patch is still fine.\n\n-- \nCheers,\n  Dirk\n"},{"id":"223525","messageId":"CAPc5daXZxkLOJwzaoSMZvJ87zYvns1MeYZU=RoEK=CQYP1qpag@mail.gmail.com","threadId":"34442","inReplyTo":"20130716082413.GA27283@bottich","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-07-16T17:13:28Z","receivedAt":"2013-07-16T17:13:28Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"> Why would you want to limit those files to be source for HTML only?\n>\n> The HTML after this patch is still fine.\n\nHave you thought the reason why the formatted result _before_ the patch is good?\n\nThese *.txt files are asciidoc formatted source files. They are meant\nto be easy to read and edit without distracting mark-ups (unlike roff\nand html), but with one big precondition: your tab-width ought to be\n8. That is how asciidoc expands the tab when producing the formatted\noutput, and that is why the formatted result _before_ the patch is\ngood.\n\nExpanding these tabs to all spaces do not buy us anything, other than\nsource code bloat, and with one downside.\n\nIt would give a false impression that it somehow is OK to open these\n*.txt files with a wrong tab-width setting, and even worse, edit them.\nYou may even type a new tab yourself to indent by 4 places, and\nformatted result will be broken by such a person.\n\nIt would signal that your tab-width setting is not suitable to\nview/edit these files if the elements in the illustration do not line\nup. View it as a bonus safety feature ;-)\n"},{"id":"223527","messageId":"20130716180158.GA7524@bottich","threadId":"34442","inReplyTo":"CAPc5daXZxkLOJwzaoSMZvJ87zYvns1MeYZU=RoEK=CQYP1qpag@mail.gmail.com","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-16T18:01:58Z","receivedAt":"2013-07-16T18:01:58Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"On Tue, Jul 16, 2013 at 10:13:28AM -0700, Junio C Hamano wrote:\n> > Why would you want to limit those files to be source for HTML only?\n> >\n> > The HTML after this patch is still fine.\n> \n> Have you thought the reason why the formatted result _before_ the patch is good?\nNo, as I said, *.txt suffixes tell me there is text in there and not\nsource code.  But what is more important is that they are installed (by\nGit) as is (obviously) into share/doc.  I'm happy to learn about the\nconversion through these posts, but the installation is flawed.\n\n> These *.txt files are asciidoc formatted source files. They are meant\n> to be easy to read and edit without distracting mark-ups (unlike roff\n> and html), but with one big precondition: your tab-width ought to be\n> 8. That is how asciidoc expands the tab when producing the formatted\n> output, and that is why the formatted result _before_ the patch is\n> good.\nasciidoc replaces the other spaces in the sketch with spaces in the\nresult.  Hard to believe it stops doing that if it is accidentally a\nsequence of 8 spaces.  And spaces are invisible by design.  Whitespace\nonly distracts if it leads to a wrong result.\n> \n> Expanding these tabs to all spaces do not buy us anything, other than\n> source code bloat, and with one downside.\nCorrectness maybe, if you open them in an editor to read them.  Imagine\nthe code bloat when the installation procedure expands the tabs so that\nthe final installation is correct.\n\n> It would give a false impression that it somehow is OK to open these\n> *.txt files with a wrong tab-width setting, and even worse, edit them.\n> You may even type a new tab yourself to indent by 4 places, and\n> formatted result will be broken by such a person.\nLuckily there are whitespace checks for mixed space and/or tab-indent.\nThe right approach would probably be to have no tabs indent in any of\nthese files.  I'm happy to assist ;)\n> \n> It would signal that your tab-width setting is not suitable to\n> view/edit these files if the elements in the illustration do not line\n> up. View it as a bonus safety feature ;-)\ngitattributes could solve that much more reliable if there wasn't any\ntab indentation allowed.\n\nIn the end, this is installed as documentation with a requirement on the\ntab-width of any reader application used.  The easiest and most foolproof\nsolution without introducing errors is to simply expand these tabs.\nAgain, the current installation is flawed.\n\n-- \nCheers,\n  Dirk\n"},{"id":"223531","messageId":"20130716182627.GM14690@google.com","threadId":"34442","inReplyTo":"20130716082413.GA27283@bottich","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2013-07-16T18:26:27Z","receivedAt":"2013-07-16T18:26:27Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Dirk Wallenstein wrote:\n\n> Those text files are installed as documentation (at least on my distribution).\n\nThat's probably a distribution bug (or a git makefile bug, depending\non how you look at it).  It would be better to ship the HTML\ndocumentation, converted to text, instead of keeping the version with\nmarkup including occasional random \\ signs, linkgit:, ``, etc.\n\nWhat distribution do you use?  (As maintainer of packaging for a Linux\ndistro, I know at least one that is guilty of this.)\n\nThanks,\nJonathan\n"},{"id":"223533","messageId":"20130716183812.GA11138@bottich","threadId":"34442","inReplyTo":"20130716182627.GM14690@google.com","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-16T18:38:12Z","receivedAt":"2013-07-16T18:38:12Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"On Tue, Jul 16, 2013 at 11:26:27AM -0700, Jonathan Nieder wrote:\n> Dirk Wallenstein wrote:\n> \n> > Those text files are installed as documentation (at least on my distribution).\n> \n> That's probably a distribution bug (or a git makefile bug, depending\n> on how you look at it).  It would be better to ship the HTML\n> documentation, converted to text, instead of keeping the version with\n> markup including occasional random \\ signs, linkgit:, ``, etc.\nThey are also installed if I only use Git's makefile.\n> \n> What distribution do you use?  (As maintainer of packaging for a Linux\n> distro, I know at least one that is guilty of this.)\n\nUbuntu.\nAs an aside, I had to run manual creation as root.  Otherwise it did hang\n(XMLTO).  Is that an Ubuntu bug?  Sorry, just because you seem to know\nabout this.\n\n-- \nCheers,\n  Dirk\n"},{"id":"223534","messageId":"51E59426.7020809@gmail.com","threadId":"34442","inReplyTo":"20130716182627.GM14690@google.com","subject":"Re: [PATCH] howto: Use all-space indentation in ASCII art","fromName":"A Large Angry SCM","fromEmail":"gitzilla@gmail.com","sentAt":"2013-07-16T18:42:46Z","receivedAt":"2013-07-16T18:42:46Z","isPatch":true,"sender":{"key":"gitzilla@gmail.com","avatar":"https://gravatar.com/avatar/354625c442439908ff3dd99757dee330e29e9df7847472384faf7a00add247fb?d=mp&s=160"},"body":">\n>> Those text files are installed as documentation (at least on my distribution).\n>\n> That's probably a distribution bug (or a git makefile bug, depending\n> on how you look at it).  It would be better to ship the HTML\n> documentation, converted to text, instead of keeping the version with\n> markup including occasional random \\ signs, linkgit:, ``, etc.\n>\n> What distribution do you use?  (As maintainer of packaging for a Linux\n> distro, I know at least one that is guilty of this.)\n>\n\n From the AcsiiDoc Home Page:\n\n=begin quote=\nYou write an AsciiDoc document the same way you would write a normal \ntext document, there are no markup tags or weird format notations. \nAsciiDoc files are designed to be viewed, edited and printed directly or \ntranslated to other presentation formats using the asciidoc(1) command.\n=end quote=\n\nSo, the asciidoc \"source\" files should be readable in their unprocessed \nform. And, not using tabs in ASCII art doesn't appear to have any downside.\n"},{"id":"224361","messageId":"20130731165406.GA11219@bottich","threadId":"34442","inReplyTo":"20130716180158.GA7524@bottich","subject":"[PATCH 0/2] Remove tabs from howto documents","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-31T16:54:07Z","receivedAt":"2013-07-31T16:54:07Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"I really think that tabs are generally bad here.  So, this will\nremove all tabs from the howto folder and prevent indenting with tabs\nthrough gitattributes.\n\nDirk Wallenstein (2):\n  howto: Suppress indentation with tabs\n  howto: Eliminate all tabs\n\n Documentation/howto/.gitattributes                 |  1 +\n .../howto/rebase-from-internal-branch.txt          |  8 ++--\n Documentation/howto/rebuild-from-update-hook.txt   |  4 +-\n .../howto/recover-corrupted-blob-object.txt        | 50 +++++++++++-----------\n Documentation/howto/revert-a-faulty-merge.txt      | 16 +++----\n Documentation/howto/revert-branch-rebase.txt       |  2 +-\n Documentation/howto/update-hook-example.txt        |  8 ++--\n Documentation/howto/use-git-daemon.txt             | 10 ++---\n 8 files changed, 50 insertions(+), 49 deletions(-)\n create mode 100644 Documentation/howto/.gitattributes\n\n-- \n1.8.3.3.2.g85103ba\n"},{"id":"224362","messageId":"20130731165417.GB11219@bottich","threadId":"34442","inReplyTo":"cover.1375288760.git.halsmit@t-online.de","subject":"[PATCH 1/2] howto: Suppress indentation with tabs","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-31T16:54:17Z","receivedAt":"2013-07-31T16:54:17Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"The AsciiDoc files in the 'howto' folder are installed as documentation\nand AsciiDoc files are meant to be read and printed as is.  To quote the\nAsciiDoc Home Page:\n\n    AsciiDoc files are designed to be viewed, edited and printed\n    directly or translated to other presentation formats using the\n    asciidoc(1) command.\n\nTabs have the property of a configurable width and can thereby skew the\nlayout of a page and distort the meaning.  This is particularly a\nproblem when mixing lines with different indentation (space vs tab) in\ncode examples and ASCII art.\n\nPrevent such a mix-up by prohibiting tab indentation entirely.\n\nSigned-off-by: Dirk Wallenstein <halsmit@t-online.de>\n---\n Documentation/howto/.gitattributes | 1 +\n 1 file changed, 1 insertion(+)\n create mode 100644 Documentation/howto/.gitattributes\n\ndiff --git a/Documentation/howto/.gitattributes b/Documentation/howto/.gitattributes\nnew file mode 100644\nindex 0000000..fecc113\n--- /dev/null\n+++ b/Documentation/howto/.gitattributes\n@@ -0,0 +1 @@\n+* whitespace=tab\n-- \n1.8.3.3.2.g85103ba\n"},{"id":"224363","messageId":"20130731165425.GC11219@bottich","threadId":"34442","inReplyTo":"4d37bfa3326469ab5b7cdbf0018f7aa671c2d74a.1375288760.git.halsmit@t-online.de","subject":"[PATCH 2/2] howto: Eliminate all tabs","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-31T16:54:25Z","receivedAt":"2013-07-31T16:54:25Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"Because tabs have a variable width, the layout can diverge from what the\nauthor intended.  Replace all tabs with spaces to the next column that\nis a multiple of 8.\n\nThis fixes several ascii art sketches and a code example where viewing\nit with a tab-width other than 8 lead to wrong indentation.\n\nSigned-off-by: Dirk Wallenstein <halsmit@t-online.de>\n---\n .../howto/rebase-from-internal-branch.txt          |  8 ++--\n Documentation/howto/rebuild-from-update-hook.txt   |  4 +-\n .../howto/recover-corrupted-blob-object.txt        | 50 +++++++++++-----------\n Documentation/howto/revert-a-faulty-merge.txt      | 16 +++----\n Documentation/howto/revert-branch-rebase.txt       |  2 +-\n Documentation/howto/update-hook-example.txt        |  8 ++--\n Documentation/howto/use-git-daemon.txt             | 10 ++---\n 7 files changed, 49 insertions(+), 49 deletions(-)\n\ndiff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt\nindex 19ab604..aefe5b1 100644\n--- a/Documentation/howto/rebase-from-internal-branch.txt\n+++ b/Documentation/howto/rebase-from-internal-branch.txt\n@@ -1,8 +1,8 @@\n-From:\tJunio C Hamano <gitster@pobox.com>\n-To:\tgit@vger.kernel.org\n-Cc:\tPetr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>\n+From:Junio C Hamano <gitster@pobox.com>\n+To:     git@vger.kernel.org\n+Cc:     Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>\n Subject: Re: sending changesets from the middle of a git tree\n-Date:\tSun, 14 Aug 2005 18:37:39 -0700\n+Date:   Sun, 14 Aug 2005 18:37:39 -0700\n Abstract: In this article, JC talks about how he rebases the\n  public \"pu\" branch using the core Git tools when he updates\n  the \"master\" branch, and how \"rebase\" works.  Also discussed\ndiff --git a/Documentation/howto/rebuild-from-update-hook.txt b/Documentation/howto/rebuild-from-update-hook.txt\nindex 25378f6..97365ff 100644\n--- a/Documentation/howto/rebuild-from-update-hook.txt\n+++ b/Documentation/howto/rebuild-from-update-hook.txt\n@@ -19,8 +19,8 @@ when I took over Git maintainership from Linus.\n \n The directories relevant to this how-to are these two:\n \n-    /pub/scm/git/git.git/\tThe public Git repository.\n-    /pub/software/scm/git/docs/\tThe HTML documentation page.\n+    /pub/scm/git/git.git/       The public Git repository.\n+    /pub/software/scm/git/docs/ The HTML documentation page.\n \n So I made a repository to generate the documentation under my\n home directory over there.\ndiff --git a/Documentation/howto/recover-corrupted-blob-object.txt b/Documentation/howto/recover-corrupted-blob-object.txt\nindex 1b3b188..6a8cc49 100644\n--- a/Documentation/howto/recover-corrupted-blob-object.txt\n+++ b/Documentation/howto/recover-corrupted-blob-object.txt\n@@ -62,22 +62,22 @@ we now know which tree points to it!\n \n Now you can do\n \n-\tgit ls-tree 2d9263c6d23595e7cb2a21e5ebbb53655278dff8\n+        git ls-tree 2d9263c6d23595e7cb2a21e5ebbb53655278dff8\n \n which will show something like\n \n-\t100644 blob 8d14531846b95bfa3564b58ccfb7913a034323b8    .gitignore\n-\t100644 blob ebf9bf84da0aab5ed944264a5db2a65fe3a3e883    .mailmap\n-\t100644 blob ca442d313d86dc67e0a2e5d584b465bd382cbf5c    COPYING\n-\t100644 blob ee909f2cc49e54f0799a4739d24c4cb9151ae453    CREDITS\n-\t040000 tree 0f5f709c17ad89e72bdbbef6ea221c69807009f6    Documentation\n-\t100644 blob 1570d248ad9237e4fa6e4d079336b9da62d9ba32    Kbuild\n-\t100644 blob 1c7c229a092665b11cd46a25dbd40feeb31661d9    MAINTAINERS\n-\t...\n+        100644 blob 8d14531846b95bfa3564b58ccfb7913a034323b8    .gitignore\n+        100644 blob ebf9bf84da0aab5ed944264a5db2a65fe3a3e883    .mailmap\n+        100644 blob ca442d313d86dc67e0a2e5d584b465bd382cbf5c    COPYING\n+        100644 blob ee909f2cc49e54f0799a4739d24c4cb9151ae453    CREDITS\n+        040000 tree 0f5f709c17ad89e72bdbbef6ea221c69807009f6    Documentation\n+        100644 blob 1570d248ad9237e4fa6e4d079336b9da62d9ba32    Kbuild\n+        100644 blob 1c7c229a092665b11cd46a25dbd40feeb31661d9    MAINTAINERS\n+        ...\n \n and you should now have a line that looks like\n \n-\t10064 blob 4b9458b3786228369c63936db65827de3cc06200\tmy-magic-file\n+        10064 blob 4b9458b3786228369c63936db65827de3cc06200     my-magic-file\n \n in the output. This already tells you a *lot* it tells you what file the\n corrupt blob came from!\n@@ -87,7 +87,7 @@ Now, it doesn't tell you quite enough, though: it doesn't tell what\n lucky, and it may be the version that you already have checked out in your\n working tree, in which case fixing this problem is really simple, just do\n \n-\tgit hash-object -w my-magic-file\n+        git hash-object -w my-magic-file\n \n again, and if it outputs the missing SHA-1 (4b945..) you're now all done!\n \n@@ -96,26 +96,26 @@ version that was broken. How do you tell which version it was?\n \n The easiest way to do it is to do\n \n-\tgit log --raw --all --full-history -- subdirectory/my-magic-file\n+        git log --raw --all --full-history -- subdirectory/my-magic-file\n \n and that will show you the whole log for that file (please realize that\n the tree you had may not be the top-level tree, so you need to figure out\n which subdirectory it was in on your own), and because you're asking for\n raw output, you'll now get something like\n \n-\tcommit abc\n-\tAuthor:\n-\tDate:\n-\t  ..\n-\t:100644 100644 4b9458b... newsha... M  somedirectory/my-magic-file\n+        commit abc\n+        Author:\n+        Date:\n+          ..\n+        :100644 100644 4b9458b... newsha... M  somedirectory/my-magic-file\n \n \n-\tcommit xyz\n-\tAuthor:\n-\tDate:\n+        commit xyz\n+        Author:\n+        Date:\n \n-\t  ..\n-\t:100644 100644 oldsha... 4b9458b... M\tsomedirectory/my-magic-file\n+          ..\n+        :100644 100644 oldsha... 4b9458b... M   somedirectory/my-magic-file\n \n and this actually tells you what the *previous* and *subsequent* versions\n of that file were! So now you can look at those (\"oldsha\" and \"newsha\"\n@@ -125,13 +125,13 @@ newer versions!\n \n If you can do that, you can now recreate the missing object with\n \n-\tgit hash-object -w <recreated-file>\n+        git hash-object -w <recreated-file>\n \n and your repository is good again!\n \n (Btw, you could have ignored the fsck, and started with doing a\n \n-\tgit log --raw --all\n+        git log --raw --all\n \n and just looked for the sha of the missing object (4b9458b..) in that\n whole thing. It's up to you - Git does *have* a lot of information, it is\n@@ -141,4 +141,4 @@ Trying to recreate trees and especially commits is *much* harder. So you\n were lucky that it's a blob. It's quite possible that you can recreate the\n thing.\n \n-\t\t\tLinus\n+                        Linus\ndiff --git a/Documentation/howto/revert-a-faulty-merge.txt b/Documentation/howto/revert-a-faulty-merge.txt\nindex 075418e..4b75bfc 100644\n--- a/Documentation/howto/revert-a-faulty-merge.txt\n+++ b/Documentation/howto/revert-a-faulty-merge.txt\n@@ -30,7 +30,7 @@ The history immediately after the \"revert of the merge\" would look like\n this:\n \n  ---o---o---o---M---x---x---W\n-\t       /\n+               /\n        ---A---B\n \n where A and B are on the side development that was not so good, M is the\n@@ -47,7 +47,7 @@ After the developers of the side branch fix their mistakes, the history\n may look like this:\n \n  ---o---o---o---M---x---x---W---x\n-\t       /\n+               /\n        ---A---B-------------------C---D\n \n where C and D are to fix what was broken in A and B, and you may already\n@@ -81,7 +81,7 @@ In such a situation, you would want to first revert the previous revert,\n which would make the history look like this:\n \n  ---o---o---o---M---x---x---W---x---Y\n-\t       /\n+               /\n        ---A---B-------------------C---D\n \n where Y is the revert of W.  Such a \"revert of the revert\" can be done\n@@ -93,14 +93,14 @@ This history would (ignoring possible conflicts between what W and W..Y\n changed) be equivalent to not having W nor Y at all in the history:\n \n  ---o---o---o---M---x---x-------x----\n-\t       /\n+               /\n        ---A---B-------------------C---D\n \n and merging the side branch again will not have conflict arising from an\n earlier revert and revert of the revert.\n \n  ---o---o---o---M---x---x-------x-------*\n-\t       /                       /\n+               /                       /\n        ---A---B-------------------C---D\n \n Of course the changes made in C and D still can conflict with what was\n@@ -111,13 +111,13 @@ faulty A and B, and redone the changes on top of the updated mainline\n after the revert, the history would have looked like this:\n \n  ---o---o---o---M---x---x---W---x---x\n-\t       /                 \\\n+               /                 \\\n        ---A---B                   A'--B'--C'\n \n If you reverted the revert in such a case as in the previous example:\n \n  ---o---o---o---M---x---x---W---x---x---Y---*\n-\t       /                 \\         /\n+               /                 \\         /\n        ---A---B                   A'--B'--C'\n \n where Y is the revert of W, A' and B' are rerolled A and B, and there may\n@@ -129,7 +129,7 @@ lot of overlapping changes that result in conflicts.  So do not do \"revert\n of revert\" blindly without thinking..\n \n  ---o---o---o---M---x---x---W---x---x\n-\t       /                 \\\n+               /                 \\\n        ---A---B                   A'--B'--C'\n \n In the history with rebased side branch, W (and M) are behind the merge\ndiff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt\nindex 0d5419e..bad54a1 100644\n--- a/Documentation/howto/revert-branch-rebase.txt\n+++ b/Documentation/howto/revert-branch-rebase.txt\n@@ -154,7 +154,7 @@ $ git pull . master\n Packing 0 objects\n Unpacking 0 objects\n \n-* committish: e3a693c...\trefs/heads/master from .\n+* committish: e3a693c...        refs/heads/master from .\n Trying to merge e3a693c... into 8c1f5f0... using 10d781b...\n Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f\n  cache.h        |    8 ++++----\ndiff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt\nindex a5193b1..40a35b1 100644\n--- a/Documentation/howto/update-hook-example.txt\n+++ b/Documentation/howto/update-hook-example.txt\n@@ -51,19 +51,19 @@ verbose=false\n GLOBIGNORE=*\n \n function grant {\n-  $verbose && echo >&2 \"-Grant-\t\t$1\"\n+  $verbose && echo >&2 \"-Grant-         $1\"\n   echo grant\n   exit 0\n }\n \n function deny {\n-  $verbose && echo >&2 \"-Deny-\t\t$1\"\n+  $verbose && echo >&2 \"-Deny-          $1\"\n   echo deny\n   exit 1\n }\n \n function info {\n-  $verbose && echo >&2 \"-Info-\t\t$1\"\n+  $verbose && echo >&2 \"-Info-          $1\"\n }\n \n # Implement generic branch and tag policies.\n@@ -83,7 +83,7 @@ case \"$1\" in\n       mb=$(git-merge-base \"$2\" \"$3\")\n       case \"$mb,$2\" in\n         \"$2,$mb\") info \"Update is fast-forward\" ;;\n-\t*)\t  noff=y; info \"This is not a fast-forward update.\";;\n+        *)        noff=y; info \"This is not a fast-forward update.\";;\n       esac\n     fi\n     ;;\ndiff --git a/Documentation/howto/use-git-daemon.txt b/Documentation/howto/use-git-daemon.txt\nindex 7af2e52..6b33d85 100644\n--- a/Documentation/howto/use-git-daemon.txt\n+++ b/Documentation/howto/use-git-daemon.txt\n@@ -12,11 +12,11 @@ things do not go according to plan (e.g. a socket could not be bound).\n \n Another word of warning: if you run\n \n-\t$ git ls-remote git://127.0.0.1/rule-the-world.git\n+        $ git ls-remote git://127.0.0.1/rule-the-world.git\n \n and you see a message like\n \n-\tfatal: The remote end hung up unexpectedly\n+        fatal: The remote end hung up unexpectedly\n \n it only means that _something_ went wrong. To find out _what_ went wrong,\n you have to ask the server. (Git refuses to be more precise for your\n@@ -25,8 +25,8 @@ Sorry, not allowed -- who knows what you planned to do with them?)\n \n With these two caveats, let's see an example:\n \n-\t$ git daemon --reuseaddr --verbose --base-path=/home/gitte/git \\\n-\t  --export-all -- /home/gitte/git/rule-the-world.git\n+        $ git daemon --reuseaddr --verbose --base-path=/home/gitte/git \\\n+          --export-all -- /home/gitte/git/rule-the-world.git\n \n (Of course, unless your user name is `gitte` _and_ your repository is in\n ~/rule-the-world.git, you have to adjust the paths. If your repository is\n@@ -49,6 +49,6 @@ a good practice to put the paths after a \"--\" separator.\n \n Now, test your daemon with\n \n-\t$ git ls-remote git://127.0.0.1/rule-the-world.git\n+        $ git ls-remote git://127.0.0.1/rule-the-world.git\n \n If this does not work, find out why, and submit a patch to this document.\n-- \n1.8.3.3.2.g85103ba\n"},{"id":"224364","messageId":"20130731170110.GF19369@paksenarrion.iveqy.com","threadId":"34442","inReplyTo":"20130731165406.GA11219@bottich","subject":"Re: [PATCH 0/2] Remove tabs from howto documents","fromName":"Fredrik Gustafsson","fromEmail":"iveqy@iveqy.com","sentAt":"2013-07-31T17:01:10Z","receivedAt":"2013-07-31T17:01:10Z","isPatch":true,"sender":{"key":"iveqy@iveqy.com","avatar":"https://avatars.githubusercontent.com/u/761743?v=4"},"body":"On Wed, Jul 31, 2013 at 06:54:07PM +0200, Dirk Wallenstein wrote:\n> I really think that tabs are generally bad here.  So, this will\n> remove all tabs from the howto folder and prevent indenting with tabs\n> through gitattributes.\n> \n> Dirk Wallenstein (2):\n>   howto: Suppress indentation with tabs\n>   howto: Eliminate all tabs\n> \n>  Documentation/howto/.gitattributes                 |  1 +\n>  .../howto/rebase-from-internal-branch.txt          |  8 ++--\n>  Documentation/howto/rebuild-from-update-hook.txt   |  4 +-\n>  .../howto/recover-corrupted-blob-object.txt        | 50 +++++++++++-----------\n>  Documentation/howto/revert-a-faulty-merge.txt      | 16 +++----\n>  Documentation/howto/revert-branch-rebase.txt       |  2 +-\n>  Documentation/howto/update-hook-example.txt        |  8 ++--\n>  Documentation/howto/use-git-daemon.txt             | 10 ++---\n>  8 files changed, 50 insertions(+), 49 deletions(-)\n>  create mode 100644 Documentation/howto/.gitattributes\n> \n\nHow about adding a line about this in Documentation/CodingGuidelines?\n\n-- \nMed vänliga hälsningar\nFredrik Gustafsson\n\ntel: 0733-608274\ne-post: iveqy@iveqy.com\n"},{"id":"224365","messageId":"7v8v0mvezw.fsf@alter.siamese.dyndns.org","threadId":"34442","inReplyTo":"20130731165425.GC11219@bottich","subject":"Re: [PATCH 2/2] howto: Eliminate all tabs","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-07-31T17:03:15Z","receivedAt":"2013-07-31T17:03:15Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Dirk Wallenstein <halsmit@t-online.de> writes:\n\n> diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt\n> index 19ab604..aefe5b1 100644\n> --- a/Documentation/howto/rebase-from-internal-branch.txt\n> +++ b/Documentation/howto/rebase-from-internal-branch.txt\n> @@ -1,8 +1,8 @@\n> -From:\tJunio C Hamano <gitster@pobox.com>\n> -To:\tgit@vger.kernel.org\n> -Cc:\tPetr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>\n> +From:Junio C Hamano <gitster@pobox.com>\n\nWhy does this patch have to break the e-mail headers like this?\n\nThese are copies of old e-mails; keep them as close to the original\nas they were.\n\nBesides, the tab width of our source is 8, period.  Get over it.\n"},{"id":"224370","messageId":"20130731173412.GA12354@bottich","threadId":"34442","inReplyTo":"7v8v0mvezw.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 2/2] howto: Eliminate all tabs","fromName":"Dirk Wallenstein","fromEmail":"halsmit@t-online.de","sentAt":"2013-07-31T17:34:12Z","receivedAt":"2013-07-31T17:34:12Z","isPatch":true,"sender":{"key":"halsmit@t-online.de","avatar":null},"body":"Junio C Hamano <gitster@pobox.com> wrote (Wed, Jul 31, 2013 at 10:03:15AM -0700):\n> Dirk Wallenstein <halsmit@t-online.de> writes:\n> \n> > diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt\n> > index 19ab604..aefe5b1 100644\n> > --- a/Documentation/howto/rebase-from-internal-branch.txt\n> > +++ b/Documentation/howto/rebase-from-internal-branch.txt\n> > @@ -1,8 +1,8 @@\n> > -From:\tJunio C Hamano <gitster@pobox.com>\n> > -To:\tgit@vger.kernel.org\n> > -Cc:\tPetr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>\n> > +From:Junio C Hamano <gitster@pobox.com>\n> \n> Why does this patch have to break the e-mail headers like this?\n> \n> These are copies of old e-mails; keep them as close to the original\n> as they were.\n> \n> Besides, the tab width of our source is 8, period.  Get over it.\n> \n\nI will try.  It just doesn't make sense to me at all.\n\n-- \n  Dirk\n"},{"id":"224541","messageId":"91d7a6c4-f7c3-4688-a7e3-a36ca3cf6cb4@email.android.com","threadId":"34442","inReplyTo":"7v8v0mvezw.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 2/2] howto: Eliminate all tabs","fromName":"Piotr Krukowiecki","fromEmail":"piotr.krukowiecki@gmail.com","sentAt":"2013-08-03T20:20:20Z","receivedAt":"2013-08-03T20:20:20Z","isPatch":true,"sender":{"key":"piotr.krukowiecki@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3259959?v=4"},"body":"Junio C Hamano <gitster@pobox.com> napisał:\n>Besides, the tab width of our source is 8, period.  Get over it.\n\nIsn't the howto documentation intended (mainly/also) for the users of git, not the developers?\n\n\n-- \nPiotr Krukowiecki \n"},{"id":"224582","messageId":"7vfvuonofi.fsf@alter.siamese.dyndns.org","threadId":"34442","inReplyTo":"CAA01CsqW1FWm8ExK7hypHp1_Jm0-kc1REQeuPYjbzU=aUQ+L9g@mail.gmail.com","subject":"Re: [PATCH 2/2] howto: Eliminate all tabs","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-08-05T15:32:33Z","receivedAt":"2013-08-05T15:32:33Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Piotr Krukowiecki <piotr.krukowiecki@gmail.com> writes:\n\n> Isn't the howto documentation intended (mainly/also) for the users of git,\n> not the developers?\n\nAnd they have *.html version for that exact version, no?\n\nWe used not to bother running asciidoc to Documentation/howto, so\nthe *.txt versions had to be exposed to the end users because there\nwas no other variant. That is no longer true, and *.txt versions are\nsources.\n"}]}