{"thread":{"id":"8834","subject":"Pingback/Trackback for Git?","startedAt":"2007-07-03T12:12:27Z","lastAt":"2007-07-04T09:59:50Z","messageCount":3,"participants":["Thomas Perl","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"46355","messageId":"372f54da0707030512k79e2dc74m98bf0a690abffc4a@mail.gmail.com","threadId":"8834","inReplyTo":null,"subject":"Pingback/Trackback for Git?","fromName":"Thomas Perl","fromEmail":"th.perl@gmail.com","sentAt":"2007-07-03T12:12:27Z","receivedAt":"2007-07-03T12:12:27Z","isPatch":false,"sender":{"key":"th.perl@gmail.com","avatar":"https://gravatar.com/avatar/fa809414192358405166d421a442112e8d9ee706e69da3113ca428b3ef84e9eb?d=mp&s=160"},"body":"Hello, Git users and developers!\n\nI've been thinking about having some kind of pingback/trackback\nsupport for Git repositories the same way pingback/trackback exist for\nblogs. Apart from having a list of repository mirrors, it also allows\na developer to see a list of repositories from the same codebase.\n\nI've outlined some ideas here, feel free to suggest implementations or\npoint out problems:\n\nhttp://tperl.blogspot.com/2007/07/pingbacktrackback-for-git.html\n\n\nThanks,\nThomas\n"},{"id":"46440","messageId":"7vbqeslpnz.fsf@assigned-by-dhcp.cox.net","threadId":"8834","inReplyTo":"372f54da0707030512k79e2dc74m98bf0a690abffc4a@mail.gmail.com","subject":"Re: Pingback/Trackback for Git?","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2007-07-04T05:10:40Z","receivedAt":"2007-07-04T05:10:40Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Thomas Perl\" <th.perl@gmail.com> writes:\n\n> I've outlined some ideas here, feel free to suggest implementations or\n> point out problems:\n>\n> http://tperl.blogspot.com/2007/07/pingbacktrackback-for-git.html\n\nIt was unclear to me who does what and when in the overall\npicture you envision after reading that page.  You seem to\nassume there is a prominent ping/trackback repository that\neverybody who is interested looks at.  Who updates it?  When?\nWith what?  How does the namespace inside that repository\nmanaged, if managed in any way?  Given a project name, how does\none learn which pick/grackback repository (and perhaps which\nbranch) to go to to learn the current status about it?\n"},{"id":"46458","messageId":"372f54da0707040259kd034b79ofa41b46611052bee@mail.gmail.com","threadId":"8834","inReplyTo":"7vbqeslpnz.fsf@assigned-by-dhcp.cox.net","subject":"Re: Pingback/Trackback for Git?","fromName":"Thomas Perl","fromEmail":"th.perl@gmail.com","sentAt":"2007-07-04T09:59:50Z","receivedAt":"2007-07-04T09:59:50Z","isPatch":false,"sender":{"key":"th.perl@gmail.com","avatar":"https://gravatar.com/avatar/fa809414192358405166d421a442112e8d9ee706e69da3113ca428b3ef84e9eb?d=mp&s=160"},"body":"Hello, Junio!\n\n2007/7/4, Junio C Hamano <gitster@pobox.com>:\n> It was unclear to me who does what and when in the overall\n> picture you envision after reading that page.  You seem to\n> assume there is a prominent ping/trackback repository that\n> everybody who is interested looks at.  Who updates it?  When?\n> With what?  How does the namespace inside that repository\n> managed, if managed in any way?  Given a project name, how does\n> one learn which pick/grackback repository (and perhaps which\n> branch) to go to to learn the current status about it?\n\nEvery repository keeps track of the pingbacks it receives. The\nsimplest way of storing all pingbacks would be a simple text file that\nlists one repository per line in a URL, i.e.\n\nhttp://git.server.com/repos/game.git\ngit://mirrors.git-hosting.com/ga/game.git\nhttp://johnny.org/my-projects/game.git\nhttp://universityx.edu/~bob/src/game.git\n\nIf a user clones a repository, it can copy this trackback list. Git\ncan also optionally use this list to fetch objects from multiple\nservers to increase performance (imagine an upstream git:// repository\nwith a forked http:// repository that has packs, the client could use\nthe git:// repository for fetching as much single object as possible\nand only using the forked repository for all objects not yet found in\nthe upstream repository).\n\nSending a pingback should append the pinging repository URL to the\npinged repository's list (see above). Before appending the URL, the\npinged repository should check if the URL exists and if there is a Git\nrepository at the given URL and if the pinging repository is based on\nthe pinged repository.\n\nThere is not a single repository with pingbacks/trackbacks, but every\nrepository has its own list of \"related\" repositories. So when I'm\ninterested in the repository from project at URL \"X\", I can fetch its\nrepository or only its mirror list and get a list of URLs that also\ncarry (derived) versions of the project at URL \"X\".\n\nOf course, your idea with having a centralized repository (that only\nstores URLs) would be nice when an upstream Git repository dies to\nfind some other repository where the data is still available:\n\n1) Clone repository from URL \"X\"\n2) 404 -- not found\n3) Get list of mirrors from URL repository\n4) Download repository from other URL\n\nBut that defeats some gains from a truly distributed vcs, so just\nkeeping track of a list of  URLs that cloned from this repository\nshould be enough.\n"}]}