{"thread":{"id":"575","subject":"[PATCH] [RFD] Add repoid identifier to commit","startedAt":"2005-05-11T21:38:30Z","lastAt":"2005-05-14T05:02:41Z","messageCount":74,"participants":["Thomas Gleixner","Sean","H. Peter Anvin","Dmitry Torokhov","Junio C Hamano","Joel Becker","David Woodhouse","Jan Harkes","Jon Seymour","Petr Baudis"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"3066","messageId":"1115847510.22180.108.camel@tglx","threadId":"575","inReplyTo":null,"subject":"[PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-11T21:38:30Z","receivedAt":"2005-05-11T21:38:30Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"This is an initial attempt to enable history tracking for multiple\nrepositories in a consistent state. At the moment this can only be done\nby heuristic guessing on the parent dates and the committer names. \nThis fails for example with Dave Millers net-2.6 and sparc-2.6 trees, as\nin both cases the committer name is the same. It fails also completely\nin cases where the system clock of the committer is wrong and the merge\nis a head forward. The old bk repository contains entries from 1999 and\n2027, which will happen also with git over the time. \n\nTo identify a repository commit-tree tries to read an environment\nvariable \"GIT_REPOSITORY_ID\" and has a fallback to the current working\ndirectory. The environment variable keeps the door open for managed\nrepository id's, but the current working directory is certainly a quite\nhelpful information to solve the origin decision for history tracking.\n\nAdding a line after the committer should not break any existing tools\nAFAICS.\n\nSigned-off-by: Thomas Gleixner <tglx@linutronix.de>\n\n--- a/commit-tree.c\n+++ b/commit-tree.c\n@@ -110,6 +110,7 @@ int main(int argc, char **argv)\n \tchar *gecos, *realgecos, *commitgecos;\n \tchar *email, *commitemail, realemail[1000];\n \tchar date[20], realdate[20];\n+\tchar *repoid, repoidbuf[MAXPATHLEN];\n \tchar *audate;\n \tchar comment[1000];\n \tstruct passwd *pw;\n@@ -154,6 +155,14 @@ int main(int argc, char **argv)\n \tif (audate)\n \t\tparse_date(audate, date, sizeof(date));\n \n+\trepoid = getenv(\"GIT_REPOSITORY_ID\");\n+\tif (!repoid)\n+\t\trepoid = getcwd(repoidbuf, MAXPATHLEN);\n+\telse {\n+\t\tif (strlen(repoid) == 0)\n+\t\t\tdie(\"GIT_REPOSITORY_ID is empty. Fix it !\");\n+\t}\n+\n \tremove_special(gecos); remove_special(realgecos); remove_special(commitgecos);\n \tremove_special(email); remove_special(realemail); remove_special(commitemail);\n \n@@ -170,7 +179,8 @@ int main(int argc, char **argv)\n \n \t/* Person/date information */\n \tadd_buffer(&buffer, &size, \"author %s <%s> %s\\n\", gecos, email, date);\n-\tadd_buffer(&buffer, &size, \"committer %s <%s> %s\\n\\n\", commitgecos, commitemail, realdate);\n+\tadd_buffer(&buffer, &size, \"committer %s <%s> %s\\n\", commitgecos, commitemail, realdate);\n+\tadd_buffer(&buffer, &size, \"repoid %s\\n\\n\", repoid);\n \n \t/* And add the comment */\n \twhile (fgets(comment, sizeof(comment), stdin) != NULL)\n\n\n"},{"id":"3068","messageId":"2780.10.10.10.24.1115848852.squirrel@linux1","threadId":"575","inReplyTo":"1115847510.22180.108.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-11T22:00:52Z","receivedAt":"2005-05-11T22:00:52Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 5:38 pm, Thomas Gleixner said:\n> This is an initial attempt to enable history tracking for multiple\n> repositories in a consistent state. At the moment this can only be done\n> by heuristic guessing on the parent dates and the committer names.\n> This fails for example with Dave Millers net-2.6 and sparc-2.6 trees, as\n> in both cases the committer name is the same. It fails also completely\n> in cases where the system clock of the committer is wrong and the merge\n> is a head forward. The old bk repository contains entries from 1999 and\n> 2027, which will happen also with git over the time.\n>\n> To identify a repository commit-tree tries to read an environment\n> variable \"GIT_REPOSITORY_ID\" and has a fallback to the current working\n> directory. The environment variable keeps the door open for managed\n> repository id's, but the current working directory is certainly a quite\n> helpful information to solve the origin decision for history tracking.\n>\n> Adding a line after the committer should not break any existing tools\n> AFAICS.\n\nTo make this useful you're also going to have to change the parent entries\nto something like:\n\nparent SHA1 REPOID\n\nAt least when the referenced commit has a repoid that doesn't match the\nrepository from which you obtained the object, ie. fast forward heads. \nThis implies that you know the repoid of the repository you pulled the\nobject from!\n\nOtherwise, you still haven't solved the problem of identifying fast\nforward heads as you traverse the history.\n\nSean\n\n\n"},{"id":"3069","messageId":"1115849141.22180.123.camel@tglx","threadId":"575","inReplyTo":"2780.10.10.10.24.1115848852.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-11T22:05:41Z","receivedAt":"2005-05-11T22:05:41Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 18:00 -0400, Sean wrote:\n> To make this useful you're also going to have to change the parent entries\n> to something like:\n> \n> parent SHA1 REPOID\n> \n> At least when the referenced commit has a repoid that doesn't match the\n> repository from which you obtained the object, ie. fast forward heads. \n> This implies that you know the repoid of the repository you pulled the\n> object from!\n> \n> Otherwise, you still haven't solved the problem of identifying fast\n> forward heads as you traverse the history.\n\nErr, \neach parent is a commit, which is identified by its repoid. Why do you\nwant to add redundant information ?\n\ntglx\n\n\n"},{"id":"3073","messageId":"2807.10.10.10.24.1115850254.squirrel@linux1","threadId":"575","inReplyTo":"1115849141.22180.123.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-11T22:24:14Z","receivedAt":"2005-05-11T22:24:14Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 6:05 pm, Thomas Gleixner said:\n\n> Err,\n> each parent is a commit, which is identified by its repoid. Why do you\n> want to add redundant information ?\n>\n\nIt's not necessarily the repoid you pulled the object from though.  It may\nbe the repoid of another completely separate repository.\n\nRepo A -  creates object  HEAD = (A)\nRepo B -  pulls objects from Repo A  FAST FORWARD HEAD = (A)\nRepo C -  pulls from Repo B\n\nNow as you traverse the history in Repo C, the object will show as coming\nfrom Repo A, not Repo B.\n\nSean\n\n\n"},{"id":"3074","messageId":"1115850619.22180.133.camel@tglx","threadId":"575","inReplyTo":"2807.10.10.10.24.1115850254.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-11T22:30:19Z","receivedAt":"2005-05-11T22:30:19Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 18:24 -0400, Sean wrote:\n> On Wed, May 11, 2005 6:05 pm, Thomas Gleixner said:\n> \n> > Err,\n> > each parent is a commit, which is identified by its repoid. Why do you\n> > want to add redundant information ?\n> >\n> \n> It's not necessarily the repoid you pulled the object from though.  It may\n> be the repoid of another completely separate repository.\n> \n> Repo A -  creates object  HEAD = (A)\n> Repo B -  pulls objects from Repo A  FAST FORWARD HEAD = (A)\n> Repo C -  pulls from Repo B\n> \n> Now as you traverse the history in Repo C, the object will show as coming\n> from Repo A, not Repo B.\n\nAt this point it is completely irrelevant if you pulled from A or B. The\noriginator of Head A is A forever.\n\ntglx\n\n\n"},{"id":"3075","messageId":"2853.10.10.10.24.1115850996.squirrel@linux1","threadId":"575","inReplyTo":"1115850619.22180.133.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-11T22:36:36Z","receivedAt":"2005-05-11T22:36:36Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 6:30 pm, Thomas Gleixner said:\n\n> At this point it is completely irrelevant if you pulled from A or B. The\n> originator of Head A is A forever.\n\nBut who cares what repository was used to create the object?   You can't\ntalk to a repository.   What you want to know is who created the object,\nand Author/Committer completely solves that problem.\n\nIf on the otherhand you're trying to reliably track the chain-of-command\nthat landed the object in your repository, your patch falls short.\n\nSean\n\n\n"},{"id":"3078","messageId":"1115851718.22180.153.camel@tglx","threadId":"575","inReplyTo":"2853.10.10.10.24.1115850996.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-11T22:48:38Z","receivedAt":"2005-05-11T22:48:38Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 18:36 -0400, Sean wrote:\n> On Wed, May 11, 2005 6:30 pm, Thomas Gleixner said:\n> \n> > At this point it is completely irrelevant if you pulled from A or B. The\n> > originator of Head A is A forever.\n> \n> But who cares what repository was used to create the object?   You can't\n> talk to a repository.   What you want to know is who created the object,\n> and Author/Committer completely solves that problem.\n\nMaybe you have missed the point, where one Committer holds more than one\nrepository. See davem/net-2.6 and davem/sparc-2.6. Not to talk of\nRussell King's and Greg's multiple repositories.\nThe Author is irrelevant, because one Author sends patches to more than\none maintainer. Author _cannot_ be a source of tracking information. If\nyou want to do heuristic guesses on Author/Committer pairs, then you\nmake the situation more complex than it is already.\n\n> If on the otherhand you're trying to reliably track the chain-of-command\n> that landed the object in your repository, your patch falls short.\n\nAs I said before it is completely irrelevant whether fast forward was\npulled into C directly from A or from B. \n\nWhats the relevant content of getting the same thing from A or B ? \n\nIf you want to do this, you break the fast forward mechanism and\nreinvent the pull ping-pong which is avoided by the fast forwards.\n\ntglx\n\n\n"},{"id":"3081","messageId":"2883.10.10.10.24.1115852463.squirrel@linux1","threadId":"575","inReplyTo":"1115851718.22180.153.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-11T23:01:03Z","receivedAt":"2005-05-11T23:01:03Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 6:48 pm, Thomas Gleixner said:\n\nHey Thomas,\n\n> Maybe you have missed the point, where one Committer holds more than one\n> repository. See davem/net-2.6 and davem/sparc-2.6. Not to talk of\n> Russell King's and Greg's multiple repositories.\n> The Author is irrelevant, because one Author sends patches to more than\n> one maintainer. Author _cannot_ be a source of tracking information. If\n> you want to do heuristic guesses on Author/Committer pairs, then you\n> make the situation more complex than it is already.\n\nWhy would anyone care how many repositories Russell or Greg use?  Why does\nanyone care if Dave used his repo A, B, or C?   Aren't I still just going\nto contact him via his author email addy if I have an issue with an object\nhe has added to the stream?\n\nAnd if I do care which repo he used, why don't I care about the case i've\noutlined where the chain of command information is lost?\n\n> As I said before it is completely irrelevant whether fast forward was\n> pulled into C directly from A or from B.\n>\n> Whats the relevant content of getting the same thing from A or B ?\n\nExactly!!!  So what is relevant of getting the same thing from Dave's A or\nB?  The only point would be to show chain of command, but you don't seem\ninterested in that.\n\n> If you want to do this, you break the fast forward mechanism and\n> reinvent the pull ping-pong which is avoided by the fast forwards.\n\nYes, I think there are other ways to avoid the ping pong too.\n\nSean\n\n\n"},{"id":"3083","messageId":"428291CD.7010701@zytor.com","threadId":"575","inReplyTo":"1115847510.22180.108.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2005-05-11T23:14:21Z","receivedAt":"2005-05-11T23:14:21Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"Thomas Gleixner wrote:\n> This is an initial attempt to enable history tracking for multiple\n> repositories in a consistent state. At the moment this can only be done\n> by heuristic guessing on the parent dates and the committer names. \n> This fails for example with Dave Millers net-2.6 and sparc-2.6 trees, as\n> in both cases the committer name is the same. It fails also completely\n> in cases where the system clock of the committer is wrong and the merge\n> is a head forward. The old bk repository contains entries from 1999 and\n> 2027, which will happen also with git over the time. \n> \n> To identify a repository commit-tree tries to read an environment\n> variable \"GIT_REPOSITORY_ID\" and has a fallback to the current working\n> directory. The environment variable keeps the door open for managed\n> repository id's, but the current working directory is certainly a quite\n> helpful information to solve the origin decision for history tracking.\n> \n> Adding a line after the committer should not break any existing tools\n> AFAICS.\n> \n\nI would like to suggest a few limiters are set on the repoid.  In \nparticular, I'd like to suggest that a repoid is a UUID, that a file is \nused to track it (.git/repoid), and that if it doesn't exist, a new one \nis created from /dev/urandom.\n\n\t-hpa\n"},{"id":"3084","messageId":"1115854419.22180.196.camel@tglx","threadId":"575","inReplyTo":"2883.10.10.10.24.1115852463.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-11T23:33:39Z","receivedAt":"2005-05-11T23:33:39Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 19:01 -0400, Sean wrote:\n> Why would anyone care how many repositories Russell or Greg use?  Why does\n> anyone care if Dave used his repo A, B, or C?   Aren't I still just going\n> to contact him via his author email addy if I have an issue with an object\n> he has added to the stream?\n\nHe? What the hell have the sparc-2.6 and net-2.6 in common except the\nsame owner/maintainer ? Should we base the heuristics on directories and\nfilenames ? Cool.\n\nIt is relevant for the maintainers to have information which is\nconsistent over a repository. So the source of change _is_ relevant.\n\n> Exactly!!!  So what is relevant of getting the same thing from Dave's A or\n> B?  \n\nThe relevant part is, that it _is_ relevant for Dave to know where the\nhell a problem was introduced.\n\n> The only point would be to show chain of command, but you don't seem\n> interested in that.\n\nWhat is the chain of commands good for ? Does the chain of commands\nchange the history information in a specific repository ? \n\nNo. \n\nIf you buy food, then it is relevant if you get it from A directly or\nvia B. The commit and the referenced tree is immutable and does neither\nchange the consistency nor gets uneatable.\n\n> > If you want to do this, you break the fast forward mechanism and\n> > reinvent the pull ping-pong which is avoided by the fast forwards.\n> \n> Yes, I think there are other ways to avoid the ping pong too.\n\nTrue, but not with a plain rsync approach\n\ntglx\n\n\n"},{"id":"3085","messageId":"1115854733.22180.202.camel@tglx","threadId":"575","inReplyTo":"428291CD.7010701@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-11T23:38:53Z","receivedAt":"2005-05-11T23:38:53Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 16:14 -0700, H. Peter Anvin wrote:\n> I would like to suggest a few limiters are set on the repoid.  In \n> particular, I'd like to suggest that a repoid is a UUID, that a file is \n> used to track it (.git/repoid), and that if it doesn't exist, a new one \n> is created from /dev/urandom.\n\nWhich is complety error prone due to rsync. Some of the repositories on\nkernel.org keep identical copies of .git/description already. Why should\nthey preserve an unique .git/repoid ?\n\nThere is one clean way to solve this. Managed repository id's and a lot\nof discipline.\n\nI expect neither of those two things to happen, but a complete working\ndirectory path is better than nothing to make educated guesses.\nCommitter names (maintainers) can be the same over repositories, but its\nunlikely that somebody who manages more than one subsystems uses the\nsame working directory for them.\n\ntglx\n\n\n"},{"id":"3086","messageId":"428297DB.8030905@zytor.com","threadId":"575","inReplyTo":"1115854733.22180.202.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2005-05-11T23:40:11Z","receivedAt":"2005-05-11T23:40:11Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"Thomas Gleixner wrote:\n> \n> Which is complety error prone due to rsync. Some of the repositories on\n> kernel.org keep identical copies of .git/description already. Why should\n> they preserve an unique .git/repoid ?\n> \n> There is one clean way to solve this. Managed repository id's and a lot\n> of discipline.\n> \n> I expect neither of those two things to happen, but a complete working\n> directory path is better than nothing to make educated guesses.\n> Committer names (maintainers) can be the same over repositories, but its\n> unlikely that somebody who manages more than one subsystems uses the\n> same working directory for them.\n> \n\nI can tell you what would happen in at least my case: you'll see each \n\"repository\" with about 23 different IDs.\n\n\t-hpa\n"},{"id":"3087","messageId":"2997.10.10.10.24.1115855049.squirrel@linux1","threadId":"575","inReplyTo":"1115854419.22180.196.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-11T23:44:09Z","receivedAt":"2005-05-11T23:44:09Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 7:33 pm, Thomas Gleixner said:\n\n> He? What the hell have the sparc-2.6 and net-2.6 in common except the\n> same owner/maintainer ? Should we base the heuristics on directories and\n> filenames ? Cool.\n\nWhat problem are you trying to solve?  Has dave or russell or anybody with\nmultiple repositories given you reason to think they have a problem\ntracking their personal repositories?   I doubt it very much.\n\n>> The only point would be to show chain of command, but you don't seem\n>> interested in that.\n>\n> What is the chain of commands good for ? Does the chain of commands\n> change the history information in a specific repository ?\n\nThe chain of command might be good to know in the same way that an\naccurate signed-off-by chain is good to know.\n\n> No.\n\nYes.  Not that I care personally very much.\n\n> If you buy food, then it is relevant if you get it from A directly or\n> via B. The commit and the referenced tree is immutable and does neither\n> change the consistency nor gets uneatable.\n\nLol..\n\n> True, but not with a plain rsync approach\n\nAgreed.\n\nSean.\n\n\n"},{"id":"3089","messageId":"3004.10.10.10.24.1115855130.squirrel@linux1","threadId":"575","inReplyTo":"428297DB.8030905@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-11T23:45:30Z","receivedAt":"2005-05-11T23:45:30Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 7:40 pm, H. Peter Anvin said:\n\n> I can tell you what would happen in at least my case: you'll see each\n> \"repository\" with about 23 different IDs.\n>\n\nAmongst other issues and complexity this will introduce.   This is really\na solution in search of a problem anyway.\n\nSean\n\n\n"},{"id":"3092","messageId":"42829D9F.3010403@zytor.com","threadId":"575","inReplyTo":"3004.10.10.10.24.1115855130.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2005-05-12T00:04:47Z","receivedAt":"2005-05-12T00:04:47Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"Sean wrote:\n> \n> Amongst other issues and complexity this will introduce.   This is really\n> a solution in search of a problem anyway.\n> \n\nYou mean repoid?\n\n\t-hpa\n\n"},{"id":"3093","messageId":"3090.10.10.10.24.1115857232.squirrel@linux1","threadId":"575","inReplyTo":"42829D9F.3010403@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T00:20:32Z","receivedAt":"2005-05-12T00:20:32Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 8:04 pm, H. Peter Anvin said:\n> Sean wrote:\n>>\n>> Amongst other issues and complexity this will introduce.   This is\n>> really a solution in search of a problem anyway.\n>>\n> You mean repoid?\n\nHey Peter,\n\n   Yes, it will create just as many problems as it sets out to solve. \nActually, I still don't know what problem is being addressed by the\ncurrent proposal.\n\nSean\n\n\n"},{"id":"3094","messageId":"1115857838.22180.250.camel@tglx","threadId":"575","inReplyTo":"2997.10.10.10.24.1115855049.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T00:30:38Z","receivedAt":"2005-05-12T00:30:38Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 19:44 -0400, Sean wrote:\n> What problem are you trying to solve?  \n\nThe problem to explain the obvious facts to an agnostic\n\n> Has dave or russell or anybody with\n> multiple repositories given you reason to think they have a problem\n> tracking their personal repositories?   I doubt it very much.\n\nAarg. Did you ever get in contact with QA departements ?\n\nAssume you have:  bugfix - stable - devel repositories.\n\nYou have to track down a problem in bugfix and the source of it.\nIt does not matter whether the maintainer of \"bugfix\" pulled it from\ndevel or from stable. It's his fault anyway. \n\nBut we are not talking about faults and guiltiness. We want to identify\nthe location and the context _where_ and _why_ this change was created.\n\nThe current solution of git makes it impossible to retrieve this\ninformation in a consistent way. \n\nSo you have no quick solution to figure out what happened. Quite\ncontrary, you have to dissect inconsistent information.\n\nSee also the thread about \"Stop git-rev-list at sha1 match\".\n\n> The chain of command might be good to know in the same way that an\n> accurate signed-off-by chain is good to know.\n\nThis sentence makes me guess, that you actually are working in a QA\ndepartement and therefor trying to maximize the amount of irrelevant\ninformation.\n\ntglx\n\n\n"},{"id":"3096","messageId":"1115858022.22180.256.camel@tglx","threadId":"575","inReplyTo":"428297DB.8030905@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T00:33:41Z","receivedAt":"2005-05-12T00:33:41Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 16:40 -0700, H. Peter Anvin wrote:\n> > I expect neither of those two things to happen, but a complete working\n> > directory path is better than nothing to make educated guesses.\n> > Committer names (maintainers) can be the same over repositories, but its\n> > unlikely that somebody who manages more than one subsystems uses the\n> > same working directory for them.\n> > \n> \n> I can tell you what would happen in at least my case: you'll see each \n> \"repository\" with about 23 different IDs.\n\nYou won. :)\n\nSo what alternatives do we have ?\n\n- commit history per repository\n  .git/head-history               rsync and user error prone \n- .git/repoid                     rsync error prone\n- GIT_REPO_ID=xyz                 user  error prone\n- directory name based guessing   hpa error prone\n\nWhat's your preferred error scenario ?\n\ntglx\n\n\n"},{"id":"3097","messageId":"200505111941.04104.dtor_core@ameritech.net","threadId":"575","inReplyTo":"1115854733.22180.202.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Dmitry Torokhov","fromEmail":"dtor_core@ameritech.net","sentAt":"2005-05-12T00:41:03Z","receivedAt":"2005-05-12T00:41:03Z","isPatch":true,"sender":{"key":"dtor_core@ameritech.net","avatar":null},"body":"On Wednesday 11 May 2005 18:38, Thomas Gleixner wrote:\n> On Wed, 2005-05-11 at 16:14 -0700, H. Peter Anvin wrote:\n> > I would like to suggest a few limiters are set on the repoid.  In \n> > particular, I'd like to suggest that a repoid is a UUID, that a file is \n> > used to track it (.git/repoid), and that if it doesn't exist, a new one \n> > is created from /dev/urandom.\n> \n> Which is complety error prone due to rsync. Some of the repositories on\n> kernel.org keep identical copies of .git/description already. Why should\n> they preserve an unique .git/repoid ?\n\nI think that an unique repoid should be created automatically every time\nyou clone. It is ok for it to go away when you discard a tree, it will just\nidentify a line (set) of changes originating from some place.\n\n-- \nDmitry\n"},{"id":"3098","messageId":"1115858670.22180.259.camel@tglx","threadId":"575","inReplyTo":"200505111941.04104.dtor_core@ameritech.net","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T00:44:30Z","receivedAt":"2005-05-12T00:44:30Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 19:41 -0500, Dmitry Torokhov wrote:\n> > \n> > Which is complety error prone due to rsync. Some of the repositories on\n> > kernel.org keep identical copies of .git/description already. Why should\n> > they preserve an unique .git/repoid ?\n> \n> I think that an unique repoid should be created automatically every time\n> you clone. It is ok for it to go away when you discard a tree, it will just\n> identify a line (set) of changes originating from some place.\n\nYes, as long as you make sure that rsync does _NOT_ pollute/populate it\n\ntglx\n\n\n"},{"id":"3099","messageId":"3185.10.10.10.24.1115858739.squirrel@linux1","threadId":"575","inReplyTo":"1115857838.22180.250.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T00:45:39Z","receivedAt":"2005-05-12T00:45:39Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 8:30 pm, Thomas Gleixner said:\n> On Wed, 2005-05-11 at 19:44 -0400, Sean wrote:\n>> What problem are you trying to solve?\n>\n> The problem to explain the obvious facts to an agnostic\n\nNo the problem is you're seeing dragons.\n\n> Aarg. Did you ever get in contact with QA departements ?\n\nCan we please not _invent_ problems where there are none?  Can you show a\nspecific case today where repoid would make one ounce of difference in the\nlife of anyone?\n\n> Assume you have:  bugfix - stable - devel repositories.\n\nWhy does this imaginary QA department use the same committer and author\nfor all of them?  And why is it you switch from imaginary problems of\ndave, greg and russell to imaginary problems of a fictitious QA\ndepartment?\n\n> You have to track down a problem in bugfix and the source of it.\n> It does not matter whether the maintainer of \"bugfix\" pulled it from\n> devel or from stable. It's his fault anyway.\n>\n> But we are not talking about faults and guiltiness. We want to identify\n> the location and the context _where_ and _why_ this change was created.\n>\n> The current solution of git makes it impossible to retrieve this\n> information in a consistent way.\n\nWrong.  When a commit is pulled from a repository, all the surrounding\ncontext of every commit that came before it and after it on that branch is\npulled right along with it.\n\n> So you have no quick solution to figure out what happened. Quite\n> contrary, you have to dissect inconsistent information.\n>\n> See also the thread about \"Stop git-rev-list at sha1 match\".\n\nSorry, this one is entertaining enough <g>\n\n>> The chain of command might be good to know in the same way that an\n>> accurate signed-off-by chain is good to know.\n>\n> This sentence makes me guess, that you actually are working in a QA\n> departement and therefor trying to maximize the amount of irrelevant\n> information.\n\nNo, you seem to want it both ways.  Sometimes it's important to you to\nknow where an object came from and how it got there, and sometimes it's\nnot.  Interesting blind spot.\n\nSean\n\n\n"},{"id":"3100","messageId":"1115859372.22180.266.camel@tglx","threadId":"575","inReplyTo":"3185.10.10.10.24.1115858739.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T00:56:12Z","receivedAt":"2005-05-12T00:56:12Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 20:45 -0400, Sean wrote:\n> Can we please not _invent_ problems where there are none?  Can you show a\n> specific case today where repoid would make one ounce of difference in the\n> life of anyone?\n\nTry to find out the history of kernel.org/.../dwmw2/audit-2.6 in correct\norder, using the available tools. \n\nCome back to me when you are done.\n\n> No, you seem to want it both ways.  Sometimes it's important to you to\n> know where an object came from and how it got there, and sometimes it's\n> not.  Interesting blind spot.\n\nHe ? \n\nI was not aware, that omitting irrelevant information is creating a\nblind spot. \n\nPeriod. End of thread.\n\ntglx\n\n\n"},{"id":"3101","messageId":"3259.10.10.10.24.1115859535.squirrel@linux1","threadId":"575","inReplyTo":"1115859372.22180.266.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T00:58:55Z","receivedAt":"2005-05-12T00:58:55Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Wed, May 11, 2005 8:56 pm, Thomas Gleixner said:\n\n> Try to find out the history of kernel.org/.../dwmw2/audit-2.6 in correct\n> order, using the available tools.\n>\n> Come back to me when you are done.\n\nAsk me any question that matters and i'll answer it with available tools.\n\n> I was not aware, that omitting irrelevant information is creating a\n> blind spot.\n\nSorry, your assessment that it is irrelevant is incorrect and overlooks\nthat  there is information loss.\n\n> Period. End of thread.\n\nFair enough.\n\nSean\n\n\n"},{"id":"3103","messageId":"4282ACD3.50009@zytor.com","threadId":"575","inReplyTo":"1115858670.22180.259.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2005-05-12T01:09:39Z","receivedAt":"2005-05-12T01:09:39Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"Thomas Gleixner wrote:\n> On Wed, 2005-05-11 at 19:41 -0500, Dmitry Torokhov wrote:\n> \n>>>Which is complety error prone due to rsync. Some of the repositories on\n>>>kernel.org keep identical copies of .git/description already. Why should\n>>>they preserve an unique .git/repoid ?\n>>\n>>I think that an unique repoid should be created automatically every time\n>>you clone. It is ok for it to go away when you discard a tree, it will just\n>>identify a line (set) of changes originating from some place.\n> \n> \n> Yes, as long as you make sure that rsync does _NOT_ pollute/populate it\n> \n\nYou shouldn't be rsyncing the .git directory, only .git/objects anyway. \n   Some people seem to have merely copied Linus' entire tree, and that's \nwhat causing problems.\n\nThat one you can't win.\n\n\t-hpa\n\n"},{"id":"3104","messageId":"4282ADC9.2010900@zytor.com","threadId":"575","inReplyTo":"4282ACD3.50009@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2005-05-12T01:13:45Z","receivedAt":"2005-05-12T01:13:45Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"H. Peter Anvin wrote:\n>>\n>> Yes, as long as you make sure that rsync does _NOT_ pollute/populate it\n>>\n> \n> You shouldn't be rsyncing the .git directory, only .git/objects anyway. \n>   Some people seem to have merely copied Linus' entire tree, and that's \n> what causing problems.\n> \n> That one you can't win.\n> \n\nWhat I meant with that is I think .git/repoid is the right thing, if the \nfile doesn't exist a new ID file is generated.\n\nIf people are copying their repoid file explicitly it's up to them to \nknow what they're doing.\n\n\t-hpa\n"},{"id":"3105","messageId":"7vekcdmd16.fsf@assigned-by-dhcp.cox.net","threadId":"575","inReplyTo":"1115858022.22180.256.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-12T01:46:45Z","receivedAt":"2005-05-12T01:46:45Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"TG\" == Thomas Gleixner <tglx@linutronix.de> writes:\n\nTG> So what alternatives do we have ?\n\nHow about doing nothing of this sort, introducing repo-id?  I do\nnot understand what problem repo-id is solving.\n\nEarlier in your response to Sean <seanlkml@sympaticoca>, you\ngave a QA department example.\n\nTG> You have to track down a problem in bugfix and the source of it.\nTG> It does not matter whether the maintainer of \"bugfix\" pulled it from\nTG> devel or from stable. It's his fault anyway. \nTG> \nTG> But we are not talking about faults and guiltiness. We want\nTG> to identify the location and the context _where_ and _why_\nTG> this change was created.\n\nHere is my understanding of the scenario you are describing.\nAre these correct?\n\n - There is a problem in the source.\n\n - You know what lines of which file is causing the problem.\n   But you cannot tell how the file got into that state and why\n   by just looking at the problem revision.\n\n - You have the complete history (commit chain) leading to the\n   revision.\n\n - You want to get some context to help you understand why those\n   offending lines are there.\n\nAssuming I am with you so far, I would like to know what kind of\ninformation you are looking for (\"some context to help you\nunderstand\").  Is a specific commit object (rather, one pair of\ncommits that is parent-child) that made those lines into the\ncurrent shape enough?\n\nMy understanding of Sean's argument is that finding such a\ncommit (or a commit-pair) is a good enough place to start\nunderstanding why that change was introduced and finding who to\nask for help, and it does not matter in which repository the\nchange was introduced.  I tend to agree with him if that is what\nis being discussed.\n\nIf the owner has multiple repositories and he needs to know in\nwhich of his repositories the change was introduced, I assume he\nwould xsbe able to run the same procedure the QA department run\nto find the problem commit on each of his repositories to find\nsuch a commit, and commits around it (its ancestors and\ndescendants).  So a maintainer having more than one repositories\ndoes not seem to be an issue, either.\n\nSo I am having a hard time understanding what problem repo-id\nsolves.\n\n\n\n"},{"id":"3108","messageId":"20050512033037.GF1185@ca-server1.us.oracle.com","threadId":"575","inReplyTo":"4282ADC9.2010900@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Joel Becker","fromEmail":"joel.becker@oracle.com","sentAt":"2005-05-12T03:30:38Z","receivedAt":"2005-05-12T03:30:38Z","isPatch":true,"sender":{"key":"joel.becker@oracle.com","avatar":null},"body":"On Wed, May 11, 2005 at 06:13:45PM -0700, H. Peter Anvin wrote:\n> What I meant with that is I think .git/repoid is the right thing, if the \n> file doesn't exist a new ID file is generated.\n\n\tCount me in the \"what does repoid help?\" camp.  If we create a\nnew UUID on each clone, imagine this typical usage:\n\n\tlinux-2.6.git has repoid AAAAAA.\n\tI clone it locally, local-2.6-clean, repoid BBBBBB\n\tI clone the local one, local-2.6-working, repoid CCCCCC\n\tI work in the local one and commit my change.  commit abcd,\n\t\trepoid CCCCCC.\n\tI then rsync, copy, or clone that working repository to some\n\t\tplace that Linus can pull from.\n\tI then throw away the copy with repoid CCCCCC, because I'm done\n\t\twith that temporary work area.\n\tlather, rinse, repeat.\n\n\tIOW, each of my changes, if I work like this, has a different\nrepoid.  And when a problem arises, the repoid tells us diddly.  I\nthought one of the tenents of bk/git/codeville/whatever development is\nthat clone is the way to do any temporary area.  You work in a clone or\n10, and then clean up for submission.  Which of the 10 clones is the\nassociated repoid seems, well, unimporant.\n\t\nJoel\n\n-- \n\nLife's Little Instruction Book #99\n\n\t\"Think big thoughts, but relish small pleasures.\"\n\nJoel Becker\nSenior Member of Technical Staff\nOracle\nE-mail: joel.becker@oracle.com\nPhone: (650) 506-8127\n"},{"id":"3123","messageId":"1115884637.22180.277.camel@tglx","threadId":"575","inReplyTo":"7vekcdmd16.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T07:57:17Z","receivedAt":"2005-05-12T07:57:17Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 18:46 -0700, Junio C Hamano wrote:\n> >>>>> \"TG\" == Thomas Gleixner <tglx@linutronix.de> writes:\n> So I am having a hard time understanding what problem repo-id\n> solves.\n\nRn   o\n     | \\\nRn-1 o  |\n     |  o Mn\n     |  o Mn-1\nRn-2 o /\nRn-3 o\n\nrev-tree shows you \n\nRn\nRn-1\nMn\nMn-1\nRn-2\nRn-3\n\nWhich is wrong. \n\nAfter syncing M to Rn you see the same thing in M\n\nRn\nRn-1\nMn\nMn-1\nRn-2\nRn-3\n\nwhich is also wrong. \n\nThe correct display looking at R is\n\nRn\n Mn\n Mn-1\nRn-1\nRn-2\nRn-3\n\nLooking from M it is\n\nRn\n Rn-1\n Rn-2\nMn\nMn-2\nRn-3\n\ntglx\n\n\n\n\n\n\n\n"},{"id":"3125","messageId":"1115889450.22180.301.camel@tglx","threadId":"575","inReplyTo":"4282ADC9.2010900@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T09:17:30Z","receivedAt":"2005-05-12T09:17:30Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Wed, 2005-05-11 at 18:13 -0700, H. Peter Anvin wrote:\n> > You shouldn't be rsyncing the .git directory, only .git/objects anyway. \n> >   Some people seem to have merely copied Linus' entire tree, and that's \n> > what causing problems. \n> > That one you can't win.\n\n:)\n\n> What I meant with that is I think .git/repoid is the right thing, if the \n> file doesn't exist a new ID file is generated.\n\nYep, convinced. \nThe only thing I'd like to see is some thing which is human readable and\nmaybe helpful to deduce the context of this. \nAdding a dev/random number to make it unique is not bad.\n\nSo what about\nrepoid 'pwd' 'random' ?\n\n> If people are copying their repoid file explicitly it's up to them to \n> know what they're doing.\n\nTrue. I makes sense for maintainers doing updates to their public\nrepositories to keep the same repoid in their working copy at home/work.\n\ntglx\n\n\n\n"},{"id":"3127","messageId":"1895.10.10.10.24.1115890333.squirrel@linux1","threadId":"575","inReplyTo":"1115884637.22180.277.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T09:32:13Z","receivedAt":"2005-05-12T09:32:13Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 3:57 am, Thomas Gleixner said:\n> On Wed, 2005-05-11 at 18:46 -0700, Junio C Hamano wrote:\n>> >>>>> \"TG\" == Thomas Gleixner <tglx@linutronix.de> writes:\n>> So I am having a hard time understanding what problem repo-id\n>> solves.\n>\n> Rn   o\n>      > \\\n> Rn-1 o  |\n>      >  o Mn\n>      >  o Mn-1\n> Rn-2 o /\n> Rn-3 o\n>\n[snip]\n\nAll you forgot was to explain how repo-id helps one iota.   And if you're\nup to it, explain how it would help sort out the following, where Xn is a\nfast forward head:\n\nRn   o\n     > \\\nRn-1 o  |\n     >  o Mn\n     >  o Mn-1\nRn-2 o /\nXn   o\n\nAnd what about sorting out branches created by a single developer in a\nsingle repository? doh!   Sounds like a solution that addresses all these\nshould be worked out instead of repoid.   You really are barking up the\nwrong tree here.\n\nJust because rev-tree may get it wrong, doesn't mean every other tool does.\nActually, I just ran your above scenario through git, and here is what\ncg-log shows, which seems perfectly acceptable:\n\ncommit 19de0d5cd9269f0869fecb0b866efa12ef882a11\nparent 490ae38bcbf70fe19bcc0c1a28d1fa301620a2d5\nparent 71890fc6b9e3da470623dbbf3dc492b937757a37\n    Merge with ../test2/.git\n    Rn\n\ncommit 490ae38bcbf70fe19bcc0c1a28d1fa301620a2d5\nparent b96d60d7b632a188f4550762f8a1a99f8b381c9b\n    Rn-1\n\ncommit b96d60d7b632a188f4550762f8a1a99f8b381c9b\nparent 0dbe9da9b565bb695d464532470734c6f4676951\n    Rn-2\n\ncommit 71890fc6b9e3da470623dbbf3dc492b937757a37\nparent 81dbf4bac14c3caeadfa084d57ad78544e69d6d8\n    Mn\n\ncommit 81dbf4bac14c3caeadfa084d57ad78544e69d6d8\nparent 0dbe9da9b565bb695d464532470734c6f4676951\n    Mn-1\n\ncommit 0dbe9da9b565bb695d464532470734c6f4676951\nparent 221a1474b35d700fd67895cb6206d04fc17b083a\n    Rn-3\n\nIn fact, please see attached .png image that shows how the nice gitk tool\nfrom Paul Mackerras displays it exactly as you request WITHOUT Repo-id.\n\n* Please * explain what problem you are trying to solve and how repoid\nwill solve it.\n\nSean"},{"id":"3128","messageId":"1115890792.22180.306.camel@tglx","threadId":"575","inReplyTo":"1895.10.10.10.24.1115890333.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T09:39:52Z","receivedAt":"2005-05-12T09:39:52Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 05:32 -0400, Sean wrote:\n> In fact, please see attached .png image that shows how the nice gitk tool\n> from Paul Mackerras displays it exactly as you request WITHOUT Repo-id.\n\nPlease do the complete test. Sync test2 with test1 and show me the\npicture there. It will be the same as you see in test1, which is wrong\n\n> * Please * explain what problem you are trying to solve and how repoid\n> will solve it.\n\nHaving the repository id in there you can identify the different order\nof test2\n\ntglx\n\n\n"},{"id":"3129","messageId":"3656.10.10.10.24.1115891188.squirrel@linux1","threadId":"575","inReplyTo":"1115890792.22180.306.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T09:46:28Z","receivedAt":"2005-05-12T09:46:28Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 5:39 am, Thomas Gleixner said:\n\n> Please do the complete test. Sync test2 with test1 and show me the\n> picture there. It will be the same as you see in test1, which is wrong\n\nIt will get the fast forward head from test1, and so it _should_ show the\nexact same thing!  The repositories are in sync, they should display the\nexact same way.  What is the problem?\n\n> Having the repository id in there you can identify the different order\n> of test2\n>\n\nWhat different order?   Everything I want as a developer or even as a QA\ndepartment is right there in front of me.    What VALUE does some other\norder have?   What question will you answer with a different order?   Who\nwill ask this question?  Why would anyone care?\n\nSean\n\n"},{"id":"3131","messageId":"1115892451.16187.561.camel@hades.cambridge.redhat.com","threadId":"575","inReplyTo":"3259.10.10.10.24.1115859535.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-12T10:07:30Z","receivedAt":"2005-05-12T10:07:30Z","isPatch":true,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Wed, 2005-05-11 at 20:58 -0400, Sean wrote:\n> > Try to find out the history of kernel.org/.../dwmw2/audit-2.6 in \n> > correct order, using the available tools.\n> >\n> > Come back to me when you are done.\n> \n> Ask me any question that matters and i'll answer it with available\n> tools.\n\nThe above question matters, so please answer it if you can. I'll make it\nclearer for you though...\n\nBy 'correct order' Thomas means the order in which my old BK-export\nscript used to generate the \"changesets since last release\" web page;\nthe order in which the changes actually got merged into Linus'\nrepository.\n\nIf I looked at the page yesterday, and then I look at it again today, I\nwant all the commits I hadn't seen already to be at the _top_.\nRegardless of the date on which they were _originally_ committed to some\nprivate tree elsewhere.\n\nThere were a lot of complaints until I worked out how to get that\nordering out of BitKeeper.\n\n-- \ndwmw2\n\n"},{"id":"3132","messageId":"3203.10.10.10.24.1115893120.squirrel@linux1","threadId":"575","inReplyTo":"1115892451.16187.561.camel@hades.cambridge.redhat.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T10:18:40Z","receivedAt":"2005-05-12T10:18:40Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 6:07 am, David Woodhouse said:\n> On Wed, 2005-05-11 at 20:58 -0400, Sean wrote:\n>> > Try to find out the history of kernel.org/.../dwmw2/audit-2.6 in\n>> > correct order, using the available tools.\n>> >\n>> > Come back to me when you are done.\n>>\n>> Ask me any question that matters and i'll answer it with available\n>> tools.\n>\n> The above question matters, so please answer it if you can. I'll make it\n> clearer for you though...\n>\n> By 'correct order' Thomas means the order in which my old BK-export\n> script used to generate the \"changesets since last release\" web page;\n> the order in which the changes actually got merged into Linus'\n> repository.\n>\n> If I looked at the page yesterday, and then I look at it again today, I\n> want all the commits I hadn't seen already to be at the _top_.\n> Regardless of the date on which they were _originally_ committed to some\n> private tree elsewhere.\n>\n> There were a lot of complaints until I worked out how to get that\n> ordering out of BitKeeper.\n>\n\nDoes BK use a repo ID ?  If not, can you not apply the same process to\ngit?   Seems the fast forward heads might complicate things slightly....\n\nSean\n\n\n\n"},{"id":"3133","messageId":"3019.10.10.10.24.1115894386.squirrel@linux1","threadId":"575","inReplyTo":"1115892451.16187.561.camel@hades.cambridge.redhat.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T10:39:46Z","receivedAt":"2005-05-12T10:39:46Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 6:07 am, David Woodhouse said:\n> On Wed, 2005-05-11 at 20:58 -0400, Sean wrote:\n>> > Try to find out the history of kernel.org/.../dwmw2/audit-2.6 in\n>> > correct order, using the available tools.\n>> >\n>> > Come back to me when you are done.\n>>\n>> Ask me any question that matters and i'll answer it with available\n>> tools.\n>\n> The above question matters, so please answer it if you can. I'll make it\n> clearer for you though...\n>\n> By 'correct order' Thomas means the order in which my old BK-export\n> script used to generate the \"changesets since last release\" web page;\n> the order in which the changes actually got merged into Linus'\n> repository.\n>\n> If I looked at the page yesterday, and then I look at it again today, I\n> want all the commits I hadn't seen already to be at the _top_.\n> Regardless of the date on which they were _originally_ committed to some\n> private tree elsewhere.\n>\n> There were a lot of complaints until I worked out how to get that\n> ordering out of BitKeeper.\n>\n\nActually, here is one very simple idea, just use the times from the object\nfiles themselves.  Now as you descend the hierarchy you can simply stat\nthe object file to get the \"local commit time\".  Just simply stop\ndescending down each branch when you find a commit with a time stamp that\nis outside the range you're interested in.\n\nSean\n\n\n"},{"id":"3134","messageId":"1115894579.22180.309.camel@tglx","threadId":"575","inReplyTo":"3203.10.10.10.24.1115893120.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T10:42:59Z","receivedAt":"2005-05-12T10:42:59Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 06:18 -0400, Sean wrote:\n> Does BK use a repo ID ?  \n\nYes.\n\n\n\n"},{"id":"3135","messageId":"1115894589.16187.570.camel@hades.cambridge.redhat.com","threadId":"575","inReplyTo":"3203.10.10.10.24.1115893120.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-12T10:43:09Z","receivedAt":"2005-05-12T10:43:09Z","isPatch":true,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Thu, 2005-05-12 at 06:18 -0400, Sean wrote:\n> Does BK use a repo ID ?  If not, can you not apply the same process to\n> git?   Seems the fast forward heads might complicate things\n> slightly....\n\nBK doesn't fast-forward in quite the same way as git does. But we're not\nreally supposed to be paying too much attention to how BK works.\n\nYour claim is that you can do this with existing git tools. I await that\ndemonstration.\n\n-- \ndwmw2\n\n"},{"id":"3136","messageId":"1280.10.10.10.24.1115895501.squirrel@linux1","threadId":"575","inReplyTo":"1115894589.16187.570.camel@hades.cambridge.redhat.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T10:58:21Z","receivedAt":"2005-05-12T10:58:21Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 6:43 am, David Woodhouse said:\n> On Thu, 2005-05-12 at 06:18 -0400, Sean wrote:\n>> Does BK use a repo ID ?  If not, can you not apply the same process to\n>> git?   Seems the fast forward heads might complicate things\n>> slightly....\n>\n> BK doesn't fast-forward in quite the same way as git does. But we're not\n> really supposed to be paying too much attention to how BK works.\n\nlol, i just asked because you brought it up.\n\n> Your claim is that you can do this with existing git tools. I await that\n> demonstration.\n\nWell i'm not going to write the code for you, but simply descend the\nhistory ordered by local commit time as given by the file object and\nyou're done.\n\nSean.\n\n\n"},{"id":"3137","messageId":"1115896713.22180.314.camel@tglx","threadId":"575","inReplyTo":"3656.10.10.10.24.1115891188.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T11:18:33Z","receivedAt":"2005-05-12T11:18:33Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 05:46 -0400, Sean wrote:\n> On Thu, May 12, 2005 5:39 am, Thomas Gleixner said:\n> \n> > Please do the complete test. Sync test2 with test1 and show me the\n> > picture there. It will be the same as you see in test1, which is wrong\n> \n> It will get the fast forward head from test1, and so it _should_ show the\n> exact same thing!  The repositories are in sync, they should display the\n> exact same way.  What is the problem?\n\nWhat you see is a clone and not a sync / merge. \n\ntglx\n\n\n"},{"id":"3138","messageId":"3745.10.10.10.24.1115897090.squirrel@linux1","threadId":"575","inReplyTo":"1115896713.22180.314.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T11:24:50Z","receivedAt":"2005-05-12T11:24:50Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 7:18 am, Thomas Gleixner said:\n> On Thu, 2005-05-12 at 05:46 -0400, Sean wrote:\n>> On Thu, May 12, 2005 5:39 am, Thomas Gleixner said:\n>>\n>> > Please do the complete test. Sync test2 with test1 and show me the\n>> > picture there. It will be the same as you see in test1, which is wrong\n>>\n>> It will get the fast forward head from test1, and so it _should_ show\n>> the\n>> exact same thing!  The repositories are in sync, they should display the\n>> exact same way.  What is the problem?\n>\n> What you see is a clone and not a sync / merge.\n>\n\nRight, that's what a fast forward head is.  It replaces a sync / merge and\nthe  trees become exactly syncronized via a shared head.   I have mixed\nfeelings about fast forward heads, but they don't hide _too_ much\ninformation.  Is there any _useful_ question you can ask where the answer\nis lost for all time because of this.\n\nSean\n\n\n"},{"id":"3139","messageId":"1115898230.11872.8.camel@tglx","threadId":"575","inReplyTo":"3745.10.10.10.24.1115897090.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T11:43:50Z","receivedAt":"2005-05-12T11:43:50Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 07:24 -0400, Sean wrote:\n> Right, that's what a fast forward head is.  It replaces a sync / merge and\n> the  trees become exactly syncronized via a shared head.   I have mixed\n> feelings about fast forward heads, but they don't hide _too_ much\n> information.  \n\nThe question is how hard it is to do a reconstruction. In the current\nstate automatic reconstruction is simply not possible. \n\n> Is there any _useful_ question you can ask where the answer\n> is lost for all time because of this.\n\nI want to see the history of _any_ repository in the order of  changes\nin the specific repository. The fast forward heads without additional\ninformation simply do not allow this. \n\nI want to see the history of a file in the correct order. The current\nsolution ends up with useless file version diffs or annotates where\nchanges are shown in random order and therefor worthless.\n\ntglx\n\n\n"},{"id":"3141","messageId":"2247.10.10.10.24.1115898521.squirrel@linux1","threadId":"575","inReplyTo":"1115898230.11872.8.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T11:48:41Z","receivedAt":"2005-05-12T11:48:41Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 7:43 am, Thomas Gleixner said:\n> On Thu, 2005-05-12 at 07:24 -0400, Sean wrote:\n>> Right, that's what a fast forward head is.  It replaces a sync / merge\n>> and\n>> the  trees become exactly syncronized via a shared head.   I have mixed\n>> feelings about fast forward heads, but they don't hide _too_ much\n>> information.\n>\n> The question is how hard it is to do a reconstruction. In the current\n> state automatic reconstruction is simply not possible.\n\nYou keep evading the question.  What are you reconstructing, and why? \nWhat questions can you then answer with your reconstruction that you can't\nanswer  with what we already have today.   You HAVE to explain what the\nVALUE of the end result is beyond what we already have today.\n\n>> Is there any _useful_ question you can ask where the answer\n>> is lost for all time because of this.\n>\n> I want to see the history of _any_ repository in the order of  changes\n> in the specific repository. The fast forward heads without additional\n> information simply do not allow this.\n\nThen just download their repository with the -t switch of rsync or its\nequal and preserve the timestamps on the files as they exist in the remote\nrepository.\n\n> I want to see the history of a file in the correct order. The current\n> solution ends up with useless file version diffs or annotates where\n> changes are shown in random order and therefor worthless.\n>\n\nWhat is this correct order you're talking about?   The order is _given_\nexplicitly in the parent child relationships.  There is no other order of\nany value, at least none you've been able to put forth.\n\nSean\n\n\n"},{"id":"3143","messageId":"1115900168.11872.13.camel@tglx","threadId":"575","inReplyTo":"2247.10.10.10.24.1115898521.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T12:16:08Z","receivedAt":"2005-05-12T12:16:08Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 07:48 -0400, Sean wrote:\n\n> Then just download their repository with the -t switch of rsync or its\n> equal and preserve the timestamps on the files as they exist in the remote\n> repository.\n\nThats really the brightest idea since the invention of sliced bread.\n\ntglx\n\n\n"},{"id":"3144","messageId":"4754.10.10.10.24.1115900216.squirrel@linux1","threadId":"575","inReplyTo":"1115900168.11872.13.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T12:16:56Z","receivedAt":"2005-05-12T12:16:56Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 8:16 am, Thomas Gleixner said:\n> On Thu, 2005-05-12 at 07:48 -0400, Sean wrote:\n>\n>> Then just download their repository with the -t switch of rsync or its\n>> equal and preserve the timestamps on the files as they exist in the\n>> remote\n>> repository.\n>\n> Thats really the brightest idea since the invention of sliced bread.\n>\n\nThat's pretty smug for someone who can't even formulate a problem statement.\n\nSean\n\n\n"},{"id":"3145","messageId":"1337.10.10.10.24.1115900267.squirrel@linux1","threadId":"575","inReplyTo":"1115900168.11872.13.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T12:17:47Z","receivedAt":"2005-05-12T12:17:47Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 8:16 am, Thomas Gleixner said:\n> On Thu, 2005-05-12 at 07:48 -0400, Sean wrote:\n>\n>> Then just download their repository with the -t switch of rsync or its\n>> equal and preserve the timestamps on the files as they exist in the\n>> remote\n>> repository.\n>\n> Thats really the brightest idea since the invention of sliced bread.\n>\n\nBy the way, you have to download the object ANYWAY\n\nSean\n\n\n\n"},{"id":"3146","messageId":"1115900963.16187.575.camel@hades.cambridge.redhat.com","threadId":"575","inReplyTo":"2247.10.10.10.24.1115898521.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"David Woodhouse","fromEmail":"dwmw2@infradead.org","sentAt":"2005-05-12T12:29:22Z","receivedAt":"2005-05-12T12:29:22Z","isPatch":true,"sender":{"key":"dwmw2@infradead.org","avatar":"https://gravatar.com/avatar/7afd4f07e0cf7d7e046ae2d23678296b37777c96488e6f3451e78a5514154ebd?d=mp&s=160"},"body":"On Thu, 2005-05-12 at 07:48 -0400, Sean wrote:\n> What is this correct order you're talking about?   The order is _given_\n> explicitly in the parent child relationships.  There is no other order of\n> any value, at least none you've been able to put forth.\n\nNow you're just being silly. You _replied_ to a message in which it was\nstated perfectly coherently. Even you appeared to understand the\nexplanation at that point.\n\n*plonk*\n\n-- \ndwmw2\n\n"},{"id":"3147","messageId":"1838.10.10.10.24.1115901165.squirrel@linux1","threadId":"575","inReplyTo":"1115900963.16187.575.camel@hades.cambridge.redhat.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T12:32:45Z","receivedAt":"2005-05-12T12:32:45Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 8:29 am, David Woodhouse said:\n> On Thu, 2005-05-12 at 07:48 -0400, Sean wrote:\n>> What is this correct order you're talking about?   The order is _given_\n>> explicitly in the parent child relationships.  There is no other order\n>> of\n>> any value, at least none you've been able to put forth.\n>\n> Now you're just being silly. You _replied_ to a message in which it was\n> stated perfectly coherently. Even you appeared to understand the\n> explanation at that point.\n>\n\nDavid,\n\nI gave you a solution to your problem, what is the issue that remains?\n\nSean\n\n\n"},{"id":"3148","messageId":"1115901291.11872.21.camel@tglx","threadId":"575","inReplyTo":"4754.10.10.10.24.1115900216.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T12:34:51Z","receivedAt":"2005-05-12T12:34:51Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 08:16 -0400, Sean wrote:\n> On Thu, May 12, 2005 8:16 am, Thomas Gleixner said:\n> > On Thu, 2005-05-12 at 07:48 -0400, Sean wrote:\n> >\n> >> Then just download their repository with the -t switch of rsync or its\n> >> equal and preserve the timestamps on the files as they exist in the\n> >> remote\n> >> repository.\n> >\n> > Thats really the brightest idea since the invention of sliced bread.\n> >\n> \n> That's pretty smug for someone who can't even formulate a problem statement.\n\nI explained it several times and you refuse to understand it. \n\nI accept and understand your POV that it does not matter for you. But\nthats not a really good reason to refuse others information which can be\nadded easily and without harming you.\n\ntglx\n\n\n"},{"id":"3149","messageId":"2614.10.10.10.24.1115901351.squirrel@linux1","threadId":"575","inReplyTo":"1115901291.11872.21.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T12:35:51Z","receivedAt":"2005-05-12T12:35:51Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 8:34 am, Thomas Gleixner said:\n\n> I explained it several times and you refuse to understand it.\n>\n> I accept and understand your POV that it does not matter for you. But\n> thats not a really good reason to refuse others information which can be\n> added easily and without harming you.\n\nAnd you have a perfectly workable solution handed to you that doesn't\nrequire any change whatsoever.\n\nSean\n\n\n"},{"id":"3150","messageId":"20050512132922.GB20785@delft.aura.cs.cmu.edu","threadId":"575","inReplyTo":"1115898230.11872.8.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jan Harkes","fromEmail":"jaharkes@cs.cmu.edu","sentAt":"2005-05-12T13:29:22Z","receivedAt":"2005-05-12T13:29:22Z","isPatch":true,"sender":{"key":"jaharkes@cs.cmu.edu","avatar":"https://gravatar.com/avatar/cf95aecd150ca8ef33d6edc337ac4bb9e13aa4246fc3679257d578c7fddc1633?d=mp&s=160"},"body":"On Thu, May 12, 2005 at 01:43:50PM +0200, Thomas Gleixner wrote:\n> > Is there any _useful_ question you can ask where the answer\n> > is lost for all time because of this.\n> \n> I want to see the history of _any_ repository in the order of  changes\n> in the specific repository. The fast forward heads without additional\n> information simply do not allow this. \n\nBut you can't add additional information to the fast-forward head. That\nwould defeat the whole point of the fast-forward.\n\n> I want to see the history of a file in the correct order. The current\n> solution ends up with useless file version diffs or annotates where\n> changes are shown in random order and therefor worthless.\n\nNot random order, those changes were performed in parallel, so there is\nno order between them until they are merged, at which point the parent\nlinkage defines the order. If you want to add a total ordering to them,\nwrite out a file with 'commit-id parent-id' pairs and run it through\n'tsort'.\n\nYour examples break if you consider additional merges where M syncs up a\ncouple of times (f.i. at Rn-2) before M is merged back into R.\n\nWhat you seem to want won't be fixed by adding a repoid, you need to\nkeep a list of all the commits you have already seen and append any new\nones whenever you look at the history. If you look whenever you pull or\nmerge the list will be in the total ordering that you seem to expect for\nyour repository. But that is a porcelain thing.\n\nJan\n\n"},{"id":"3157","messageId":"2cfc4032050512084426ea3d4d@mail.gmail.com","threadId":"575","inReplyTo":"20050512132922.GB20785@delft.aura.cs.cmu.edu","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-12T15:44:53Z","receivedAt":"2005-05-12T15:44:53Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"On 5/12/05, Jan Harkes <jaharkes@cs.cmu.edu> wrote:\n> On Thu, May 12, 2005 at 01:43:50PM +0200, Thomas Gleixner wrote:\n> ....\n> Your examples break if you consider additional merges where M syncs up a\n> couple of times (f.i. at Rn-2) before M is merged back into R.\n> \n> What you seem to want won't be fixed by adding a repoid, you need to\n> keep a list of all the commits you have already seen and append any new\n> ones whenever you look at the history. If you look whenever you pull or\n> merge the list will be in the total ordering that you seem to expect for\n> your repository. But that is a porcelain thing.\n> \n> Jan\n\nIf committers always follow the convention that their previous local\ncommit is nominated as the first (local) parent in the commit and\ncommits from foreign repositories are listed after the first parent,\ncan the chain of \"local\" parents be an effective proxy for repoid?\n\nConsider first a graph where there are no more than 2 parents in a merge\n\nLn\n|     \\\nLn-1  Fn\n|         |\nLn-2  Fn-1\n|       /\nLn-3\n\nThomas would like to sort this as:\n\nLn\nFn\nFn-1\nLn-1\nLn-2\nLn-3\n\nSo, use this algorithm:\n\n1. Merge result comes first.\n2. For each foreign parent:\n    - sort the graph between the foreign parent and the merge base\naccording to his algorithm using the foreign parent as the starting\npoint of the algorithm. Append the result into the list.\n3. Append the merge base to the list.\n\nAdmittedly the order for foreign parent for N-way merges is somewhat\narbitrary but a committer could probably make a choice that \"works\" in\nmost cases by specifying the foreign parents in a \"sensible\" order.\n\nOf course, this relies on a committer always nominating the local\nparent first, but that wouldn't be hard to enforce in the porcelain\nlayer.\n\njon.\n\n\n1. the merging commit comes first\n2. the graph of commits between each foreign parent and the\n\"merge-base\" is sorted\n3.\n"},{"id":"3158","messageId":"2cfc403205051208483132921@mail.gmail.com","threadId":"575","inReplyTo":"2cfc4032050512084426ea3d4d@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-12T15:48:03Z","receivedAt":"2005-05-12T15:48:03Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"| small clarification to algorithm, removed editing work area \n\nOn 5/12/05, Jan Harkes <jaharkes@cs.cmu.edu> wrote:\n> On Thu, May 12, 2005 at 01:43:50PM +0200, Thomas Gleixner wrote:\n> ....\n> Your examples break if you consider additional merges where M syncs up a\n> couple of times (f.i. at Rn-2) before M is merged back into R.\n>\n> What you seem to want won't be fixed by adding a repoid, you need to\n> keep a list of all the commits you have already seen and append any new\n> ones whenever you look at the history. If you look whenever you pull or\n> merge the list will be in the total ordering that you seem to expect for\n> your repository. But that is a porcelain thing.\n>\n> Jan\n\nIf committers always follow the convention that their previous local\ncommit is nominated as the first (local) parent in the commit and\ncommits from foreign repositories are listed after the first parent,\ncan the chain of \"local\" parents be an effective proxy for repoid?\n\nConsider first a graph where there are no more than 2 parents in a merge\n\nLn\n|     \\\nLn-1  Fn\n|         |\nLn-2  Fn-1\n|       /\nLn-3\n\nThomas would like to sort this as:\n\nLn\nFn\nFn-1\nLn-1\nLn-2\nLn-3\n\nSo, use this algorithm:\n\n1. Merge result comes first.\n2. For each foreign parent:\n    - sort the graph between the foreign parent and the merge base\n(not including merge base) according to his algorithm using the\nforeign parent as the starting\npoint of the algorithm. Append the result into the list.\n3. Append the merge base to the list.\n\nAdmittedly the order for foreign parent for N-way merges is somewhat\narbitrary but a committer could probably make a choice that \"works\" in\nmost cases by specifying the foreign parents in a \"sensible\" order.\n\nOf course, this relies on a committer always nominating the local\nparent first, but that wouldn't be hard to enforce in the porcelain\nlayer.\n\njon.\n-- \nhomepage: http://www.zeta.org.au/~jon/\nblog: http://orwelliantremors.blogspot.com/\n"},{"id":"3159","messageId":"2cfc403205051208506249c9aa@mail.gmail.com","threadId":"575","inReplyTo":"2cfc403205051208483132921@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-12T15:50:50Z","receivedAt":"2005-05-12T15:50:50Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"|| oops - fix to algorithm, sorry guys\n| small clarification to algorithm, removed editing work area\n\nOn 5/12/05, Jan Harkes <jaharkes@cs.cmu.edu> wrote:\n> On Thu, May 12, 2005 at 01:43:50PM +0200, Thomas Gleixner wrote:\n> ....\n> Your examples break if you consider additional merges where M syncs up a\n> couple of times (f.i. at Rn-2) before M is merged back into R.\n>\n> What you seem to want won't be fixed by adding a repoid, you need to\n> keep a list of all the commits you have already seen and append any new\n> ones whenever you look at the history. If you look whenever you pull or\n> merge the list will be in the total ordering that you seem to expect for\n> your repository. But that is a porcelain thing.\n>\n> Jan\n\nIf committers always follow the convention that their previous local\ncommit is nominated as the first (local) parent in the commit and\ncommits from foreign repositories are listed after the first parent,\ncan the chain of \"local\" parents be an effective proxy for repoid?\n\nConsider first a graph where there are no more than 2 parents in a merge\n\nLn\n|     \\\nLn-1  Fn\n|         |\nLn-2  Fn-1\n|       /\nLn-3\n\nThomas would like to sort this as:\n\nLn\nFn\nFn-1\nLn-1\nLn-2\nLn-3\n\nSo, use this algorithm:\n\n1. Merge result comes first.\n2. For each foreign parent:\n    - sort the graph between the foreign parent and the merge base\n(not including merge base) according to this algorithm . Append the\nresult into the list.\n3. Sort the graph between the local parent and the merge base\n(including merge base) according to this algorithm. Append the result\ninto the list.\n\nAdmittedly the order for foreign parent for N-way merges is somewhat\narbitrary but a committer could probably make a choice that \"works\" in\nmost cases by specifying the foreign parents in a \"sensible\" order.\n\nOf course, this relies on a committer always nominating the local\nparent first, but that wouldn't be hard to enforce in the porcelain\nlayer.\n\njon.\n-- \nhomepage: http://www.zeta.org.au/~jon/\nblog: http://orwelliantremors.blogspot.com/\n"},{"id":"3162","messageId":"20050512162023.GA14010@delft.aura.cs.cmu.edu","threadId":"575","inReplyTo":"2cfc403205051208506249c9aa@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jan Harkes","fromEmail":"jaharkes@cs.cmu.edu","sentAt":"2005-05-12T16:20:23Z","receivedAt":"2005-05-12T16:20:23Z","isPatch":true,"sender":{"key":"jaharkes@cs.cmu.edu","avatar":"https://gravatar.com/avatar/cf95aecd150ca8ef33d6edc337ac4bb9e13aa4246fc3679257d578c7fddc1633?d=mp&s=160"},"body":"On Fri, May 13, 2005 at 01:50:50AM +1000, Jon Seymour wrote:\n> On 5/12/05, Jan Harkes <jaharkes@cs.cmu.edu> wrote:\n> > On Thu, May 12, 2005 at 01:43:50PM +0200, Thomas Gleixner wrote:\n> > ....\n> > Your examples break if you consider additional merges where M syncs up a\n> > couple of times (f.i. at Rn-2) before M is merged back into R.\n...\n> If committers always follow the convention that their previous local\n> commit is nominated as the first (local) parent in the commit and\n> commits from foreign repositories are listed after the first parent,\n> can the chain of \"local\" parents be an effective proxy for repoid?\n> \n> Consider first a graph where there are no more than 2 parents in a merge\n> \n> Ln\n> |     \\\n> Ln-1  Fn\n> |         |\n> Ln-2  Fn-1\n> |       /\n> Ln-3\n\nIt breaks when Fn was a pull from Ln-1, and Ln was a fast-forward to Fn.\nNow the first parent is going to be Fn-1 and the history of the local\nrepository after the fast forward warps to\n\n    Fn (== Ln)\n    Ln-1\n    Ln-2\n    Fn-1\n    Ln-3\n\nAnd adding repoids doesn't help a bit. However if the local repo kept a\nhistory of what the user has seen previously, it can be linearized\nconsistently. The history file would contain Ln-3...Ln-1 before the\nfast-forward and would add Fn-1,Fn. We would end up with a history that\nlooks like,\n\n    Fn (== Ln)\n    Fn-1\n    Ln-1\n    Ln-2\n    Ln-3\n\nWhich I believe is exactly what Thomas wants to see in this case. I\ndon't see how repoid's can be useful for this. It is a porcelain thing\nwhere you need to track what you have seen before. Anything else doesn't\nmatter because most permutations of the history are perfectly valid\nsince the Fn and Ln changes in reality occured in parallel and as a\nresult can be arbitrarily interleaved.\n\nIn fact anyone else who branched at Ln-3 and merges again at Ln doesn't\nreally care in what order changes in the F and L branches occurred, only\nthat all modifications are included.\n\nJan\n\n"},{"id":"3166","messageId":"2cfc403205051210093e1a396d@mail.gmail.com","threadId":"575","inReplyTo":"20050512162023.GA14010@delft.aura.cs.cmu.edu","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-12T17:09:54Z","receivedAt":"2005-05-12T17:09:54Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"On 5/13/05, Jan Harkes <jaharkes@cs.cmu.edu> wrote:\n> >\n> > Ln\n> > |     \\\n> > Ln-1  Fn\n> > |         |\n> > Ln-2  Fn-1\n> > |       /\n> > Ln-3\n> \n> It breaks when Fn was a pull from Ln-1, and Ln was a fast-forward to Fn.\n> Now the first parent is going to be Fn-1 and the history of the local\n> repository after the fast forward warps to\n> \n>     Fn (== Ln)\n>     Ln-1\n>     Ln-2\n>     Fn-1\n>     Ln-3\n> \n\nYep, you are right.\n\n> Which I believe is exactly what Thomas wants to see in this case. I\n> don't see how repoid's can be useful for this. It is a porcelain thing\n> where you need to track what you have seen before. Anything else doesn't\n> matter because most permutations of the history are perfectly valid\n> since the Fn and Ln changes in reality occured in parallel and as a\n> result can be arbitrarily interleaved.\n> \n\nI may be wrong, but I don't think Thomas is interested in his own\nrepository. I think he is interested in the history of commits found\nin any public repository. Therefore, he needs an algorithm that\ndoesn't rely on locally cached information.\n\nIn otherwords, at each point in the commit graph, what did the\ncommitter consider as \"foreign\" changes that needed to be merged into\nthe \"local\" repository to progress the repository forward. He wants to\nderive that order only from the information in the repository itself -\neveryone given the same commit graph should reach the same conclusion\nas to what the committer saw as local and foreign at the time of the\ncommit.\n\nMy previous algorithm was incorrect, but I suspect it could probably\nbe fixed with a 2-pass algorithm that marked any nodes in the path\nbetween the merge base and the merge head as local and then ensured\nthat nodes marked that way are sorted after any nodes reached via\n\"foreign\" paths.\n-- \nhomepage: http://www.zeta.org.au/~jon/\nblog: http://orwelliantremors.blogspot.com/\n"},{"id":"3167","messageId":"2cfc4032050512101211bc030b@mail.gmail.com","threadId":"575","inReplyTo":"2cfc403205051210093e1a396d@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-12T17:12:13Z","receivedAt":"2005-05-12T17:12:13Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"| added \"local\" to clarify what I meant the first-pass should do\n\n> My previous algorithm was incorrect, but I suspect it could probably\n> be fixed with a 2-pass algorithm that marked any nodes in the \"local\" path\n> between the merge base and the merge head as local and then ensured\n> that nodes marked that way are sorted after any nodes reached via\n> \"foreign\" paths.\n-- \nhomepage: http://www.zeta.org.au/~jon/\nblog: http://orwelliantremors.blogspot.com/\n"},{"id":"3170","messageId":"7vvf5ogxdu.fsf@assigned-by-dhcp.cox.net","threadId":"575","inReplyTo":"1115884637.22180.277.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-12T17:35:57Z","receivedAt":"2005-05-12T17:35:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"TG\" == Thomas Gleixner <tglx@linutronix.de> writes:\n\nTG> Rn   o\nTG>      | \\\nTG> Rn-1 o  |\nTG>      |  o Mn\nTG>      |  o Mn-1\nTG> Rn-2 o /\nTG> Rn-3 o\n\nTG> The correct display looking at R is\n\nTG> Rn\nTG>  Mn\nTG>  Mn-1\nTG> Rn-1\nTG> Rn-2\nTG> Rn-3\n\nTG> Looking from M it is\n\nTG> Rn\nTG>  Rn-1\nTG>  Rn-2\nTG> Mn\nTG> Mn-2\nTG> Rn-3\n\nThanks for a very clear explanation.  The situation is\nintriguing in that both R and M after converging end up with\nexactly the same HEAD with the same set of objects but still\nwould want to see history leading to the HEAD differently.\n\nI wonder what happens to a third person S, who pulls from both R\nand M.  What does S see?  \n\nDoes the commit order observed by S depend on which one S pulls\nfrom first?  That is, if S pulls from R then at that point Mn-1\nand Mn comes after Rn-1 in S's history?  And after that what\nhapens if S pulls from M (which is obviously a no-op except that\nit would update .git/refs/heads/M)?  Does the history for S\nchange?\n\nIIRC, Cogito lets you \"track\" upstream branches.  When S starts\ntracking R, does it see R's history and when S starts tracking M\nits history view changes to that of M?\n\nLet's further say R and M are both based on another upstream L,\nand R and M have converged at this point.  S has been tracking L\nand it merged from R and M.  If S did not have any local\nmodifications since L, then that is just two fast forward\nmerges.  What does the history look like to S?  Which comes\nfirst---Mn or Rn-1?\n\nThe answer to the above could be \"the merge order history is per\ntree and not something to be exported or given away to other\ntrees\", in which case it may make sense from S's point of view\nthat Mn and Rn-1 are compares solely based on their commit\ntimestamps.  You will get consistent history and switching which\ntree is being tracked would not change the history.  Is the goal\nhere to give the merge order history from R and M to S?\n\nIf that is not needed, then you can record in an auxiliary file\nthat is local to each tree the timestamp of when merge happened\nin that tree along with set of foreign commit objects, and teach\nrev-tree or rev-list to read from that auxiliary file and use\nthat timestamp for foreign commit objects instead of commit time\nrecorded in them when sorting by time is needed.\n\n\n"},{"id":"3171","messageId":"1234.10.10.10.24.1115921886.squirrel@linux1","threadId":"575","inReplyTo":"7vvf5ogxdu.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T18:18:06Z","receivedAt":"2005-05-12T18:18:06Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 1:35 pm, Junio C Hamano said:\n\n> If that is not needed, then you can record in an auxiliary file\n> that is local to each tree the timestamp of when merge happened\n> in that tree along with set of foreign commit objects, and teach\n> rev-tree or rev-list to read from that auxiliary file and use\n> that timestamp for foreign commit objects instead of commit time\n> recorded in them when sorting by time is needed.\n\nThe time is already recorded.  Ie. the commit object is a separate file\nwith a modification time which can be used as a \"local commit timestamp\". \n If you want to protect those time stamps by also recording them in a\nseparate file, that's a bonus I guess but shouldn't really be needed.\n\nYou can descend the history tree based on the parent position as described\nby Jon Seymour.  That is, Cogito lists the \"local\" parent first, so you\ndescend that branch marking off visited nodes, then descend the other\nbranches reporting unvisited nodes only.  Afterward return and list any\nunreported nodes in the first branch.\n\nOf course, the problem with that is a fast forward node, where you can't\njust blindly pick the first parent listed because it may belong to another\nrepository.   So the answer is to do away with fast forward nodes, or give\nup on using the ordering of the parents to mean anything.   In which case\nyou have to pick the parent with the oldest local commit time as the first\nnode to descend.\n\nSo it seems, that rather than a repository identifier, we need each\nrepository to record the time of each local commit.   Either in a separate\nfile or just using the object file timestamps directly.\n\nSean\n\n\n"},{"id":"3179","messageId":"7vy8akfdss.fsf@assigned-by-dhcp.cox.net","threadId":"575","inReplyTo":"1234.10.10.10.24.1115921886.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-12T19:24:19Z","receivedAt":"2005-05-12T19:24:19Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"S\" == Sean  <seanlkml@sympatico.ca> writes:\n\nS> On Thu, May 12, 2005 1:35 pm, Junio C Hamano said:\n>> If that is not needed, then you can record in an auxiliary file\n>> that is local to each tree the timestamp of when merge happened\n>> in that tree along with set of foreign commit objects, and teach\n>> rev-tree or rev-list to read from that auxiliary file and use\n>> that timestamp for foreign commit objects instead of commit time\n>> recorded in them when sorting by time is needed.\n\nS> The time is already recorded.  Ie. the commit object is a\nS> separate file with a modification time which can be used as a\nS> \"local commit timestamp\".  If you want to protect those time\nS> stamps by also recording them in a separate file, that's a\nS> bonus I guess but shouldn't really be needed.\n\nThat would not work if (1) you are using SHA1_FILE_DIRECTORY\nmechanism to share object pool for multiple trees, or (2) you\ngit-*-pull'ed but did not merge for some time.  The file\ntimestamps are the time of download but we want the time of\nmerge for this applicaton.  Also, that approach captures only\nhalf the information necessary.  The other half you missed is\n\"which ones are foreign commits from this tree's point of view\",\nand as you described that is something you cannot tell just by\nlooking at the order of parents in commit objects.\n\nS> So it seems, that rather than a repository identifier, we\nS> need each repository to record the time of each local commit.\nS> Either in a separate file or just using the object file\nS> timestamps directly.\n\nI think we are in agreement here, except that object file\ntimestamps is not something you can use.\n\n"},{"id":"3181","messageId":"1510.10.10.10.24.1115926514.squirrel@linux1","threadId":"575","inReplyTo":"7vy8akfdss.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T19:35:14Z","receivedAt":"2005-05-12T19:35:14Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 3:24 pm, Junio C Hamano said:\n\n> That would not work if (1) you are using SHA1_FILE_DIRECTORY\n> mechanism to share object pool for multiple trees, or (2) you\n> git-*-pull'ed but did not merge for some time.  The file\n> timestamps are the time of download but we want the time of\n\nSurely you mean \"GIT_OBJECT_DIRECTORY\" <g> and you're right, if the local\nobject is shared amongst several trees you'd have to store the timestamp\nseparately.   However, as for your second case, the merge process could\nset the timestamp on the file so that one really isn't a problem.  I for\none, would like the option to use this method when its appropriate,\nalthough I agree you'd need a timestamp-database for other situations.\n\n> merge for this applicaton.  Also, that approach captures only\n> half the information necessary.  The other half you missed is\n> \"which ones are foreign commits from this tree's point of view\",\n> and as you described that is something you cannot tell just by\n> looking at the order of parents in commit objects.\n\nRight, but we're not talking about identifying foreign commits anymore! \nThe point is just to list multiple parents in the correct \"local\" order. \nThe timestamp information _is_ enough to identify the proper order for\nlocal viewing.   And this has the very nice feature that it works for\nbranches made in the same repository, where the repoid proposal would\nfail.\n\n> S> So it seems, that rather than a repository identifier, we\n> S> need each repository to record the time of each local commit.\n> S> Either in a separate file or just using the object file\n> S> timestamps directly.\n>\n> I think we are in agreement here, except that object file\n> timestamps is not something you can use.\n\nYou can use it, just not in every situation.\n\nSean\n\n\n"},{"id":"3194","messageId":"1115930845.11872.79.camel@tglx","threadId":"575","inReplyTo":"7vvf5ogxdu.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T20:47:25Z","receivedAt":"2005-05-12T20:47:25Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 10:35 -0700, Junio C Hamano wrote:\n> Thanks for a very clear explanation.  The situation is\n> intriguing in that both R and M after converging end up with\n> exactly the same HEAD with the same set of objects but still\n> would want to see history leading to the HEAD differently.\n\nYes, thats what I wanted to achieve first hand with the repository id. I\nthink my first attempt is far from perfect and I agree with hpa on\nhaving a .git/repoid file. \n\n> I wonder what happens to a third person S, who pulls from both R\n> and M.  What does S see?  \n> Does the commit order observed by S depend on which one S pulls\n> from first?  That is, if S pulls from R then at that point Mn-1\n> and Mn comes after Rn-1 in S's history?  And after that what\n> hapens if S pulls from M (which is obviously a no-op except that\n> it would update .git/refs/heads/M)?  Does the history for S\n> change?\n\nThat's an interesting question. Of course, if you change the head you\nsee the tree from a different POV, but you can detect this when S pulls\nfrom M after a pull from R. So the tool can ask the user, if he really\nwants to change the commit order or not. You might even argue that they\ncould refuse to do the head change\n\n> The answer to the above could be \"the merge order history is per\n> tree and not something to be exported or given away to other\n> trees\", in which case it may make sense from S's point of view\n> that Mn and Rn-1 are compares solely based on their commit\n> timestamps.  You will get consistent history and switching which\n> tree is being tracked would not change the history.  Is the goal\n> here to give the merge order history from R and M to S?\n\nThe goal from my side is to preserve the merge order history of R, M and\nS in the individual way of commit order per repository, which includes\nthe merge order R->S, M->S or the other way round. See above\n\n> If that is not needed, then you can record in an auxiliary file\n> that is local to each tree the timestamp of when merge happened\n> in that tree along with set of foreign commit objects, and teach\n> rev-tree or rev-list to read from that auxiliary file and use\n> that timestamp for foreign commit objects instead of commit time\n> recorded in them when sorting by time is needed.\n\nAs I said before timestamps can be a horrid source of information. Also\nif you keep a list of commits merges and head forwards in timed order it\nis simple to read the repository history, but in case of corruption you\nhave to reconstruct it manually. There is no way to do so with the\ninformation available.\n\nRepository id's can be lost, but are simple to replace as they are\nrecorded in the commit blob.\n\ntglx\n\n\n\n\n"},{"id":"3198","messageId":"4776.10.10.10.24.1115932163.squirrel@linux1","threadId":"575","inReplyTo":"1115930845.11872.79.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T21:09:23Z","receivedAt":"2005-05-12T21:09:23Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 4:47 pm, Thomas Gleixner said:\n\n> As I said before timestamps can be a horrid source of information. Also\n> if you keep a list of commits merges and head forwards in timed order it\n> is simple to read the repository history, but in case of corruption you\n> have to reconstruct it manually. There is no way to do so with the\n> information available.\n>\n> Repository id's can be lost, but are simple to replace as they are\n> recorded in the commit blob.\n\nAnd the time is recorded on the commit blob too. In case of corruption,\nrestore the blobs from backup, you get everything back.  Corruption can\nwipe out repoids and complete git objects too, you had better have\nbackups.  Repoids offer no protection from corruption or otherwise lost\nblobs.\n\nSean\n\n\n"},{"id":"3201","messageId":"1115932872.11872.86.camel@tglx","threadId":"575","inReplyTo":"4776.10.10.10.24.1115932163.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T21:21:12Z","receivedAt":"2005-05-12T21:21:12Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 17:09 -0400, Sean wrote:\n> On Thu, May 12, 2005 4:47 pm, Thomas Gleixner said:\n> \n> > As I said before timestamps can be a horrid source of information. Also\n> > if you keep a list of commits merges and head forwards in timed order it\n> > is simple to read the repository history, but in case of corruption you\n> > have to reconstruct it manually. There is no way to do so with the\n> > information available.\n> >\n> > Repository id's can be lost, but are simple to replace as they are\n> > recorded in the commit blob.\n> \n> And the time is recorded on the commit blob too. \n\nHow do you enforce correct timestamps  ? \n\ntglx\n\n\nReceived: from simmts5-srv.bellnexxia.net (simmts5.bellnexxia.net\n[206.47.199.163]) by mail.tglx.de (Postfix) with ESMTP id 623FE65C003\nfor <tglx@linutronix.de>; Thu, 12 May 2005 23:09:21 +0200 (CEST)\nReceived: from linux1 ([69.156.111.46]) by simmts5-srv.bellnexxia.net\n(InterMail vM.5.01.06.10 201-253-122-130-110-20040306) with ESMTP id\n<20050512210923.CCQN11606.simmts5-srv.bellnexxia.net@linux1>; Thu, 12\nMay 2005 17:09:23 -0400\n\n\n\n\n\n\n\n\n"},{"id":"3204","messageId":"2477.10.10.10.24.1115933520.squirrel@linux1","threadId":"575","inReplyTo":"1115932872.11872.86.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T21:32:00Z","receivedAt":"2005-05-12T21:32:00Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 5:21 pm, Thomas Gleixner said:\n\n>> And the time is recorded on the commit blob too.\n>\n> How do you enforce correct timestamps  ?\n\nWhen an object is committed locally it is set to the local time.  You can\nonly have this feature when you use private commit objects (shared blobs\nare okay).  It doesn't matter if the timestamps are correct in the global\nsense, just that they're correct for the local server, because they'll\nonly ever be compared against each other.\n\nBy the way, repoid doesn't work when all the branches are done in the same\nrepository.  You'd need to use something like repoid-branch.\n\nOne area where your repoid is superior that i missed in my previous email\nis that you can actually recover a corrupt blob from an unrelated\nrepository that happens to contain it, and you've lost no information. \nWhich is what Linus was expounding as one of the benefits of the git\ndesign.\n\nSean\n\n\n"},{"id":"3206","messageId":"7vis1odspy.fsf@assigned-by-dhcp.cox.net","threadId":"575","inReplyTo":"2477.10.10.10.24.1115933520.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-05-12T21:44:57Z","receivedAt":"2005-05-12T21:44:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":">>>>> \"S\" == Sean  <seanlkml@sympatico.ca> writes:\n\nS> When an object is committed locally it is set to the local time.  You can\nS> only have this feature when you use private commit objects (shared blobs\nS> are okay).\n\nThis brings up an interesting possibility, which is off topic\nfrom this thread.\n\nYou _could_ (I am not advocating this, just thinking aloud) have\nGIT_OBJECT_DIRECTORY and GIT_COMMIT_OBJECT_DIRECTORY pointing at\ntwo separate object pools, with the value of\nGIT_COMMIT_OBJECT_DIRECTORY being on\nGIT_ALTERNATE_OBJECT_DIRECTORIES list.  Your commits go to\nGIT_COMMIT_OBJECT_DIRECTORY (local to the tree) and everything\nelse go to GIT_OBJECT_DIRECTORY (can be shared across trees).\n\nHmm.... Interesting.  My gut feeling tells me not to go there,\nthough.\n\n"},{"id":"3209","messageId":"1115935604.11872.97.camel@tglx","threadId":"575","inReplyTo":"2477.10.10.10.24.1115933520.squirrel@linux1","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-12T22:06:44Z","receivedAt":"2005-05-12T22:06:44Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Thu, 2005-05-12 at 17:32 -0400, Sean wrote:\n> > How do you enforce correct timestamps  ?\n> \n> When an object is committed locally it is set to the local time.  You can\n> only have this feature when you use private commit objects (shared blobs\n> are okay).  It doesn't matter if the timestamps are correct in the global\n> sense, just that they're correct for the local server, because they'll\n> only ever be compared against each other.\n\nThat limits the usefulness to a local place, which makes no sense in a\ndistributed development scenario. \n\n\n> By the way, repoid doesn't work when all the branches are done in the same\n> repository.  You'd need to use something like repoid-branch.\n\nRight. That was my basic idea to collect the information either from an\nenvironment variable or deduce it from the current wroking directory,\nwhich is unlikely to be the same for different branches. hpa's arguments\nagainst this approach are quite good but I think somethink like a per\nbranch repository id is not too hard to implement.\n\ntglx\n\n\n"},{"id":"3210","messageId":"4084.10.10.10.24.1115936697.squirrel@linux1","threadId":"575","inReplyTo":"1115935604.11872.97.camel@tglx","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit","fromName":"Sean","fromEmail":"seanlkml@sympatico.ca","sentAt":"2005-05-12T22:24:57Z","receivedAt":"2005-05-12T22:24:57Z","isPatch":true,"sender":{"key":"seanlkml@sympatico.ca","avatar":"https://gravatar.com/avatar/f92923f54fc08c401fc59b71829d4b89e9b8087fbba45ff87c82e6a83aee02ae?d=mp&s=160"},"body":"On Thu, May 12, 2005 6:06 pm, Thomas Gleixner said:\n\nThomas,\n\n> That limits the usefulness to a local place, which makes no sense in a\n> distributed development scenario.\n\nI don't think that is true, the only time you'd use this time is when\ncomparing against other commits from the same repository.  As you download\nthe commits you're interested in from a remote repository, you compare\nthem to each other to get the order.\n\nSean\n\n\n"},{"id":"3222","messageId":"2cfc4032050512183788e01fc@mail.gmail.com","threadId":"575","inReplyTo":"428291CD.7010701@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-13T01:37:47Z","receivedAt":"2005-05-13T01:37:47Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"> \n> I would like to suggest a few limiters are set on the repoid.  In\n> particular, I'd like to suggest that a repoid is a UUID, that a file is\n> used to track it (.git/repoid), and that if it doesn't exist, a new one\n> is created from /dev/urandom.\n> \n\nI think I understand what Thomas is trying to achieve, but I think\nthere is a naming problem here. The marker really isn't a repoid - it\nis a workspace id.\n\nTwo workspaces can share the same physical repository, yet have\ndifferent \"repoid\"s. So the thing being identified isn't the\nrepository - it's the workspace in the commit was performed.\n\nThomas' objective, I think, is the following: \n\n    from the point of view of a given workspace, determine the merge\norder of the\n    global repository (and there really is only _one_ repository for\nthis purpose) from\n    the point of view of that workspace. The interesting workspaces\nare workspaces that\n    contributed commits to the global history.\n\nThomas is correct to point out that committer id is not a substitute\nfor a workspace identifier since a given committer may work in\nmultiple workspaces concurrently.\n\nI can also see why an identifier in the commit is necessary to\nreconstruct the history.\n\nConsider the following history:\n\nRn\n|      \\\nRn-1 Mn\n|     /\nRn-2\n|       \\ \nRn-3 Mn-1\n|    /\nRn-4\n\nAssume that changes Mn and Mn-1 are made the same workspace, M. Then, from the \npoint of view of workspace M, the history is:\n\nRn\nRn-1\nMn\nRn-2\nRn-3\nMn-1\nRn-4\n\n>From the point of view of a given change epoch, M always wants to see\n\"local changes occur first\". To know what changes were local to M you\nneed to mark the changes that workspace M made with an identifier\nsaying that M did this in this workspace, hence the need for the\nmarker that Thomas is proposing.\n\nAssuming that there is value in being able to reconstruct the merge\norder from the perspective of workspaces that have contributed to the\nglobal history it would seem that Thomas's suggestion of marking each\ncommit with an identifier is reasonable, however, I think the name of\nthe identifier should change - what's being tracked is a workspace,\nnot a repository.\n\njon.\n"},{"id":"3237","messageId":"1115973408.11872.125.camel@tglx","threadId":"575","inReplyTo":"2cfc4032050512183788e01fc@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"Thomas Gleixner","fromEmail":"tglx@linutronix.de","sentAt":"2005-05-13T08:36:48Z","receivedAt":"2005-05-13T08:36:48Z","isPatch":true,"sender":{"key":"tglx@linutronix.de","avatar":null},"body":"On Fri, 2005-05-13 at 11:37 +1000, Jon Seymour wrote:\n\n> I think I understand what Thomas is trying to achieve, but I think\n> there is a naming problem here. The marker really isn't a repoid - it\n> is a workspace id.\n\nI did not think about the naming convention here. I was just looking at\nthe repositories of Dave Miller - net-2.6 and sparc-2.6 - which are not\nseperable by any automated mechanism due to the fact that Dave uses the\nsame committer name for both, which is reasonable. \n\nYou are right, those are workspaces which happen to have a seperate\npublic repository.\n\n\n> From the point of view of a given change epoch, M always wants to see\n> \"local changes occur first\". To know what changes were local to M you\n> need to mark the changes that workspace M made with an identifier\n> saying that M did this in this workspace, hence the need for the\n> marker that Thomas is proposing.\n\n\nMy main concern here is to be able to see a change in the context in\nwhich it was made.\n \nIn distributed development a change made in workspace A is correct in\nthe context of A and a change made in the workspace B is correct in the\ncontext of B. By merging these maybe unrelated changes produce a\nproblem. Add a random number of changes to increase the complexitiy.\n\nIt is helpful from my experience to have a possibility to see the\nseperate changes in the context where they were made to understand why\nthe change was made.\n\nIf your history is cluttered by the head forward cloning you have more\nwork to deduce the information you want to have instead of having it\navailable on demand by a tool.\n\n\n> Assuming that there is value in being able to reconstruct the merge\n> order from the perspective of workspaces that have contributed to the\n> global history it would seem that Thomas's suggestion of marking each\n> commit with an identifier is reasonable, however, I think the name of\n> the identifier should change - what's being tracked is a workspace,\n> not a repository.\n\n\nAck.\n\nThe question is how to automate those workspace identifiers in a\nsenseful way. A shared object repository makes it necessary to keep the\nidentifier in workspace itself. A first idea might be\na .git_workspace_id file in the toplevel directory of the workspace,\nwhich can automatically be ignored by all git tools. Maybe a ignore rule\nfor all .git* files is also reasonable to make future extensions simpler\n\n\ntglx\n\n\n"},{"id":"3254","messageId":"20050513222502.GD32232@pasky.ji.cz","threadId":"575","inReplyTo":"2cfc4032050512183788e01fc@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"Petr Baudis","fromEmail":"pasky@ucw.cz","sentAt":"2005-05-13T22:25:03Z","receivedAt":"2005-05-13T22:25:03Z","isPatch":true,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"Dear diary, on Fri, May 13, 2005 at 03:37:47AM CEST, I got a letter\nwhere Jon Seymour <jon.seymour@gmail.com> told me that...\n> > \n> > I would like to suggest a few limiters are set on the repoid.  In\n> > particular, I'd like to suggest that a repoid is a UUID, that a file is\n> > used to track it (.git/repoid), and that if it doesn't exist, a new one\n> > is created from /dev/urandom.\n> > \n> \n> I think I understand what Thomas is trying to achieve, but I think\n> there is a naming problem here. The marker really isn't a repoid - it\n> is a workspace id.\n\nWhy not just call the thing \"branch\"? It's as well eligible for that\nterm as anything. :-)\n\n-- \n\t\t\t\tPetr \"Pasky\" Baudis\nStuff: http://pasky.or.cz/\nC++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor\n"},{"id":"3253","messageId":"428529AD.5000401@zytor.com","threadId":"575","inReplyTo":"20050513222502.GD32232@pasky.ji.cz","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"H. Peter Anvin","fromEmail":"hpa@zytor.com","sentAt":"2005-05-13T22:26:53Z","receivedAt":"2005-05-13T22:26:53Z","isPatch":true,"sender":{"key":"hpa@zytor.com","avatar":null},"body":"Petr Baudis wrote:\n> \n> Why not just call the thing \"branch\"? It's as well eligible for that\n> term as anything. :-)\n> \n\nBecause cogito already calls too many things \"branches\"?\n\n\t-hpa\n"},{"id":"3268","messageId":"20050513233937.GM32232@pasky.ji.cz","threadId":"575","inReplyTo":"428529AD.5000401@zytor.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"Petr Baudis","fromEmail":"pasky@ucw.cz","sentAt":"2005-05-13T23:39:37Z","receivedAt":"2005-05-13T23:39:37Z","isPatch":true,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"Dear diary, on Sat, May 14, 2005 at 12:26:53AM CEST, I got a letter\nwhere \"H. Peter Anvin\" <hpa@zytor.com> told me that...\n> Petr Baudis wrote:\n> >\n> >Why not just call the thing \"branch\"? It's as well eligible for that\n> >term as anything. :-)\n> >\n> \n> Because cogito already calls too many things \"branches\"?\n\nWell, I know of one thing cogito calls \"branch\", and incidentally the\nmeaning if effectively same as this \"branch\" would have.\n\n-- \n\t\t\t\tPetr \"Pasky\" Baudis\nStuff: http://pasky.or.cz/\nC++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor\n"},{"id":"3269","messageId":"2cfc403205051316495b46115e@mail.gmail.com","threadId":"575","inReplyTo":"20050513222502.GD32232@pasky.ji.cz","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-13T23:49:56Z","receivedAt":"2005-05-13T23:49:56Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"On 5/14/05, Petr Baudis <pasky@ucw.cz> wrote:\n> Dear diary, on Fri, May 13, 2005 at 03:37:47AM CEST, I got a letter\n> where Jon Seymour <jon.seymour@gmail.com> told me that...\n> > >\n> > > I would like to suggest a few limiters are set on the repoid.  In\n> > > particular, I'd like to suggest that a repoid is a UUID, that a file is\n> > > used to track it (.git/repoid), and that if it doesn't exist, a new one\n> > > is created from /dev/urandom.\n> > >\n> >\n> > I think I understand what Thomas is trying to achieve, but I think\n> > there is a naming problem here. The marker really isn't a repoid - it\n> > is a workspace id.\n> \n> Why not just call the thing \"branch\"? It's as well eligible for that\n> term as anything. :-)\n> \n\nI very nearly agreed with you except for one thing. In a traditional\nSCM, a branch is something that can be contributed by multiple people\nbut I don't think we want that meaning here.\n\nConsider this graph where there is a main Trunk R, and a branch B and\ntwo programmers Ba and Bb working on a branch B.  Thomas wants to be\nable to form views of the merge order of 3 workspaces (W(R), W(Ba) and\nW(Bb)), even though Ba and Bb are working on the same \"branch\" in SCM\nterms.\n\nRn -------------\n|      \\         \\ \nRn-1 Ba,n   Bb,n\n|     /             |\nRn-2             |\n|       \\           |\nRn-3 Ba,n-1  |\n|    /             /\nRn-4 -----------\n\nAlso, most times in a traditional SCM, branches diverge, but the\nbehaviour we are interested in here is the repeated converging and\ndiverging of workspaces on the same \"branch\" [ I know, a branches can\nbe used in that way in traditional SCMs, but that is a degenerate case\nof their intended use - maintaining paths of long term divergence ].\n\nSo, while I think there may well be some value is a separate\n\"branchid\" attribute in a commit, I think they are describing\n(slightly) different things.\n\njon\n-- \nhomepage: http://www.zeta.org.au/~jon/\nblog: http://orwelliantremors.blogspot.com/\n"},{"id":"3281","messageId":"2cfc403205051322026f3189da@mail.gmail.com","threadId":"575","inReplyTo":"2cfc403205051316495b46115e@mail.gmail.com","subject":"Re: [PATCH] [RFD] Add repoid identifier to commit [its a workspace id, isn't it?]","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2005-05-14T05:02:41Z","receivedAt":"2005-05-14T05:02:41Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"Of course, this graph wasn't really the best example of a traditional\nSCM branch or the point I was trying to make.\n> \n> Rn -------------\n> |      \\         \\\n> Rn-1 Ba,n   Bb,n\n> |     /             |\n> Rn-2             |\n> |       \\           |\n> Rn-3 Ba,n-1  |\n> |    /             /\n> Rn-4 -----------\n\nIt's more like:\n\nTn     B,W(a),n\n|        |                 \\\n|        B,W(a),n-1   B,W(b),n-1\n|        |                  |\nTn-1  |                   |\n|        B,W(a),1------|\n|       /\nTn-2\n\nBranch B diverges from the main trunk T, parallel (but frequently\nconvergent) development in branch B happens in two workspaces W(a) and\nW(b).\n\nSo a branchid would track all commits that contribute to a branch,\nwhile a workspace id would track which commits happened in which\nworkspace, to enable the reconstruction of the merge order of the\nglobal history with respect to the workspaces that perform commits.\n\njon.\n-- \nhomepage: http://www.zeta.org.au/~jon/\nblog: http://orwelliantremors.blogspot.com/\n"}]}