{"thread":{"id":"16090","subject":"Pull request for sub-tree merge into /contrib/gitstats","startedAt":"2008-10-29T23:06:44Z","lastAt":"2008-11-03T08:40:51Z","messageCount":11,"participants":["Sverre Rabbelier","Shawn O. Pearce","Nicolas Pitre","Junio C Hamano","Johannes Schindelin","David Symonds"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"94248","messageId":"bd6139dc0810291606o2efe4254me378335b76861340@mail.gmail.com","threadId":"16090","inReplyTo":null,"subject":"Pull request for sub-tree merge into /contrib/gitstats","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-10-29T23:06:44Z","receivedAt":"2008-10-29T23:06:44Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"My work is available in the git repository at:\n\n  git://repo.or.cz/git-stats.git master\n\nPlease use a subtree merge to put this in contrib/gitstats.\n\nDavid Symonds (2):\n      Insert the git_stats path to the start of os.sys.path, not 1 element in.\n      Fix some spelling mistakes.\n\nSverre Rabbelier (237):\n      Created a script to setup a repo to test metrics on.\n      Converted the setupRepo script to python to allow creating the same repo.\n      Added the use cases in text form.\n      Added a README.\n      Initial commit for notes branch\n      Changelog for 28-05-2008\n      Changelog for 29-05-2008\n      Changelog for 30-05-2008\n      Changelog for 31-05-2008\n      Created a script that aggregates author activity in one part of\nthe content.\n      Updated the script to handle merges and to treat '-' as 0.\n      Modified author.activityInArea to take a list of strings instead\nof a file.\n      Added a module containing the wrappers for the commands.\n      Replaced funny characters in use-cases.txt with whitespace.\n      Created a script that handles index related activities.\n      Added a script to handle data mining related to commit history.\n      Created a 'touched' command in the wrapper module.\n      Added pathsTouched to the history module.\n      Created a commitTouched function and a prettyPrint helper function\n      Wrapped the use-cases.txt document at ~72 characters.\n      Created a list of metrics that can be used to indentify fixes.\n      Added three more data mining functions to the history module\n      Gave the setupRepo script some major TLC.\n      Added commitdiffEqual functionality to the history module.\n      Creating the repository in a temp directory, use tempfile.gettempdir().\n      Improved the metrics documentation.\n      Use 'os.path.join(a, b)' rather than 'a + os.sep + b'.\n      Removed try/except from setupRepo but added a manual raise\n      Use the same configurations as test-lib.sh in setupRepo\n      Copied the test-lib.sh script from git.git/t\n      Modified test-lib.sh to use ~/code/git as git dir.\n      Added a basic test that sets up our test repository.\n      Added a test that verifies the HEAD revision hash\n      There is now a testcase to check HEAD, don't do it in setupRepo\n      Added a basic dispatcher to stats.py.\n      Moved things around a lot, and made commitTouches fixup nonrelative paths\n      Added basic dispatching functionality for diff\n      Added a __init__.py file since every module needs one\n      Made stats.py add the directory containing git_stats to the path\n      Moved stats.py up one directory\n      We no longer require running from the root of the repository\n      Prefixed private methods with _ and and made parseFileDiff\naccept larger diffs\n      Change 'PATHS' to 'COMMIT COMMIT' in the usage text\n      Finished the dispatching function for commit.\n      Moved stats.py back to the git_stats directory\n      Removed the $GIT_STATS_PATH related code\n      Removed extra newlines and replaced import with 'from .. import ..'\n      Moved stats.py back up again.\n      Moved diff.diffContains to commit.logContains\n      Removed the executable bit on author.py and index.py\n      Added dispatching to branch and finished branchList\n      Added dispatching to the author module\n      Added dispatching to the index module\n      Started on testing author.py and found the first bug so far\n      Bugfix for the author filter in author.py\n      Created a test case to point out an unimplemented function\n      Added a testcase to point out wrong output for 'stats.py branch -c'\n      Bugfix for the branchList output in branch.py\n      Finished the branch testcases, but no test for -r switch yet\n      The testcases require two patches to git-python to run successfully\n      Changelog for 01-06-2008\n      Changelog for 02-06-2008\n      Changelog for 02-06-2008 (2)\n      Changelog for 03-06-2008\n      Changelog for 04-06-2008\n      Changelog for 05-06-2008\n      Changelog for 06-06-2008\n      Changelog for 07-06-2008\n      Changelog for 08-06-2008\n      Changelog for 09-06-2008\n      Changelog for 10-06-2008\n      Made GitStats compatible with the latest version of git-python\n      Patches to git-python, since its latest changes, are no longer required\n      Added testcases for 'commit'\n      Changelog for 10-06-2008 (2)\n      Changelog for 11-06-2008\n      Bugfix for commitdiffMatches\n      Usability enhancement: print help msg on 'stats.py subcmd'\n      Merge branch 'notes'\n      Moved the changelog into the doc subdirectory\n      Changelog for 12-06-2008\n      Added testcases for diff and pointed out a bug and some output problems\n      Bugfix for diff -i, also removed debug output\n      Improved the dispatching in index.py\n      Added tests for index.py\n      Improved the test descriptions\n      Expanded the setupRepo script to generate a more elaborate tree\n      Made use of with_keep_cwd now that git-python runs from the top dir\n      Added tests for \"commit -r\" and pointed out a bug\n      Added a todo to check the file passed to \"stats.py commit\"\n      Stripped down test-lib.sh to the bits we need\n      Changelog for 13-06-2008\n      Changelog for 14-06-2008\n      Refactored the custom parser into it's own file\n      Bugfix for commit -t, now checks if the specified file is sane\n      Changelog for 15-06-2008\n      Bugfix, created a missing test for \"diff -n\"\n      Slight usability improvement\n      Expanded setupRepo and refactored 'addFile' into it's own function\n      Bugfix for the testsuite, added tests for 'index -a'\n      Changelog for 16-06-2008\n      Created a remote branch in the setupRepo script\n      Bugfix, added a testcase for \"branch -r -c\"\n      Changelog for 17-06-2008\n      Extended the description of the 'branch contains' metric\n      Refactored setupRepo a bit to make room for a metrics repo\n      Added a little more documentation on the branch metric\n      Extended setupRepo to create the repo as specified in metrics.txt\n      Updated the metrics repo to have two commits on the topic branch\n      Initial draft of the 'belongs to' metric\n      Typo, 'dilate' should be 'dilute'\n      Changelog for 19-06-2008\n      Described a more complex tree in metrics.txt\n      Added a bumpTime to make the commit history look a bit more sane\n      Changelog for 20-06-2008\n      Added with_exceptions=False to 'git rev-parse --verify'\n      Added a GIT_STATS_PRETTY_PRINT environmental variable\n      Added a '-v' option to stats.py\n      Added more tags to the generated test repo\n      Bail out when the testrepo couldn't be set up\n      Use the new GIT_STATS_PRETTY_PRINT and added tags features\n      When specifying kwargs they should be in quotes when not part of\na function call.\n      Use Repo(\".\").git instead of Git(\".\")\n      Updated the metrics repo to match the documented tree\n      Changelog for 24-06-2008\n      Changelog for 27-06-2008\n      Made the 'belongs to' metric recursive\n      Added tests for the 'belongs to' metric\n      First gather all parentage information, then run metrics\n      Changelog for 28-06-2008\n      Moved isUnique into parse.py so that other modules may use it\n      Added a \"author -f\" aggregation, and a test case.\n      Changelog for 29-06-2008\n      Minor cleanups, added documentation\n      Added a switch that lists only reverts of a specified commit\n      Changelog for 02-07-2008\n      Changelog for 02-07-2008\n      When parsing the parent listing take into account parentless commits\n      Print the usage help sorted and added some documentation\n      Use a stack-based approach instead of a recursive algorithm\n      Added a simple 'stats.py bug' command\n      Disable debug output, print minimum dilution\n      Optimizations to the 'belongs to' metric\n      Bugfix to only ignore if dilution was 'worse'\n      Optimion to the 'belongs to' metric\n      Don't filter out subsets in the belongs to metric\n      Optimization in the 'belongs to' metric\n      Changelog for 06-07-2008\n      Improved the output of 'branch -b' with '-d'\n      Added aggregation and showing all activity\n      Add a config parser and an example configuration\n      Bugfix to _parseFileDiff so that it handles diffs with mode changes only\n      Made use of the new config parser in bug.py\n      Changelog for 10-07-2008\n      When the specified path was not found, return an empty dict\n      Don't die when an option is not specified at all\n      Moved the commit information into a seperate class\n      Restructured the commit and diff module so that diff depends on commit\n      Refactored bug.py to allow for a trivial aggregation function\n      Refactored stats.py to use a main function\n      Allow for checking deleted files in commitsThatTouched\n      Check for empty diffs\n      Add a diff memory to diff.py and use it in bug.py\n      Don't look before we leap in getting the commit diff\n      Add a 'commits that touch' memory to commit.py\n      Two more memories were added and some refactoring\n      Print authors sorted in 'author -e'\n      Added an option to disable line numbering in diff parsing\n      Added a proof of concept matcher\n      Changelog for 12-07-2008\n      Add an option to ignore parent in the 'belongs to' metric\n      Added an option to limit the amount of commits checked\n      Allow specifying True, False, or None in the config file\n      Allow specifying True, False, or None on the command line\n      General cleanups in bug.py\n      Bugfix for branchContains Fix the branch\n      Make use of the ignore_parents option to belongsTo\n      Changelog for 14-07-2008\n      Provide a default empty dict to pretty names\n      Refactored bug.py to use a Memory and Options class\n      Make config.py more versatile\n      Teach config.py to read multiple verses\n      Introduce a bugfixRating to bug.py\n      Changelog for 15-07-2008\n      Refactoring, cleanups and documentation\n      Changelog for 16-07-2008\n      Updated the README to include specific installation instructions\n      Added a 'net loc' to 'author -a'\n      Updated the tests to match the new output of 'author -a'\n      Official 0.1.4 release of git-python\n      Removed the redundant setupRepo.sh script\n      Added an option to print the path for setupRepo.py\n      Added a way to specify the path to use instead of the default\n      Don't assume the temp path is /tmp\n      Make use of the 'sorted' built-in\n      Changelog for 17-07-2008\n      Added a unit-test framework for GitStats\n      Use 'key in dict' instead of 'dict.has_key(key)'\n      Renamed fileDiff to FileDiff\n      Bugfix for diff.py, don't die on empty diffs\n      Make use of getattr instead of just trying\n      Use format specifiers instead of appending to a string\n      Replace backslashes with parens to do line continuation\n      Don't asume setupRepo.py is executable\n      Remove unneeded executionable bit on setupRepo.py\n      Replace check_file with checkFile\n      Use dashed_form for variable names instead of camelCase\n      Changelog for 23-07-2008\n      Made config.read take a bunch of strings instead of a path\n      Improved testing.py output and removed manual parsing of arguments\n      Added a module to dispatch unit-testing commands\n      Hooked up the test suite in stats.py\n      Do not require lines to end with a '\\n' in the config parser\n      Refactor config.py to make it more testable\n      Wrote unittests for the config module and hooked them up\n      Changelog for 24-07-2008\n      Don't require stats.py to be in $PATH when running the regression tests\n      Renamed README to INSTALL\n      Expanded the INSTALL file to include usage information\n      Added a README describing GitStats purpose\n      Convert matcher.py to use optparse\n      Add a description about the branch module\n      Add a description about the author module\n      Add a description about the commit module\n      Add a general note about the 'stats.py'\n      Add a description about the diff module\n      Add a description about the index module\n      Add a description about the matcher module\n      Add a description about the tests module\n      Renamed the GitStats to include a gitstats- prefix\n      Add a description about the bug module\n      Renamed Memory->GitCache and Options->OptionList\n      Expanded the documentation of the bug module\n      Ran ispell on all non gitstats-* files in doc/\n      Ran ispell on all gitstats-* files in doc/\n      Added some example values to gitstats-bug.txt\n      Bugfix for the config parsing mechanism\n\n INSTALL                       |   33 ++\n README                        |   59 ++++\n doc/changelog.txt             |  335 +++++++++++++++++++++\n doc/gitstats-author.txt       |   30 ++\n doc/gitstats-branch.txt       |   35 +++\n doc/gitstats-bug.txt          |  109 +++++++\n doc/gitstats-commit.txt       |   44 +++\n doc/gitstats-diff.txt         |   24 ++\n doc/gitstats-index.txt        |   19 ++\n doc/gitstats-matcher.txt      |   19 ++\n doc/gitstats-stats.txt        |   36 +++\n doc/gitstats-tests.txt        |    8 +\n doc/metrics.txt               |   83 ++++++\n doc/use-cases.txt             |  160 ++++++++++\n src/git_stats/author.py       |  315 ++++++++++++++++++++\n src/git_stats/branch.py       |  420 ++++++++++++++++++++++++++\n src/git_stats/bug.py          |  306 +++++++++++++++++++\n src/git_stats/commit.py       |  343 ++++++++++++++++++++++\n src/git_stats/config          |    5 +\n src/git_stats/config.py       |  219 ++++++++++++++\n src/git_stats/config_tests.py |  245 +++++++++++++++\n src/git_stats/diff.py         |  515 ++++++++++++++++++++++++++++++++\n src/git_stats/index.py        |  102 +++++++\n src/git_stats/matcher.py      |  130 ++++++++\n src/git_stats/parse.py        |  109 +++++++\n src/git_stats/testing.py      |  212 +++++++++++++\n src/git_stats/tests.py        |   96 ++++++\n src/scripts/setupRepo.py      |  652 +++++++++++++++++++++++++++++++++++++++++\n src/scripts/setupRepo.sh      |   31 --\n src/stats.py                  |  112 +++++++\n src/t/t8100-stats.sh          |  333 +++++++++++++++++++++\n src/t/t8101-metrics.sh        |  163 ++++++++++\n src/t/test-lib.sh             |  372 +++++++++++++++++++++++\n 33 files changed, 5643 insertions(+), 31 deletions(-)\n create mode 100644 INSTALL\n create mode 100644 README\n create mode 100644 doc/changelog.txt\n create mode 100644 doc/gitstats-author.txt\n create mode 100644 doc/gitstats-branch.txt\n create mode 100644 doc/gitstats-bug.txt\n create mode 100644 doc/gitstats-commit.txt\n create mode 100644 doc/gitstats-diff.txt\n create mode 100644 doc/gitstats-index.txt\n create mode 100644 doc/gitstats-matcher.txt\n create mode 100644 doc/gitstats-stats.txt\n create mode 100644 doc/gitstats-tests.txt\n create mode 100644 doc/metrics.txt\n create mode 100644 doc/use-cases.txt\n create mode 100644 src/git_stats/__init__.py\n create mode 100644 src/git_stats/author.py\n create mode 100644 src/git_stats/branch.py\n create mode 100644 src/git_stats/bug.py\n create mode 100644 src/git_stats/commit.py\n create mode 100644 src/git_stats/config\n create mode 100644 src/git_stats/config.py\n create mode 100644 src/git_stats/config_tests.py\n create mode 100644 src/git_stats/diff.py\n create mode 100644 src/git_stats/index.py\n create mode 100644 src/git_stats/matcher.py\n create mode 100644 src/git_stats/parse.py\n create mode 100644 src/git_stats/testing.py\n create mode 100755 src/git_stats/tests.py\n create mode 100644 src/scripts/setupRepo.py\n delete mode 100755 src/scripts/setupRepo.sh\n create mode 100755 src/stats.py\n create mode 100755 src/t/t8100-stats.sh\n create mode 100755 src/t/t8101-metrics.sh\n create mode 100644 src/t/test-lib.sh\n"},{"id":"94250","messageId":"20081029231251.GB31926@spearce.org","threadId":"16090","inReplyTo":"bd6139dc0810291606o2efe4254me378335b76861340@mail.gmail.com","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-10-29T23:12:51Z","receivedAt":"2008-10-29T23:12:51Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Sverre Rabbelier <alturin@gmail.com> wrote:\n> Please use a subtree merge to put this in contrib/gitstats.\n\nYea, about that...\n \n> Sverre Rabbelier (237):\n>       Created a script to setup a repo to test metrics on.\n>       Converted the setupRepo script to python to allow creating the same repo.\n>       Added the use cases in text form.\n>       Added a README.\n>       Initial commit for notes branch\n>       Changelog for 28-05-2008\n>       Changelog for 29-05-2008\n>       Changelog for 30-05-2008\n>       Changelog for 31-05-2008\n...\n\nHow is this going to look in the \"What's in git.git\" email?\nWe don't use ChangeLog files in git.git and we don't have\nnotes branches, and we already have a README.\n\nMost stuff in contrib/ has its commit messages with a prefix string\nto make it more clear when looking at the shortlog what is being\nimpacted.  Maybe this should be re-written with filter-branch to\ninclude a prefix before it merges.\n\n-- \nShawn.\n"},{"id":"94251","messageId":"alpine.LFD.2.00.0810291922320.13034@xanadu.home","threadId":"16090","inReplyTo":"bd6139dc0810291606o2efe4254me378335b76861340@mail.gmail.com","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Nicolas Pitre","fromEmail":"nico@cam.org","sentAt":"2008-10-29T23:31:29Z","receivedAt":"2008-10-29T23:31:29Z","isPatch":false,"sender":{"key":"nico@fluxnic.net","avatar":"https://avatars.githubusercontent.com/u/702790?v=4"},"body":"On Thu, 30 Oct 2008, Sverre Rabbelier wrote:\n\n> My work is available in the git repository at:\n> \n>   git://repo.or.cz/git-stats.git master\n> \n> Please use a subtree merge to put this in contrib/gitstats.\n\n[...]\n\nWhy do you have commits such as:\n\n>       Changelog for 01-06-2008\n>       Changelog for 02-06-2008\n>       Changelog for 02-06-2008 (2)\n>       Changelog for 03-06-2008\n>       Changelog for 04-06-2008\n>       Changelog for 05-06-2008\n>       Changelog for 06-06-2008\n>       Changelog for 07-06-2008\n>       Changelog for 08-06-2008\n>       Changelog for 09-06-2008\n>       Changelog for 10-06-2008\n\n?\n\nIf those are not significant enough to have a proper description, then \nI'd suggest you use 'git rebase -i' and its \"squash\" command to fold \nthem into the appropriate commit.\n\n\nNicolas\n"},{"id":"94252","messageId":"bd6139dc0810291638r5cabd3c8uca83687bc314ca2c@mail.gmail.com","threadId":"16090","inReplyTo":"alpine.LFD.2.00.0810291922320.13034@xanadu.home","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-10-29T23:38:03Z","receivedAt":"2008-10-29T23:38:03Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Thu, Oct 30, 2008 at 00:31, Nicolas Pitre <nico@cam.org> wrote:\n> If those are not significant enough to have a proper description, then\n> I'd suggest you use 'git rebase -i' and its \"squash\" command to fold\n> them into the appropriate commit.\n\nThey are there because the work was done incrementally, having them as\nseperate commits shows when the changelog was modified. Having a\ndescription for a change to the changelog is pretty senseless, since\nit would be the same text as what is in the diff.\n\nThat said, sure, I can squash those commits no problem.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"94253","messageId":"bd6139dc0810291639l36849afai45df3b571061fe58@mail.gmail.com","threadId":"16090","inReplyTo":"20081029231251.GB31926@spearce.org","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-10-29T23:39:36Z","receivedAt":"2008-10-29T23:39:36Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Thu, Oct 30, 2008 at 00:12, Shawn O. Pearce <spearce@spearce.org> wrote:\n> Most stuff in contrib/ has its commit messages with a prefix string\n> to make it more clear when looking at the shortlog what is being\n> impacted.  Maybe this should be re-written with filter-branch to\n> include a prefix before it merges.\n\nSure, I'm fine with rewriting all commit messages to have a \"gitstats:\" prefix.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"94257","messageId":"bd6139dc0810291738i592aae81y9f10da5477ffe998@mail.gmail.com","threadId":"16090","inReplyTo":"bd6139dc0810291606o2efe4254me378335b76861340@mail.gmail.com","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-10-30T00:38:50Z","receivedAt":"2008-10-30T00:38:50Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Thu, Oct 30, 2008 at 00:06, Sverre Rabbelier <alturin@gmail.com> wrote:\n> My work is available in the git repository at:\n\nPlease use instead:\n\n>  git://repo.or.cz/git-stats.git for-junio\n\nWhich has the \"gitstats:\" prefix to all commit messages, and does not\nhave the changelog file.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"94338","messageId":"7vljw5evj5.fsf@gitster.siamese.dyndns.org","threadId":"16090","inReplyTo":"bd6139dc0810291606o2efe4254me378335b76861340@mail.gmail.com","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-10-30T19:24:14Z","receivedAt":"2008-10-30T19:24:14Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"I have a mixed feeling about this.  From a longer-term perspective, do you\nreally want this to be a part of git.git repository?\n\nI do not mind having notes to endorse and advocate \"stats\" as one of the\n\"Third party packages that may make your git life more pleasuable\", just\nlike tig, stgit, guilt and topgit, but I cannot convince myself that\nmerging it as a subtree is the right thing to do at this point.\n\nThe \"stats\" tool, at least at the conceptual level, shares one important\nproperty with tools like gitk and gitweb: it could be useful to people\nwhose sources are not in git repositories but in say Hg or Bzr, with some\neffort.  The code may need refactoring to make it easier to plug in\ndifferent backends and writing actual backends (aka \"porting\"), but that\nis something you can expect people with different backends to help you\nwith.\n\nHowever, it would be awkward for the contrib/ area in git.git to carry a\nlot of code that are only needed to produce stat data from non-git\nrepositories, once such a porting effort begins.\n\nIt's perfectly fine if you are not interested in any of the other\nbackends, and tell the people that they are welcome to fork it never to\nmerge back.  But if this were my brainchild, I'd imagine I'd be wishing to\nbe able to buy back the improvements to the \"core stats\" parts that are\ndone by people with other backends.  I would imagine binding the current\ncode as part of git.git would make such improvements harder to manage,\nboth for you (who wants to buy back the changes made by others on\ndifferent backends) and for others on different backends (who want to\nmerge the changes made by you to their forks).\n\nPerhaps pointing at your tree as a submodule would be the right thing to\ndo; then git.git proper will be just one of the users of \"stats\" tool.\n\nHow about making that as a mid-to-longer term goal?  When we eject git-gui\nand gitk from git.git and make them a submodule (wasn't that supposed to\nhappen in 1.8 or 2.0 timeframe?), we may also add \"stats\" as a submodule?\n"},{"id":"94686","messageId":"bd6139dc0811021124q5ba22d6bm6655f735aaeb379b@mail.gmail.com","threadId":"16090","inReplyTo":"7vljw5evj5.fsf@gitster.siamese.dyndns.org","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-11-02T19:24:08Z","receivedAt":"2008-11-02T19:24:08Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"[Sorry for the late reply, have been travelling, sleeping, and\ncatching up with family in the past few days]\n\nOn Thu, Oct 30, 2008 at 20:24, Junio C Hamano <gitster@pobox.com> wrote:\n> I have a mixed feeling about this.  From a longer-term perspective, do you\n> really want this to be a part of git.git repository?\n\nMy main reason for wanting to have it in git.git is getting additional\nexposure, being in /contrib seems like a good way to do that.\n\n> I do not mind having notes to endorse and advocate \"stats\" as one of the\n> \"Third party packages that may make your git life more pleasuable\", just\n> like tig, stgit, guilt and topgit, but I cannot convince myself that\n> merging it as a subtree is the right thing to do at this point.\n\nHeh, blame Johannes for that one; the main reason for not doing\nsomething like this earlier was my uncertaincy as to -what- to do.\nDscho suggested to request-pull a subtree merge, which is what I did.\n\n> The \"stats\" tool, at least at the conceptual level, shares one important\n> property with tools like gitk and gitweb: it could be useful to people\n> whose sources are not in git repositories but in say Hg or Bzr, with some\n> effort.  The code may need refactoring to make it easier to plug in\n> different backends and writing actual backends (aka \"porting\"), but that\n> is something you can expect people with different backends to help you\n> with.\n\nThis is true, it uses a python wrapper around git, but with some work\nit could be make to use a more abstract wrapper instead, that allows\nthe use of different backends.\n\n> However, it would be awkward for the contrib/ area in git.git to carry a\n> lot of code that are only needed to produce stat data from non-git\n> repositories, once such a porting effort begins.\n\nI reckon it would not be a lot of code, but I agree, that would be awkward.\n\n> It's perfectly fine if you are not interested in any of the other\n> backends, and tell the people that they are welcome to fork it never to\n> merge back.  But if this were my brainchild, I'd imagine I'd be wishing to\n> be able to buy back the improvements to the \"core stats\" parts that are\n> done by people with other backends.  I would imagine binding the current\n> code as part of git.git would make such improvements harder to manage,\n> both for you (who wants to buy back the changes made by others on\n> different backends) and for others on different backends (who want to\n> merge the changes made by you to their forks).\n\nThis is true, if there is indeed interest from other backends to use\nthis kind of functionality, I would welcome the patches. In such a\ncase being in git.git/contrib might not be a good thing.\n\n> Perhaps pointing at your tree as a submodule would be the right thing to\n> do; then git.git proper will be just one of the users of \"stats\" tool.\n\nWould a subdir in git.git for such submodules be a good idea? That way\nwe don't have to worry about a conflict between (for example) git-gui\nas a subdir, and git-gui as a submodule.\n\n> How about making that as a mid-to-longer term goal?  When we eject git-gui\n> and gitk from git.git and make them a submodule (wasn't that supposed to\n> happen in 1.8 or 2.0 timeframe?), we may also add \"stats\" as a submodule?\n\nI didn't know there was a timeframe for this, I thought your\nsuggestion tree to eject-and-make-into-submodule was somewhat ignored;\nif there are indeed plans for this, I would be ok with having\ngit-stats as a submodule instead.\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"94719","messageId":"alpine.DEB.1.00.0811030729071.22125@pacific.mpi-cbg.de.mpi-cbg.de","threadId":"16090","inReplyTo":"bd6139dc0811021124q5ba22d6bm6655f735aaeb379b@mail.gmail.com","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-11-03T06:33:47Z","receivedAt":"2008-11-03T06:33:47Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Sun, 2 Nov 2008, Sverre Rabbelier wrote:\n\n> On Thu, Oct 30, 2008 at 20:24, Junio C Hamano <gitster@pobox.com> wrote:\n> > I have a mixed feeling about this.  From a longer-term perspective, do \n> > you really want this to be a part of git.git repository?\n> \n> My main reason for wanting to have it in git.git is getting additional \n> exposure, being in /contrib seems like a good way to do that.\n> \n> > I do not mind having notes to endorse and advocate \"stats\" as one of \n> > the \"Third party packages that may make your git life more \n> > pleasuable\", just like tig, stgit, guilt and topgit, but I cannot \n> > convince myself that merging it as a subtree is the right thing to do \n> > at this point.\n> \n> Heh, blame Johannes for that one; the main reason for not doing \n> something like this earlier was my uncertaincy as to -what- to do. Dscho \n> suggested to request-pull a subtree merge, which is what I did.\n\nActually, I suggested that the end result be submitted as a single patch \nagainst contrib/, but dsymonds objected that that would lose all history, \nand I concurred that it would be nice to have all changes with the design \ndecisions recorded as commit messages, too.\n\nActually, in the meantime, I am of two minds.  On the one hand, I would \njust like to have the scripts in contrib/ (as a result of one commit), and \non the other hand, I would not like to lose history of gitstats.\n\nSo I roll the ball back into your (Junio's) half, albeit gently.\n\nCiao,\nDscho\n"},{"id":"94725","messageId":"ee77f5c20811022307r59dc4d09m20551a339a2993ea@mail.gmail.com","threadId":"16090","inReplyTo":"alpine.DEB.1.00.0811030729071.22125@pacific.mpi-cbg.de.mpi-cbg.de","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"David Symonds","fromEmail":"dsymonds@gmail.com","sentAt":"2008-11-03T07:07:46Z","receivedAt":"2008-11-03T07:07:46Z","isPatch":false,"sender":{"key":"dsymonds@gmail.com","avatar":"https://gravatar.com/avatar/b22f5051cbfc11836e36cf7a690e6cde4e225d835e13295ff98d15c7a9ee3c0f?d=mp&s=160"},"body":"On Sun, Nov 2, 2008 at 11:33 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n\n> Actually, I suggested that the end result be submitted as a single patch\n> against contrib/, but dsymonds objected that that would lose all history,\n> and I concurred that it would be nice to have all changes with the design\n> decisions recorded as commit messages, too.\n\nI chatted to Sverre separately, and I think we concluded that we could\nprobably just do a single patch (no history, no changelogs, etc.), and\njust point to the complete git-stats.git repo for folk who want the\ndetail.\n\n\nDave.\n"},{"id":"94727","messageId":"bd6139dc0811030040q1dd8de49t23f7924e03ad289d@mail.gmail.com","threadId":"16090","inReplyTo":"ee77f5c20811022307r59dc4d09m20551a339a2993ea@mail.gmail.com","subject":"Re: Pull request for sub-tree merge into /contrib/gitstats","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-11-03T08:40:51Z","receivedAt":"2008-11-03T08:40:51Z","isPatch":false,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Mon, Nov 3, 2008 at 08:07, David Symonds <dsymonds@gmail.com> wrote:\n> I chatted to Sverre separately, and I think we concluded that we could\n> probably just do a single patch (no history, no changelogs, etc.), and\n> just point to the complete git-stats.git repo for folk who want the\n> detail.\n\nEither is fine with me, anything to get more exposure is fine with me :).\n\n-- \nCheers,\n\nSverre Rabbelier\n"}]}