[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:02.49,Default,,0000,0000,0000,,Thank you very much. Dialogue: 0,0:00:03.15,0:00:05.06,Default,,0000,0000,0000,,Thanks everybody for coming,… Dialogue: 0,0:00:08.67,0:00:12.19,Default,,0000,0000,0000,,If you are packaging software and you want\Nme to work on with you, Dialogue: 0,0:00:12.19,0:00:13.53,Default,,0000,0000,0000,,this is how you can do that. Dialogue: 0,0:00:13.53,0:00:15.16,Default,,0000,0000,0000,,It is a very self-??? talk: Dialogue: 0,0:00:15.16,0:00:18.52,Default,,0000,0000,0000,,I just want to explain some of the things\Nthat I like, Dialogue: 0,0:00:18.52,0:00:21.37,Default,,0000,0000,0000,,some practice that I prefer about Debian\Npackaging, Dialogue: 0,0:00:21.37,0:00:25.24,Default,,0000,0000,0000,,and I don't pretend this is any sort of… Dialogue: 0,0:00:25.24,0:00:27.30,Default,,0000,0000,0000,,official, permanent or final thing. Dialogue: 0,0:00:27.30,0:00:30.46,Default,,0000,0000,0000,,I just wanted to share some ideas that I\Nhave about the way that I work with Dialogue: 0,0:00:30.46,0:00:34.98,Default,,0000,0000,0000,,packages, in the hope that maybe, hmm,\Nfor two hopes: Dialogue: 0,0:00:34.98,0:00:38.06,Default,,0000,0000,0000,,One is that I hope that I can show you\Nsomething that you have not heard of, Dialogue: 0,0:00:38.06,0:00:40.68,Default,,0000,0000,0000,,or maybe you were doing differently, Dialogue: 0,0:00:40.68,0:00:42.42,Default,,0000,0000,0000,,or maybe you think it is\Nthe right think to do Dialogue: 0,0:00:42.42,0:00:43.88,Default,,0000,0000,0000,,and it is just nice to see\Nsomebody else doing it. Dialogue: 0,0:00:43.88,0:00:47.05,Default,,0000,0000,0000,,My second hope is that you can tell me\Nwhat I am doing wrong, Dialogue: 0,0:00:47.05,0:00:51.05,Default,,0000,0000,0000,,and you can help me learn and improve\Non my own packaging techniques. Dialogue: 0,0:00:51.05,0:00:52.91,Default,,0000,0000,0000,,If you see something that\NI am proposing up here, Dialogue: 0,0:00:52.91,0:00:55.51,Default,,0000,0000,0000,,and you think there is a problem with it,\NI would like to hear about it too. Dialogue: 0,0:00:55.51,0:00:58.23,Default,,0000,0000,0000,,I just want to see more of the culture\Nwithin Debian, Dialogue: 0,0:00:58.24,0:01:00.63,Default,,0000,0000,0000,,of people who are doing packaging,\Nexplaining what they are doing, Dialogue: 0,0:01:00.63,0:01:02.79,Default,,0000,0000,0000,,and so I thought I would\Njust step up and explain: Dialogue: 0,0:01:02.79,0:01:04.50,Default,,0000,0000,0000,,"Here is some of the practice that I do", Dialogue: 0,0:01:04.50,0:01:08.72,Default,,0000,0000,0000,,In the hope that other people will do the\Nsame and explain what they are doing, Dialogue: 0,0:01:08.72,0:01:12.21,Default,,0000,0000,0000,,and maybe they can learn from\Nme and I can learn from them. Dialogue: 0,0:01:12.21,0:01:16.92,Default,,0000,0000,0000,,Without much further ????, I am\Njust going to dive into it. Dialogue: 0,0:01:16.92,0:01:20.90,Default,,0000,0000,0000,,If you have questions, I am perfectly\Nhappy to be interrupted, Dialogue: 0,0:01:20.90,0:01:24.19,Default,,0000,0000,0000,,we have some folks with walking mics\Nin the crowd: Dialogue: 0,0:01:24.19,0:01:26.69,Default,,0000,0000,0000,,you can just raise your hand. Dialogue: 0,0:01:26.69,0:01:29.25,Default,,0000,0000,0000,,If you have got a question or an\Ninterruption or whatever, Dialogue: 0,0:01:29.25,0:01:30.35,Default,,0000,0000,0000,,that is fine. Dialogue: 0,0:01:30.35,0:01:33.04,Default,,0000,0000,0000,,I doubt I will go the whole 15 minutes,\NI think there are 20 minutes, Dialogue: 0,0:01:33.04,0:01:35.18,Default,,0000,0000,0000,,I doubt I will go the whole time,\Nso there will be also Dialogue: 0,0:01:35.18,0:01:36.90,Default,,0000,0000,0000,,time for questions at\Nthe end if you prefer. Dialogue: 0,0:01:36.90,0:01:38.70,Default,,0000,0000,0000,,But I do not mind being interrupted. Dialogue: 0,0:01:38.70,0:01:42.79,Default,,0000,0000,0000,,So, this is all on this web page here, Dialogue: 0,0:01:42.79,0:01:44.79,Default,,0000,0000,0000,,you could probably skip this talk and go\Nread the web page, Dialogue: 0,0:01:44.79,0:01:46.86,Default,,0000,0000,0000,,but then you would not have the nice\N??? actions, Dialogue: 0,0:01:46.86,0:01:48.86,Default,,0000,0000,0000,,and it is easier to tell me that I am\Nwrong in person, Dialogue: 0,0:01:48.86,0:01:51.40,Default,,0000,0000,0000,,so I would like to have that happen. Dialogue: 0,0:01:51.40,0:01:53.45,Default,,0000,0000,0000,,I put this up on the Debian wiki, Dialogue: 0,0:01:53.45,0:01:56.24,Default,,0000,0000,0000,,because I want anyone\Nto be able to find it. Dialogue: 0,0:01:56.24,0:02:00.24,Default,,0000,0000,0000,,If you think you have got some good ideas,\Nyou should put it on the Debian Wiki too: Dialogue: 0,0:02:00.24,0:02:05.01,Default,,0000,0000,0000,,other people can take advantage of the\Nideas that you have got. Dialogue: 0,0:02:07.58,0:02:11.09,Default,,0000,0000,0000,,First baseline is:\NI really like revision control. Dialogue: 0,0:02:11.10,0:02:14.27,Default,,0000,0000,0000,,And I know that it makes me\Na certain flavor on nerd, Dialogue: 0,0:02:14.27,0:02:19.01,Default,,0000,0000,0000,,but when we are working with things that\Nare as complicated as software packages, Dialogue: 0,0:02:19.01,0:02:19.89,Default,,0000,0000,0000,,hmmm… Dialogue: 0,0:02:23.37,0:02:25.67,Default,,0000,0000,0000,,I think a lot of people don't get\Nthat in Debian you are not Dialogue: 0,0:02:25.67,0:02:27.61,Default,,0000,0000,0000,,just working on one\Nsoftware package: Dialogue: 0,0:02:27.61,0:02:30.12,Default,,0000,0000,0000,,you are actually probably, if you\Nare doing a responsibly work, Dialogue: 0,0:02:30.12,0:02:33.11,Default,,0000,0000,0000,,on at least two software packages,\Nand maybe 5. Dialogue: 0,0:02:33.11,0:02:35.15,Default,,0000,0000,0000,,So you have got the version that is\Nunstable, Dialogue: 0,0:02:35.15,0:02:39.26,Default,,0000,0000,0000,,and you have got the version that you\Ntry to maintain for stable as well. Dialogue: 0,0:02:39.26,0:02:45.17,Default,,0000,0000,0000,,And we are committing to\Ndoing maintenance work. Dialogue: 0,0:02:45.17,0:02:52.50,Default,,0000,0000,0000,,A lot of our work in the project is ???\Nin nature: Dialogue: 0,0:02:52.50,0:02:55.49,Default,,0000,0000,0000,,we want to clean up the mess and\Nwe want us to stay out of the way Dialogue: 0,0:02:55.49,0:02:58.26,Default,,0000,0000,0000,,and make sure things work,\Nfunctionally, Dialogue: 0,0:02:58.26,0:03:01.34,Default,,0000,0000,0000,,for people who are relying on the\Noperating system to not get in their way. Dialogue: 0,0:03:01.34,0:03:04.11,Default,,0000,0000,0000,,So revision control I think is really\Nhelpful because it means you can Dialogue: 0,0:03:04.11,0:03:07.67,Default,,0000,0000,0000,,keep track of what changes you have done\Non different branches of the project Dialogue: 0,0:03:07.67,0:03:09.80,Default,,0000,0000,0000,,while you are maintaining both of them. Dialogue: 0,0:03:09.80,0:03:14.44,Default,,0000,0000,0000,,Basically, ??? require working with\Nthe revision system I am comfortable with, Dialogue: 0,0:03:14.44,0:03:17.74,Default,,0000,0000,0000,,I prefer Git, I am not going to have a\Nreligious word about it. Dialogue: 0,0:03:17.74,0:03:21.29,Default,,0000,0000,0000,,If upstream uses Git, I am\Neven happier, and I try to make Dialogue: 0,0:03:21.29,0:03:25.68,Default,,0000,0000,0000,,my packaging depend on\Nupstream's revision control. Dialogue: 0,0:03:29.34,0:03:34.81,Default,,0000,0000,0000,,I like to use 'git-buildpackage', and I\Nlike to use it with debhelper. Dialogue: 0,0:03:34.81,0:03:36.79,Default,,0000,0000,0000,,If you have not tried out\N'git-buildpackage', Dialogue: 0,0:03:36.79,0:03:39.88,Default,,0000,0000,0000,,we are going to have a\N'git-buildpackage' skill share session Dialogue: 0,0:03:39.88,0:03:43.88,Default,,0000,0000,0000,,later on today actually, and I welcome\Nyou to come and share your tricks with it, Dialogue: 0,0:03:43.88,0:03:46.29,Default,,0000,0000,0000,,or learn some tricks from other people. Dialogue: 0,0:03:46.29,0:03:50.48,Default,,0000,0000,0000,,It is a particular way that you can keep\Nyour Debian packaging in a Git repository, Dialogue: 0,0:03:50.48,0:03:56.22,Default,,0000,0000,0000,,and it helps you to keep track of all of\Nthe changes that have happened within Dialogue: 0,0:03:56.22,0:03:59.29,Default,,0000,0000,0000,,your packaging and within upstream to\Nmake sure you are not accidentally Dialogue: 0,0:03:59.29,0:04:00.81,Default,,0000,0000,0000,,making other changes. Dialogue: 0,0:04:00.81,0:04:03.19,Default,,0000,0000,0000,,So it is very easy to go back and\Nreview what you have done. Dialogue: 0,0:04:03.19,0:04:05.88,Default,,0000,0000,0000,,I find that really useful. Dialogue: 0,0:04:05.88,0:04:09.23,Default,,0000,0000,0000,,I definitely also like to keep\Nupstream's source code Dialogue: 0,0:04:09.23,0:04:11.21,Default,,0000,0000,0000,,in the same revision control system. Dialogue: 0,0:04:11.21,0:04:13.82,Default,,0000,0000,0000,,I like to keep the tarballs in the\Nrevision control system Dialogue: 0,0:04:13.82,0:04:15.71,Default,,0000,0000,0000,,because it means that\Nif someone is interested, Dialogue: 0,0:04:15.71,0:04:18.24,Default,,0000,0000,0000,,they can uses a tool called\N'debcheckout'. Dialogue: 0,0:04:18.24,0:04:20.71,Default,,0000,0000,0000,,You can use 'debcheckout' with\Na name of a package: Dialogue: 0,0:04:20.71,0:04:23.38,Default,,0000,0000,0000,,you just say "I am really\Ninterested in package 'foo', Dialogue: 0,0:04:23.38,0:04:27.05,Default,,0000,0000,0000,,let me see the source code for that":\N'debcheckout foo' Dialogue: 0,0:04:27.05,0:04:30.37,Default,,0000,0000,0000,,You get the source code, and\Nyou get the source code… Dialogue: 0,0:04:30.37,0:04:32.85,Default,,0000,0000,0000,,from a revision control system\Nthat you can now track Dialogue: 0,0:04:32.85,0:04:36.24,Default,,0000,0000,0000,,and you can just propose changes on. Dialogue: 0,0:04:37.27,0:04:40.99,Default,,0000,0000,0000,,You can also extract the tarball from that\Nrevision control system. Dialogue: 0,0:04:40.99,0:04:44.80,Default,,0000,0000,0000,,'debcheckout' actually works even if you\Ndo not have upstream stuff in there, Dialogue: 0,0:04:44.80,0:04:47.53,Default,,0000,0000,0000,,but I like to keep it all in one\Nrevision control system, Dialogue: 0,0:04:47.53,0:04:50.43,Default,,0000,0000,0000,,it is just easier to find everything\Nwhen you want. Dialogue: 0,0:04:50.71,0:04:53.70,Default,,0000,0000,0000,,Some of these things that\NI prefer have to do with Dialogue: 0,0:04:53.70,0:04:55.85,Default,,0000,0000,0000,,what the upstream software\Ndeveloper has done, Dialogue: 0,0:04:55.85,0:04:59.59,Default,,0000,0000,0000,,so I am less inclined to try the package,\Nan upstream software project, Dialogue: 0,0:04:59.59,0:05:02.02,Default,,0000,0000,0000,,if they just throw tarballs\Nhere over the wall Dialogue: 0,0:05:02.02,0:05:03.83,Default,,0000,0000,0000,,to an FTP side every now and then. Dialogue: 0,0:05:03.83,0:05:06.29,Default,,0000,0000,0000,,It makes it more difficult for me to\Nknow what they are doing, Dialogue: 0,0:05:06.29,0:05:07.58,Default,,0000,0000,0000,,and why they are doing it. Dialogue: 0,0:05:07.58,0:05:10.32,Default,,0000,0000,0000,,So i like it, I have already said,\Nwhen upstream uses Git, Dialogue: 0,0:05:10.32,0:05:12.66,Default,,0000,0000,0000,,I also like it when upstream\Nsigns their releases, Dialogue: 0,0:05:12.66,0:05:15.46,Default,,0000,0000,0000,,and says "hey, this is specific release", Dialogue: 0,0:05:15.46,0:05:18.61,Default,,0000,0000,0000,,because that is a signal\Nthat I can use,\N Dialogue: 0,0:05:18.61,0:05:21.89,Default,,0000,0000,0000,,or somebody else that\Nunderstands the project. Dialogue: 0,0:05:23.08,0:05:25.99,Default,,0000,0000,0000,,As said, "we think that this is\Nsomething that other people can use", Dialogue: 0,0:05:25.99,0:05:29.10,Default,,0000,0000,0000,,or "this is a particular version that\Nwe would like other people to test". Dialogue: 0,0:05:29.10,0:05:32.12,Default,,0000,0000,0000,,There are a lot of other situations where\Nmaybe it is not so important. Dialogue: 0,0:05:32.12,0:05:35.13,Default,,0000,0000,0000,,And having that be cryptographically\Nsigned is really useful. Dialogue: 0,0:05:35.13,0:05:38.26,Default,,0000,0000,0000,,I care about cryptographic signature on\Nsoftware because I want to know that Dialogue: 0,0:05:38.26,0:05:44.03,Default,,0000,0000,0000,,what I am running is related to the code\Nthat somebody else out should be run. Dialogue: 0,0:05:44.03,0:05:46.72,Default,,0000,0000,0000,,And if you don't verify your\Nsoftware cryptographically, Dialogue: 0,0:05:46.72,0:05:48.98,Default,,0000,0000,0000,,anyone who can intercept\Nthe network connection Dialogue: 0,0:05:48.98,0:05:52.52,Default,,0000,0000,0000,,between you and that software, can\Nmodify the software before it gets to you. Dialogue: 0,0:05:52.52,0:05:54.30,Default,,0000,0000,0000,,And the cryptographic signature just says: Dialogue: 0,0:05:54.30,0:05:58.12,Default,,0000,0000,0000,,"look, this is a version\Nthat I am OK with. Dialogue: 0,0:05:58.12,0:06:00.32,Default,,0000,0000,0000,,I am putting it out there\Nand it comes from me". Dialogue: 0,0:06:00.32,0:06:03.71,Default,,0000,0000,0000,,So I can have a trace back\Nto that point. Dialogue: 0,0:06:08.43,0:06:11.70,Default,,0000,0000,0000,,??? just talk about briefly about how you\Ndo cryptographic verification of upstream. Dialogue: 0,0:06:11.70,0:06:13.31,Default,,0000,0000,0000,,One is you might know upstream: Dialogue: 0,0:06:13.31,0:06:16.94,Default,,0000,0000,0000,,you might know them personally, you\Nknow their key already, that is fine. Dialogue: 0,0:06:16.94,0:06:20.52,Default,,0000,0000,0000,,That is not the usual case:\Nwe work on the Internet. Dialogue: 0,0:06:21.21,0:06:23.74,Default,,0000,0000,0000,,In the situation where your upstream\Nis signing their tarballs Dialogue: 0,0:06:23.74,0:06:26.50,Default,,0000,0000,0000,,and you have not met them,\Nyou do not have to sign their key, Dialogue: 0,0:06:26.50,0:06:29.05,Default,,0000,0000,0000,,you do not have to say\N"I announce this is their key". Dialogue: 0,0:06:29.05,0:06:32.56,Default,,0000,0000,0000,,But it is probably the same one\Nthat is signing every release, Dialogue: 0,0:06:32.56,0:06:34.09,Default,,0000,0000,0000,,so you should keep track of that. Dialogue: 0,0:06:34.09,0:06:37.80,Default,,0000,0000,0000,,Debian has a nice way to\Nkeep track of that: Dialogue: 0,0:06:37.80,0:06:41.98,Default,,0000,0000,0000,,you can tell Debian how to find the new\Nversion of the upstream tarball. Dialogue: 0,0:06:41.98,0:06:43.72,Default,,0000,0000,0000,,This is in the Debian 'watch' file. Dialogue: 0,0:06:43.72,0:06:49.58,Default,,0000,0000,0000,,If you type 'man uscan', you can learn\Nmore about Debian 'watch', Dialogue: 0,0:06:49.58,0:06:52.09,Default,,0000,0000,0000,,and Debian 'watch' now has\Na feature that lets you say Dialogue: 0,0:06:52.09,0:06:54.77,Default,,0000,0000,0000,,"that is not only this way\Nyou find the tarball, Dialogue: 0,0:06:54.77,0:06:58.49,Default,,0000,0000,0000,,but upstream publishes signatures\Nand the signatures look like this". Dialogue: 0,0:06:58.49,0:07:00.60,Default,,0000,0000,0000,,You know, they got a '.sig' at the end. Dialogue: 0,0:07:00.60,0:07:04.86,Default,,0000,0000,0000,,So there is a particular arcane way to\Nspecify that, but if you specify that, Dialogue: 0,0:07:04.86,0:07:07.34,Default,,0000,0000,0000,,then 'uscan' can find\Nnot only the upstream tarball, Dialogue: 0,0:07:07.34,0:07:09.26,Default,,0000,0000,0000,,it can find the upstream signature. Dialogue: 0,0:07:09.26,0:07:12.57,Default,,0000,0000,0000,,And, if you drop\Nupstream's signing key Dialogue: 0,0:07:12.57,0:07:14.79,Default,,0000,0000,0000,,- which of course I did not\Nput on the wiki page, Dialogue: 0,0:07:14.79,0:07:16.59,Default,,0000,0000,0000,,someone should\Nedit that and fix it - Dialogue: 0,0:07:16.59,0:07:20.57,Default,,0000,0000,0000,,you can put the upstream signing\Nkey in 'debian/upstream/signing-key.asc'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And then if you do that, when you say\N'uscan', you can tell… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Maybe some people here do notk\Nnow how to use 'uscan'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,'uscan' is a very simple tool,\Nyou run it from a software package that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,has a 'debian' directory, or even one\Nlevel up if you keep all of your software Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,packages in one folder. You can go one\Nlevel up and say 'uscan', and it will look Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in all of the folder that are children\Nof it, and look for new version by Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,trying to find for new upstreams versions\Nin 'debian/watch'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And if you have configured 'debian/watch'\Nproperly, it can find the new upstream Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,signatures, and if you have got the\N'upstream/signing-key.asc', then Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it will actually verify the signature for\Nyou as part of fetching the new Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,upstream tarball. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So you can get all of those things just\Nby setting ???? that way. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,There is a hand up down there, could we\Nget the mic down to the hand ?\N Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Or to the person who has that hand, it is\Nnot just a hand. [public laugh] Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[someone] Publish a tarball and a hash, '.sha1',\Nand sign that hash, '.sha1.asc'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Can 'uscan' cope with this and check the\Nsignature on the hash and that the hash Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,belongs to that tarball ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] I do not believe that 'uscan' can\Ndo that currently. So anybody out there Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,who wants to make things better for the\Nworld should go hack on 'uscan': Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that is a pretty straightforward thing\Nthat we should fix because I agree Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that is common pattern. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[someone] I have no answer to this\Nquestion by I have another question: Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,how do you convince upstreams who do\Nnot release tarballs or who do Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,not set tags in Git ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] Who do not make tags in Git ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[someone] Yes, if there is no tags you\Ncan not check out a tarball. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Is there any good way to convince\Nupstream to do this ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] Git has this nice feature, which\Nis that you can create a tag, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which is associate with a particular\Nrevision, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and you would like to have a tag\Neverywhere that a tarball has been Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,released from. I am tempted to pull up\Na Git view and show people some tags. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The question that you ask is a social\None, not just a technical one, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and I actually find that my upstreams\Nare pretty responsive. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Usually I frame my request as "hey, it\Nlooks like you made this tarball from Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this particular commit 'id'. If you could\Ntag you releases, it would be really Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,helpful to me, and here is the command\Nthat I would use to tag the release". Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And I say "git tag…" and of course I\Ncan never remember so first I look it up, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but it is either 'tag name' 'commit id' or\N'commit id' 'tag name'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But I would look it up and I would write\Nthe e-mail so that all they have to do is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,they read it, understand my argument,\Nand execute one command. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And then it starts them ?????? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And if you say 'tag -s' then your tag will\Nbe cryptographically signed, which Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I think is a really good thing to do too. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, cryptographic verification of\Nupstream. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,As I said, I want to keep upstream's code\Nin the revision control system. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I also like to keep… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,In my ideal case upstream is using Git:\NI am using Git for packaging. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I actually like to keep upsteam's Git\Nhistory fully in my repository, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so that I do not just have the tarballs,\Nbut I actually have all of their commits. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And that turns out to be really useful\Nfor two specific cases: Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,In one case, there is a common scenario\Nwhere upstream will fix a bug, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but they have not made a release yet. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And that bug is really, really obviously\Nproblematic for the folks who are Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,using Debian, so want to fix it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,All I can do, because I have their full\Nrevision history, I can use Git to "cherry Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,pick" the upstream commit. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And then I "cherry pick" that upstream\Ncommit and I can have it applied Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,separately and release an Debian version\Nthat has the fix, even before upstream Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,has made a release with the fix. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So one nice thing about having upstream\Nrevision is that I can pull fixes from Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,upstream before they decided\Nto release it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The other advantage is the other\Nway around. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Often when I am doing packaging,\NI discover a problem, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and maybe I can fix the problem. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And if that maybe I am already shipping\Na Debian package that fixes the problem. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If my Debian fixes can be directly applied\Nto upstream, then I can use whatever Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,their preferred upstream patch\Nsubmission guidelines are, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,whether it is a Github pull request, or\Na patch to a mailing list, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,or a "hey can you pull this from my Git\Nrepository over here", e-mail… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The fact that I am using the same Git\Nhistory that they are using makes it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,much easier for me to push my changes\Nback to them. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So, it sort of smooth the interaction if\Nyou can consolidate and use the same Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,revision control system as their. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Towards that aim, I use a system now\Ncalled 'patch q', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which is part of 'git buildpackage'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So 'git buildpackage' is 'gbp', 'patch q'\Nis 'pq', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so to deal with 'patch q' you say\N'gbp pq' Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and then you have some commands. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And what that does, is it takes… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,How many of you are Debian packagers ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,How many of you package\Nsoftware for Debian ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,A very large percentage, but not everyone. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I hope some folks are considering starting\Npackaging if you have not done it yet. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Of those of you who package software,\Nhow many of you package software Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,with modifications, how many of you ship\Na modified version of upstream sources ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Beyond the 'debian' directory, just Debian\Npatches ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So the common way to do that, for the\NDebian 3.0 ??? packaging skill, is that in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,your 'debian' directory you have a\N'patches' sub-directory that has a set of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,individual patches that apply certain\Nchanges, and they are applied in order Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,based on the file called\N'debian/patches/series'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So maintaining that is kind of a drag\Nwhen upstream makes big changes: Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,then all of sudden you have got this set\Nof patches and they do not quite apply… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I is a drag even you do not have it in\Nthe 'debian/patches/' directory. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,But what Debian 'patch q' does is it maps\Nthat directory of patches into a little Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,branch on your Git revision history. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So when you get a new upstream version,\Nyou can say 'patch q rebase', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and it treats it just as Git: it takes the\N'patch q'… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,You have already imported the new version,\Nand it re-applies your patches, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and sometimes that means some minor\Nadjustments. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Git is really good at figuring out what\Nthe right minor adjustments are to make, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and so all of the sudden the 'patch q' is\Nre-based, you refresh it in your revision Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,control system, and there you go. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So I like to use 'git-buildpackage' 'patch q',\Ntagging, as already brought up, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,thank you for that, I like to to tag\Neverything that I release, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like to push that as soon as I can,\Nso that other people who are following Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,my work can now where my releases\Ncome from. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,The reason that I like other people\Nfollowing my work is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,they can fix my bugs easier. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I make mistakes, everybody makes mistakes,\Nand it is really important to me that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if someone catches one of my mistakes,\NI can accept their feedback, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,their criticism, their improvements,\Nas easily as possible. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I want a low barrier to entry for people\Nto help me fix my problems, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it is selfishness. So I try to patch it\Nand publish this things for people Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can find it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I am ??? on these pretty fast because\Nwere are almost at the time.\N Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like to put in some place where other\Npeople get to the them, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,at the moment I like to put them in\N'collab-maint', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it has some problems but it is better\Nthan not publishing your stuff, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and it is nice because it is sort of\Na public use. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like to standardize how of my branches\Nare named, so if I am working on Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,something that has got a stable version,\Nthat is for Jessie, I will name the branch Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,'jessie', because I ??? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,???? multiple branches ??? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I try to push as frequently as I have made\Nsomething that looks sensible. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I do not feel obliged to push my commits\Nto a public repository when I am still Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,experimenting, I actually really like to\Nexperiment, and I also like to keep track Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,of my experiments while I am doing them. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So I try to push when there is a sensible\Nset of changes, and I am trying to get Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,myself to a point where I can understand\Nwhat I have done, even if it wrong. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If I can get myself to a conceptual point\Nwhere it is done, I will push my changes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so other people can see what I am\Nworking on, and then work from there. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That is OK to push something that is\Nwrong, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,as long as you push something that\Npeople can understand. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,When you make a 'git commit' (if you are\Nworking with Git), Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,One of the things that helps me to think\Nabout commit messages… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,People often think that commit messages\Nshould say "what change you made". Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I think that the 'git patch' shows what\Nchange what change you have made, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and I thin your commit messages should\Nsay "why you made the change". Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,That is what people really want to read. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If you need to explain technically why\Nthe thing that you did Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,maps to the conceptual thing that you\Nwanted to do, that is fine: Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,do that in your commit message too.\NBut it is really important to say why Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you made the change. It is not just like\N"initialize variable to 'no'": Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,OK, we can see that from the patch,\Nbut you what you are really saying Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is "there was a crash if someone did 'x', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and we are avoiding that crash by\Nsetting this to 'no'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So I like to send patches via email, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so I try to configure Git email, which\Nmake it really easy to just Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,push patches back upstream. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If I am starting taking over a project\Nthat somebody else has past on, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and they did not use Git, I will try to\Nrestore all of the imports. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I would be happy to talk with people\Nabout how to do that, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if you have questions come find me. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like to keep my files ???? simple:\Nthere is a tool 'wrap-and-sort', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that just canonicalizes your files to\Nmake them look in a simple and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,sensible way. And it is nice because it\Nmeans that everything is… Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,It does things like alphabetize your\Nlist of build depends, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and brake them out one per line.\NThe nice thing about that, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,since you are using revision control,\Nwhen you make a change Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to your build depends, the changes\Nbecome very easy to see: Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"oh, they added one new package here,\Nthere is a single '+'". Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,When ???? so you can see that kind of\Nthing. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like to use ? deb five ? to format\NDebian copyright to be machine readable, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it is nice for people who are doing scans\Nof the archive and try reason about Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,what the patterns are, and licensing of\Nfree software. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,And if I am doing something really crazy,\Nthat is going to make a big change, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I like to use a feature branch in\Nrevision control. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,So we have got one minute left,\NI want to open it up for other questions. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,???? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[attendee] You said you are using\N'wrap-and-sort' which is nice, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I had learned that ???? editors\N- 'cme' - do the same job, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and somehow does a better job:\Nit also ??? standard version Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if it does not fit, or it makes VCS\Nfields properly has it should be. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,'cme fix dpkg-control' fixes your\Ncontrol file. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] 'cme' ? And it is in\Nwhat package ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[attendee] The package 'cme', in\Nunstable ????. In Jessie it is ???? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] You are developing in unstable,\Nthat is OK. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,'cme'\NOK, thank you. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Other questions or suggestions,\Nor complains ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[attendee] If you change the original\Nsource code, and do some commits, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,how do you convert that into a series\Nof ??? patches ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] I use 'patch q' for that as well,\Nso what I do is I say Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"I want to move over to my 'patch q'\Nview of the tree", Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and then I make may changes, I make\Nmy commits, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and then I say\N'gbp pq export', Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and it takes the 'patch q' that I am on\Nand dumps it back Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,into the Debian patches directory. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If you have not use 'gbp pq', I\Nrecommend looking into it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,It takes a little while to get used to,\Nand I still screwed it up sometimes, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but it makes easy to fix your\Nmistakes too. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[organizer] Last question ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[attendee] Do you think it is possible to\Nmake this 'patch q' branch Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"pullable" by upstream ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] I do not actually think it is\Npossible to make it directly Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,"pullable" by upstream: I think upstream\Ncan cherry pick patches from it, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but I do not see how to\Nmake it "pullable". Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If someone else does, I would be\Nhappy to learn. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[organizer] This was "before last",\Nso last. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[attendee] Do you have a recording of\Nyou using the tools that you mentioned, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a video recording would be great,\Njust to show your workflow ? Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Daniel] I do not really know how\Nto do that: if somebody wants to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,help me do that I would be\Nhappy to do it. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I am going to give one last plug, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I know we are out of time here,\Nsorry. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,This tool is called 'gitk'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,This is an example - sorry we\Nshould leave - but this the way Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that I visualize my revision\Ncontrol system. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,We could do a whole other session\Nabout 'gitk'. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,If you do not try to visualize your\Nrevision control system, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you are missing out: try to find a way\Nto visualize stuff, Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,find one that works for you. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Thanks for coming. Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[organizer] Thank you.