)]}'
{"doc/source/cloner.rst":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"f21a9db38d01dc179d35f5019ee74ba803fc5a41","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Zuul cloner forces git clone to copy the cached repositories. Pass"},{"line_number":92,"context_line":"``--cache-hardlink`` to lift the enforcement and let git clone"},{"line_number":93,"context_line":"create hardlinks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1abeadc6_131e560c","line":93,"updated":"2014-08-28 21:44:17.000000000","message":"I don\u0027t know if we should expect the implied \"let git clone create hardlinks if the cached repo and destination repo are on the same filesystem\" to be clear to everyone. Do you think we should be explicit about that behavior here?","commit_id":"a04a8e73ca11710072e27fe056cdd413ea83d727"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"391a722e7d940dc7776bb54885580704696f755f","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Zuul cloner forces git clone to copy the cached repositories. Pass"},{"line_number":92,"context_line":"``--cache-hardlink`` to lift the enforcement and let git clone"},{"line_number":93,"context_line":"create hardlinks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa98f980_4fa462b9","line":93,"updated":"2014-09-16 15:21:52.000000000","message":"I like the idea that we should just do what git does.  What if we accepted either a path or file URL, just like git, and parsed the URL to determine its filesystem location (which we need to do in order to test whether the dir exists)?","commit_id":"a04a8e73ca11710072e27fe056cdd413ea83d727"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"3e06953d417b3b2c4e96a4eb723ebd68217f4764","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Zuul cloner forces git clone to copy the cached repositories. Pass"},{"line_number":92,"context_line":"``--cache-hardlink`` to lift the enforcement and let git clone"},{"line_number":93,"context_line":"create hardlinks."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1abeadc6_ce4c0245","line":93,"in_reply_to":"1abeadc6_131e560c","updated":"2014-08-29 19:54:48.000000000","message":"Zuul cloner should probably use git clone with the provided dir (i.e. do not silently prefix  \u0027file://\u0027 by default) and prevent hard linking via an option.\n\nThe thing that confuses me when reading the git-clone man page is that there are two options that apparently achieve the same (prevent hardlinks):\n\n --no-local\n --no-hardlinks\n\nMaybe we can have a --cache-no-hardlinks option that would be passed to git clone to prevent hard linking.  Could be added to James patch (parent of this one).","commit_id":"a04a8e73ca11710072e27fe056cdd413ea83d727"},{"author":{"_account_id":6133,"name":"yolanda.robla","email":"yroblamo@redhat.com","username":"yolanda.robla"},"change_message_id":"f01d9ff69842c92320612f4b7157e50d7e5c8a5a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"repository has all the information in the upstream repository."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"The ``--cache-no-hardlinks`` option can be used to force git to"},{"line_number":92,"context_line":"always copy git objects from the cache direcotry. By default, if"},{"line_number":93,"context_line":"the cache directory is on the same disk as the workspace, git-clone"},{"line_number":94,"context_line":"will hardlink git objects to speed up the process and save space."}],"source_content_type":"text/x-rst","patch_set":8,"id":"da20952f_a19a4b12","line":92,"updated":"2015-09-07 08:25:48.000000000","message":"typo if you refactor: directory","commit_id":"a5973201149871789b61864569cde8b88fd95777"},{"author":{"_account_id":6808,"name":"Timo Tijhof","email":"krinkle@fastmail.com","username":"krinklemail"},"change_message_id":"73488261a27c5e63862e382dafb59fb96f86a0c8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"repository has all the information in the upstream repository."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"The ``--cache-no-hardlinks`` option can be used to force git to"},{"line_number":92,"context_line":"always copy git objects from the cache direcotry. By default, if"},{"line_number":93,"context_line":"the cache directory is on the same disk as the workspace, git-clone"},{"line_number":94,"context_line":"will hardlink git objects to speed up the process and save space."}],"source_content_type":"text/x-rst","patch_set":8,"id":"da20952f_2a481d8a","line":92,"in_reply_to":"da20952f_a19a4b12","updated":"2015-09-08 15:16:09.000000000","message":"Fixed.","commit_id":"a5973201149871789b61864569cde8b88fd95777"}],"zuul/cmd/cloner.py":[{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"d5ee2c8de41c1224fb73e55642be5ce49ea5f109","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                            help\u003d(\u0027a directory that holds cached copies of \u0027"},{"line_number":59,"context_line":"                                  \u0027repos from which to make an initial clone.\u0027"},{"line_number":60,"context_line":"                                  ))"},{"line_number":61,"context_line":"        parser.add_argument(\u0027--cache-no-hardlinks\u0027, dest\u003d\u0027cache_no_hardlinks\u0027,"},{"line_number":62,"context_line":"                            help\u003d(\u0027force git-clone to never use hardlinks when\u0027"},{"line_number":63,"context_line":"                                  \u0027fetching from the cache directory.\u0027))"},{"line_number":64,"context_line":"        parser.add_argument(\u0027git_base_url\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a0c5dc1_ed59ef8f","line":61,"updated":"2015-05-12 12:29:48.000000000","message":"That shows in the help as:\n\n    --cache-no-hardlinks CACHE_NO_HARDLINKS\n\nIt should be a flip, i.e. action\u003d\u0027store_true\u0027","commit_id":"5395730d83140a090afd2e75607e619bb6ca0a54"},{"author":{"_account_id":7069,"name":"Joshua Hesketh","email":"josh@nitrotech.org","username":"jhesketh"},"change_message_id":"c1bd8222ad4f71e728060156e0a5b10c9390125e","unresolved":false,"context_lines":[{"line_number":149,"context_line":"            clone_map_file\u003dself.args.clone_map_file,"},{"line_number":150,"context_line":"            project_branches\u003dproject_branches,"},{"line_number":151,"context_line":"            cache_dir\u003dself.args.cache_dir,"},{"line_number":152,"context_line":"            cache_no_hardlinks\u003dself.args.cache_no_hardlinks"},{"line_number":153,"context_line":"        )"},{"line_number":154,"context_line":"        cloner.execute()"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_a691599b","line":152,"updated":"2015-07-01 09:02:05.000000000","message":"(nit) missing trailing comma for consistency","commit_id":"63a0be6647f8721aa7e7dc7cbfb0fc83b3b8e812"},{"author":{"_account_id":11610,"name":"Timothy R. Chavez","email":"timrchavez@us.ibm.com","username":"timrchavez"},"change_message_id":"dd31cc7f9cd56a911faeb8695a9d4ff0a5a92bf6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        parser.add_argument(\u0027--cache-no-hardlinks\u0027, dest\u003d\u0027cache_no_hardlinks\u0027,"},{"line_number":58,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":59,"context_line":"                            help\u003d(\u0027force git-clone to never use hardlinks when\u0027"},{"line_number":60,"context_line":"                                  \u0027fetching from the cache directory.\u0027))"},{"line_number":61,"context_line":"        parser.add_argument(\u0027git_base_url\u0027,"},{"line_number":62,"context_line":"                            help\u003d\u0027reference repo to clone from\u0027)"},{"line_number":63,"context_line":"        parser.add_argument(\u0027projects\u0027, nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a2ca52d_8ec6af66","line":60,"updated":"2015-10-15 15:50:09.000000000","message":"So the default is False here...","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":11610,"name":"Timothy R. Chavez","email":"timrchavez@us.ibm.com","username":"timrchavez"},"change_message_id":"7832f163e7e6a3380766c2303a1c57a58fb86fcf","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        parser.add_argument(\u0027--cache-no-hardlinks\u0027, dest\u003d\u0027cache_no_hardlinks\u0027,"},{"line_number":58,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":59,"context_line":"                            help\u003d(\u0027force git-clone to never use hardlinks when\u0027"},{"line_number":60,"context_line":"                                  \u0027fetching from the cache directory.\u0027))"},{"line_number":61,"context_line":"        parser.add_argument(\u0027git_base_url\u0027,"},{"line_number":62,"context_line":"                            help\u003d\u0027reference repo to clone from\u0027)"},{"line_number":63,"context_line":"        parser.add_argument(\u0027projects\u0027, nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_adee80b2","line":60,"in_reply_to":"3a29b11f_2e3551d9","updated":"2015-10-25 00:42:22.000000000","message":"So I was just observing that your default is False here but in your function (which I commented on) the default became None.  Shouldn\u0027t it be false there as well?","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":6808,"name":"Timo Tijhof","email":"krinkle@fastmail.com","username":"krinklemail"},"change_message_id":"c784e461e4521f69efa10dd9bfcbfd876fd1fae4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        parser.add_argument(\u0027--cache-no-hardlinks\u0027, dest\u003d\u0027cache_no_hardlinks\u0027,"},{"line_number":58,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":59,"context_line":"                            help\u003d(\u0027force git-clone to never use hardlinks when\u0027"},{"line_number":60,"context_line":"                                  \u0027fetching from the cache directory.\u0027))"},{"line_number":61,"context_line":"        parser.add_argument(\u0027git_base_url\u0027,"},{"line_number":62,"context_line":"                            help\u003d\u0027reference repo to clone from\u0027)"},{"line_number":63,"context_line":"        parser.add_argument(\u0027projects\u0027, nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_dff8a5c5","line":60,"in_reply_to":"3a29b11f_adee80b2","updated":"2015-11-02 22:33:12.000000000","message":"I didn\u0027t specify a default value and assumed it would be None (which casts to False implicitly when used as boolean later). None of the other parameters have a default of False in the Cloner class.\n\nI now see that store_true internally defaults to False even if the flag doesn\u0027t end up triggering the action, which is a bit counter-intuitive since I would imagine a flag using an action \"store true\" not to trigger the action \"store true\" unless the flag is specified and otherwise not trigger, but really the class always has an influence on the arguments object.\n\nGiven that premise, the default really doesn\u0027t matter in the class since it is always set.","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":6808,"name":"Timo Tijhof","email":"krinkle@fastmail.com","username":"krinklemail"},"change_message_id":"2cc459f33cd72bb6f97215396a7a930b149f397e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        parser.add_argument(\u0027--cache-no-hardlinks\u0027, dest\u003d\u0027cache_no_hardlinks\u0027,"},{"line_number":58,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":59,"context_line":"                            help\u003d(\u0027force git-clone to never use hardlinks when\u0027"},{"line_number":60,"context_line":"                                  \u0027fetching from the cache directory.\u0027))"},{"line_number":61,"context_line":"        parser.add_argument(\u0027git_base_url\u0027,"},{"line_number":62,"context_line":"                            help\u003d\u0027reference repo to clone from\u0027)"},{"line_number":63,"context_line":"        parser.add_argument(\u0027projects\u0027, nargs\u003d\u0027+\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_2e3551d9","line":60,"in_reply_to":"5a2ca52d_8ec6af66","updated":"2015-10-20 03:00:54.000000000","message":"Yes, but I\u0027m not sure what you mean. How is this different from --color or other boolean parameters that would default behaviour?","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"}],"zuul/lib/cloner.py":[{"author":{"_account_id":11610,"name":"Timothy R. Chavez","email":"timrchavez@us.ibm.com","username":"timrchavez"},"change_message_id":"dd31cc7f9cd56a911faeb8695a9d4ff0a5a92bf6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def __init__(self, git_base_url, projects, workspace, zuul_branch,"},{"line_number":31,"context_line":"                 zuul_ref, zuul_url, branch\u003dNone, clone_map_file\u003dNone,"},{"line_number":32,"context_line":"                 project_branches\u003dNone, cache_dir\u003dNone,"},{"line_number":33,"context_line":"                 cache_no_hardlinks\u003dNone):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        self.clone_map \u003d []"},{"line_number":36,"context_line":"        self.dests \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a2ca52d_ced02722","line":33,"updated":"2015-10-15 15:50:09.000000000","message":"But None here.  Should this value be changed from None to False?","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":11610,"name":"Timothy R. Chavez","email":"timrchavez@us.ibm.com","username":"timrchavez"},"change_message_id":"dd31cc7f9cd56a911faeb8695a9d4ff0a5a92bf6","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            not os.path.exists(dest)):"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            if self.cache_no_hardlinks:"},{"line_number":80,"context_line":"                # file:// tells git not to hard-link across repos"},{"line_number":81,"context_line":"                git_cache \u003d \u0027file://%s\u0027 % git_cache"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            self.log.info(\"Creating repo %s from cache %s\","}],"source_content_type":"text/x-python","patch_set":10,"id":"5a2ca52d_eecde385","line":80,"updated":"2015-10-15 15:50:09.000000000","message":"This seems like a total hack to me.  Can we not use \u0027--no-hardlinks\u0027.  Should be able to jut pass it via kwargs into the clone_from down below.","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":11610,"name":"Timothy R. Chavez","email":"timrchavez@us.ibm.com","username":"timrchavez"},"change_message_id":"7832f163e7e6a3380766c2303a1c57a58fb86fcf","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            not os.path.exists(dest)):"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            if self.cache_no_hardlinks:"},{"line_number":80,"context_line":"                # file:// tells git not to hard-link across repos"},{"line_number":81,"context_line":"                git_cache \u003d \u0027file://%s\u0027 % git_cache"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            self.log.info(\"Creating repo %s from cache %s\","}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_8df14498","line":80,"in_reply_to":"3a29b11f_4e476d4b","updated":"2015-10-25 00:42:22.000000000","message":"No I\u0027m proposing rather than inferring a certain side affect of using file:// we explicitly pass the argument --no-hardlinks to the clone operation\n\nSee: https://www.kernel.org/pub/software/scm/git/docs/git-clone.html","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":6808,"name":"Timo Tijhof","email":"krinkle@fastmail.com","username":"krinklemail"},"change_message_id":"21f35c6b22868966b9c97e36ed3877bfa21533a7","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            not os.path.exists(dest)):"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            if self.cache_no_hardlinks:"},{"line_number":80,"context_line":"                # file:// tells git not to hard-link across repos"},{"line_number":81,"context_line":"                git_cache \u003d \u0027file://%s\u0027 % git_cache"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            self.log.info(\"Creating repo %s from cache %s\","}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_3fd5191b","line":80,"in_reply_to":"3a29b11f_8df14498","updated":"2015-11-02 22:35:45.000000000","message":"Oh, right. I proposed that originally. There was some reason in #openstack-infra on IRC that made us (Wikimedia) implement it this way instead.\n\nI don\u0027t have time available to verify and test out that this parameter in our environment. Feel free to amend if you\u0027re confident that it works. We\u0027ll find out next time we upgrade our release.","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":6808,"name":"Timo Tijhof","email":"krinkle@fastmail.com","username":"krinklemail"},"change_message_id":"2cc459f33cd72bb6f97215396a7a930b149f397e","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            not os.path.exists(dest)):"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"            if self.cache_no_hardlinks:"},{"line_number":80,"context_line":"                # file:// tells git not to hard-link across repos"},{"line_number":81,"context_line":"                git_cache \u003d \u0027file://%s\u0027 % git_cache"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"            self.log.info(\"Creating repo %s from cache %s\","}],"source_content_type":"text/x-python","patch_set":10,"id":"3a29b11f_4e476d4b","line":80,"in_reply_to":"5a2ca52d_eecde385","updated":"2015-10-20 03:00:54.000000000","message":"I\u0027m not sure what you\u0027re referring to. Are you proposed to rename the option form --cache-no-hardlinks to --no-hardlinks?","commit_id":"fb492a9043837601463cadbe43d3b627aa507a8a"},{"author":{"_account_id":2475,"name":"Antoine Musso","email":"hashar@free.fr","username":"hashar"},"change_message_id":"d0da41372c2538546abc4109b6b78f6d3e76f0d7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            if self.cache_no_hardlinks:"},{"line_number":83,"context_line":"                # file:// tells git not to hard-link across repos"},{"line_number":84,"context_line":"                git_cache \u003d \u0027file://%s\u0027 % git_cache"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"            self.log.info(\"Creating repo %s from cache %s\","},{"line_number":87,"context_line":"                          project, git_cache)"},{"line_number":88,"context_line":"            new_repo \u003d git.Repo.clone_from(git_cache, dest)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bae84128_3156ef06","line":85,"updated":"2016-02-24 21:30:39.000000000","message":"Code ends up duplicated, wrong rebase","commit_id":"0d86cc162d17d988c6041602f6d449810cf85ea4"}]}
