##// END OF EJS Templates
release: Merge default into stable for release preparation
marcink -
r354:c835ad40 merge stable
parent child Browse files
Show More
@@ -1,5 +1,5 b''
1 1 [bumpversion]
2 current_version = 4.10.6
2 current_version = 4.11.0
3 3 message = release: Bump version {current_version} to {new_version}
4 4
5 5 [bumpversion:file:vcsserver/VERSION]
@@ -21,8 +21,7 b' syntax: regexp'
21 21 ^\.cache.*$
22 22 ^\.rhodecode$
23 23
24 ^_dev
25 ^._dev
24 ^.dev
26 25 ^build/
27 26 ^coverage\.xml$
28 27 ^data$
@@ -5,12 +5,10 b' done = false'
5 5 done = true
6 6
7 7 [task:fixes_on_stable]
8 done = true
9 8
10 9 [task:pip2nix_generated]
11 done = true
12 10
13 11 [release]
14 state = prepared
15 version = 4.10.6
12 state = in_progress
13 version = 4.11.0
16 14
@@ -137,6 +137,7 b' let'
137 137 # We ensure that always the correct version is available as a symlink.
138 138 # So that users calling them via the profile path will always use the
139 139 # correct version.
140 ln -s ${self.python}/bin/python $out/bin
140 141 ln -s ${pkgs.git}/bin/git $out/bin
141 142 ln -s ${self.mercurial}/bin/hg $out/bin
142 143 ln -s ${pkgs.subversion}/bin/svn* $out/bin
@@ -24,6 +24,13 b' self: super: {'
24 24 '';
25 25 });
26 26
27 hgsubversion = super.hgsubversion.override (attrs: {
28 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
29 pkgs.sqlite
30 basePythonPackages.sqlite3
31 ];
32 });
33
27 34 mercurial = super.mercurial.override (attrs: {
28 35 propagatedBuildInputs = attrs.propagatedBuildInputs ++ [
29 36 self.python.modules.curses
@@ -16,13 +16,13 b''
16 16 };
17 17 };
18 18 Jinja2 = super.buildPythonPackage {
19 name = "Jinja2-2.8";
19 name = "Jinja2-2.9.6";
20 20 buildInputs = with self; [];
21 21 doCheck = false;
22 22 propagatedBuildInputs = with self; [MarkupSafe];
23 23 src = fetchurl {
24 url = "https://pypi.python.org/packages/f2/2f/0b98b06a345a761bec91a079ccae392d282690c2d8272e708f4d10829e22/Jinja2-2.8.tar.gz";
25 md5 = "edb51693fe22c53cee5403775c71a99e";
24 url = "https://pypi.python.org/packages/90/61/f820ff0076a2599dd39406dcb858ecb239438c02ce706c8e91131ab9c7f1/Jinja2-2.9.6.tar.gz";
25 md5 = "6411537324b4dba0956aaa8109f3c77b";
26 26 };
27 27 meta = {
28 28 license = [ pkgs.lib.licenses.bsdOriginal ];
@@ -42,13 +42,13 b''
42 42 };
43 43 };
44 44 MarkupSafe = super.buildPythonPackage {
45 name = "MarkupSafe-0.23";
45 name = "MarkupSafe-1.0";
46 46 buildInputs = with self; [];
47 47 doCheck = false;
48 48 propagatedBuildInputs = with self; [];
49 49 src = fetchurl {
50 url = "https://pypi.python.org/packages/c0/41/bae1254e0396c0cc8cf1751cb7d9afc90a602353695af5952530482c963f/MarkupSafe-0.23.tar.gz";
51 md5 = "f5ab3deee4c37cd6a922fb81e730da6e";
50 url = "https://pypi.python.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz";
51 md5 = "2fcedc9284d50e577b5192e8e3578355";
52 52 };
53 53 meta = {
54 54 license = [ pkgs.lib.licenses.bsdOriginal ];
@@ -81,13 +81,13 b''
81 81 };
82 82 };
83 83 WebTest = super.buildPythonPackage {
84 name = "WebTest-2.0.27";
84 name = "WebTest-2.0.29";
85 85 buildInputs = with self; [];
86 86 doCheck = false;
87 87 propagatedBuildInputs = with self; [six WebOb waitress beautifulsoup4];
88 88 src = fetchurl {
89 url = "https://pypi.python.org/packages/80/fa/ca3a759985c72e3a124cbca3e1f8a2e931a07ffd31fd45d8f7bf21cb95cf/WebTest-2.0.27.tar.gz";
90 md5 = "54e6515ac71c51b6fc90179483c749ad";
89 url = "https://pypi.python.org/packages/94/de/8f94738be649997da99c47b104aa3c3984ecec51a1d8153ed09638253d56/WebTest-2.0.29.tar.gz";
90 md5 = "30b4cf0d340b9a5335fac4389e6f84fc";
91 91 };
92 92 meta = {
93 93 license = [ pkgs.lib.licenses.mit ];
@@ -159,13 +159,13 b''
159 159 };
160 160 };
161 161 decorator = super.buildPythonPackage {
162 name = "decorator-4.0.11";
162 name = "decorator-4.1.2";
163 163 buildInputs = with self; [];
164 164 doCheck = false;
165 165 propagatedBuildInputs = with self; [];
166 166 src = fetchurl {
167 url = "https://pypi.python.org/packages/cc/ac/5a16f1fc0506ff72fcc8fd4e858e3a1c231f224ab79bb7c4c9b2094cc570/decorator-4.0.11.tar.gz";
168 md5 = "73644c8f0bd4983d1b6a34b49adec0ae";
167 url = "https://pypi.python.org/packages/bb/e0/f6e41e9091e130bf16d4437dabbac3993908e4d6485ecbc985ef1352db94/decorator-4.1.2.tar.gz";
168 md5 = "a0f7f4fe00ae2dde93494d90c192cf8c";
169 169 };
170 170 meta = {
171 171 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "new BSD License"; } ];
@@ -224,16 +224,16 b''
224 224 };
225 225 };
226 226 gprof2dot = super.buildPythonPackage {
227 name = "gprof2dot-2016.10.13";
227 name = "gprof2dot-2017.9.19";
228 228 buildInputs = with self; [];
229 229 doCheck = false;
230 230 propagatedBuildInputs = with self; [];
231 231 src = fetchurl {
232 url = "https://pypi.python.org/packages/a0/e0/73c71baed306f0402a00a94ffc7b2be94ad1296dfcb8b46912655b93154c/gprof2dot-2016.10.13.tar.gz";
233 md5 = "0125401f15fd2afe1df686a76c64a4fd";
232 url = "https://pypi.python.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz";
233 md5 = "cda2d552bb0d0b9f16e6824a9aabd225";
234 234 };
235 235 meta = {
236 license = [ { fullName = "LGPL"; } ];
236 license = [ { fullName = "GNU Lesser General Public License v3 or later (LGPLv3+)"; } { fullName = "LGPL"; } ];
237 237 };
238 238 };
239 239 greenlet = super.buildPythonPackage {
@@ -263,26 +263,26 b''
263 263 };
264 264 };
265 265 hg-evolve = super.buildPythonPackage {
266 name = "hg-evolve-6.6.0";
266 name = "hg-evolve-7.0.1";
267 267 buildInputs = with self; [];
268 268 doCheck = false;
269 269 propagatedBuildInputs = with self; [];
270 270 src = fetchurl {
271 url = "https://pypi.python.org/packages/c5/04/3557c97eaa320b5a6769edade64a299cd2710f5f3b818f64991ab6c8c08f/hg-evolve-6.6.0.tar.gz";
272 md5 = "06b9a9c8e8137bbf0c4fbf940c009725";
271 url = "https://pypi.python.org/packages/92/5c/4c216be1a08f326a12076b645f4892a2b0865810db1f4a0c9648f1f4c113/hg-evolve-7.0.1.tar.gz";
272 md5 = "2dfa926846ea873a8406bababb06b277";
273 273 };
274 274 meta = {
275 275 license = [ { fullName = "GPLv2+"; } ];
276 276 };
277 277 };
278 278 hgsubversion = super.buildPythonPackage {
279 name = "hgsubversion-1.8.7";
279 name = "hgsubversion-1.9";
280 280 buildInputs = with self; [];
281 281 doCheck = false;
282 282 propagatedBuildInputs = with self; [mercurial subvertpy];
283 283 src = fetchurl {
284 url = "https://pypi.python.org/packages/1c/b8/ff4d2e0ec486f9765b410f09728c02a010e7485d68d6154968074498a403/hgsubversion-1.8.7.tar.gz";
285 md5 = "289f1c36c13bd6a3435a9be390a77bdc";
284 url = "https://pypi.python.org/packages/db/26/7293a6c6b85e2a74ab452e9ba7f00b04ff0e440e6cd4f84131ac5d5e6b22/hgsubversion-1.9.tar.gz";
285 md5 = "0c6f93ef12cc2e7fe67286f16bcc7211";
286 286 };
287 287 meta = {
288 288 license = [ pkgs.lib.licenses.gpl1 ];
@@ -354,13 +354,13 b''
354 354 };
355 355 };
356 356 mercurial = super.buildPythonPackage {
357 name = "mercurial-4.2.3";
357 name = "mercurial-4.4.2";
358 358 buildInputs = with self; [];
359 359 doCheck = false;
360 360 propagatedBuildInputs = with self; [];
361 361 src = fetchurl {
362 url = "https://www.mercurial-scm.org/release/mercurial-4.2.3.tar.gz";
363 md5 = "a24a8fab7c2ad2c65e945b1b35d94e3b";
362 url = "https://pypi.python.org/packages/d0/83/92a5fa662ba277128db305e39e7ea5a638f2f1cbbc6dc5fbf4c14aefae22/mercurial-4.4.2.tar.gz";
363 md5 = "95769125cf7e9dbc341a983253acefcd";
364 364 };
365 365 meta = {
366 366 license = [ pkgs.lib.licenses.gpl1 pkgs.lib.licenses.gpl2Plus ];
@@ -406,13 +406,13 b''
406 406 };
407 407 };
408 408 pexpect = super.buildPythonPackage {
409 name = "pexpect-4.2.1";
409 name = "pexpect-4.3.0";
410 410 buildInputs = with self; [];
411 411 doCheck = false;
412 412 propagatedBuildInputs = with self; [ptyprocess];
413 413 src = fetchurl {
414 url = "https://pypi.python.org/packages/e8/13/d0b0599099d6cd23663043a2a0bb7c61e58c6ba359b2656e6fb000ef5b98/pexpect-4.2.1.tar.gz";
415 md5 = "3694410001a99dff83f0b500a1ca1c95";
414 url = "https://pypi.python.org/packages/f8/44/5466c30e49762bb92e442bbdf4472d6904608d211258eb3198a11f0309a4/pexpect-4.3.0.tar.gz";
415 md5 = "047a486dcd26134b74f2e67046bb61a0";
416 416 };
417 417 meta = {
418 418 license = [ pkgs.lib.licenses.isc { fullName = "ISC License (ISCL)"; } ];
@@ -432,26 +432,26 b''
432 432 };
433 433 };
434 434 plaster = super.buildPythonPackage {
435 name = "plaster-0.5";
435 name = "plaster-1.0";
436 436 buildInputs = with self; [];
437 437 doCheck = false;
438 438 propagatedBuildInputs = with self; [setuptools];
439 439 src = fetchurl {
440 url = "https://pypi.python.org/packages/99/b3/d7ca1fe31d2b56dba68a238721fda6820770f9c2a3de17a582d4b5b2edcc/plaster-0.5.tar.gz";
441 md5 = "c59345a67a860cfcaa1bd6a81451399d";
440 url = "https://pypi.python.org/packages/37/e1/56d04382d718d32751017d32f351214384e529b794084eee20bb52405563/plaster-1.0.tar.gz";
441 md5 = "80e6beb4760c16fea31754babcc0576e";
442 442 };
443 443 meta = {
444 444 license = [ pkgs.lib.licenses.mit ];
445 445 };
446 446 };
447 447 plaster-pastedeploy = super.buildPythonPackage {
448 name = "plaster-pastedeploy-0.4.1";
448 name = "plaster-pastedeploy-0.4.2";
449 449 buildInputs = with self; [];
450 450 doCheck = false;
451 451 propagatedBuildInputs = with self; [PasteDeploy plaster];
452 452 src = fetchurl {
453 url = "https://pypi.python.org/packages/9d/6e/f8be01ed41c94e6c54ac97cf2eb142a702aae0c8cce31c846f785e525b40/plaster_pastedeploy-0.4.1.tar.gz";
454 md5 = "f48d5344b922e56c4978eebf1cd2e0d3";
453 url = "https://pypi.python.org/packages/2c/62/0daf9c0be958e785023e583e51baac15863699e956bfb3d448898d80edd8/plaster_pastedeploy-0.4.2.tar.gz";
454 md5 = "58fd7852002909378e818c9d5b71e90a";
455 455 };
456 456 meta = {
457 457 license = [ pkgs.lib.licenses.mit ];
@@ -484,13 +484,13 b''
484 484 };
485 485 };
486 486 py = super.buildPythonPackage {
487 name = "py-1.4.34";
487 name = "py-1.5.2";
488 488 buildInputs = with self; [];
489 489 doCheck = false;
490 490 propagatedBuildInputs = with self; [];
491 491 src = fetchurl {
492 url = "https://pypi.python.org/packages/68/35/58572278f1c097b403879c1e9369069633d1cbad5239b9057944bb764782/py-1.4.34.tar.gz";
493 md5 = "d9c3d8f734b0819ff48e355d77bf1730";
492 url = "https://pypi.python.org/packages/90/e3/e075127d39d35f09a500ebb4a90afd10f9ef0a1d28a6d09abeec0e444fdd/py-1.5.2.tar.gz";
493 md5 = "279ca69c632069e1b71e11b14641ca28";
494 494 };
495 495 meta = {
496 496 license = [ pkgs.lib.licenses.mit ];
@@ -523,13 +523,13 b''
523 523 };
524 524 };
525 525 pyramid-jinja2 = super.buildPythonPackage {
526 name = "pyramid-jinja2-2.5";
526 name = "pyramid-jinja2-2.7";
527 527 buildInputs = with self; [];
528 528 doCheck = false;
529 529 propagatedBuildInputs = with self; [pyramid zope.deprecation Jinja2 MarkupSafe];
530 530 src = fetchurl {
531 url = "https://pypi.python.org/packages/a1/80/595e26ffab7deba7208676b6936b7e5a721875710f982e59899013cae1ed/pyramid_jinja2-2.5.tar.gz";
532 md5 = "07cb6547204ac5e6f0b22a954ccee928";
531 url = "https://pypi.python.org/packages/d8/80/d60a7233823de22ce77bd864a8a83736a1fe8b49884b08303a2e68b2c853/pyramid_jinja2-2.7.tar.gz";
532 md5 = "c2f8b2cd7b73a6f1d9a311fcfaf4fb92";
533 533 };
534 534 meta = {
535 535 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
@@ -549,13 +549,13 b''
549 549 };
550 550 };
551 551 pytest = super.buildPythonPackage {
552 name = "pytest-3.1.2";
552 name = "pytest-3.2.5";
553 553 buildInputs = with self; [];
554 554 doCheck = false;
555 555 propagatedBuildInputs = with self; [py setuptools];
556 556 src = fetchurl {
557 url = "https://pypi.python.org/packages/72/2b/2d3155e01f45a5a04427857352ee88220ee39550b2bc078f9db3190aea46/pytest-3.1.2.tar.gz";
558 md5 = "c4d179f89043cc925e1c169d03128e02";
557 url = "https://pypi.python.org/packages/1f/f8/8cd74c16952163ce0db0bd95fdd8810cbf093c08be00e6e665ebf0dc3138/pytest-3.2.5.tar.gz";
558 md5 = "6dbe9bb093883f75394a689a1426ac6f";
559 559 };
560 560 meta = {
561 561 license = [ pkgs.lib.licenses.mit ];
@@ -588,39 +588,39 b''
588 588 };
589 589 };
590 590 pytest-profiling = super.buildPythonPackage {
591 name = "pytest-profiling-1.2.6";
591 name = "pytest-profiling-1.2.11";
592 592 buildInputs = with self; [];
593 593 doCheck = false;
594 594 propagatedBuildInputs = with self; [six pytest gprof2dot];
595 595 src = fetchurl {
596 url = "https://pypi.python.org/packages/f9/0d/df67fb9ce16c2cef201693da956321b1bccfbf9a4ead39748b9f9d1d74cb/pytest-profiling-1.2.6.tar.gz";
597 md5 = "50eb4c66c3762a2f1a49669bedc0b894";
596 url = "https://pypi.python.org/packages/c0/4a/b4aa786e93c07a86f1f87c581a36bf355a9e06a9da7e00dbd05047626bd2/pytest-profiling-1.2.11.tar.gz";
597 md5 = "9ef6b60248731be5d44477980408e8f7";
598 598 };
599 599 meta = {
600 600 license = [ pkgs.lib.licenses.mit ];
601 601 };
602 602 };
603 603 pytest-runner = super.buildPythonPackage {
604 name = "pytest-runner-2.11.1";
604 name = "pytest-runner-3.0";
605 605 buildInputs = with self; [];
606 606 doCheck = false;
607 607 propagatedBuildInputs = with self; [];
608 608 src = fetchurl {
609 url = "https://pypi.python.org/packages/9e/4d/08889e5e27a9f5d6096b9ad257f4dea1faabb03c5ded8f665ead448f5d8a/pytest-runner-2.11.1.tar.gz";
610 md5 = "bdb73eb18eca2727944a2dcf963c5a81";
609 url = "https://pypi.python.org/packages/65/b4/ae89338cd2d81e2cc54bd6db2e962bfe948f612303610d68ab24539ac2d1/pytest-runner-3.0.tar.gz";
610 md5 = "8f8363a52bbabc4cedd5e239beb2ba11";
611 611 };
612 612 meta = {
613 613 license = [ pkgs.lib.licenses.mit ];
614 614 };
615 615 };
616 616 pytest-sugar = super.buildPythonPackage {
617 name = "pytest-sugar-0.8.0";
617 name = "pytest-sugar-0.9.0";
618 618 buildInputs = with self; [];
619 619 doCheck = false;
620 620 propagatedBuildInputs = with self; [pytest termcolor];
621 621 src = fetchurl {
622 url = "https://pypi.python.org/packages/a5/b0/b2773dee078f17773a5bf2dfad49b0be57b6354bbd84bbefe4313e509d87/pytest-sugar-0.8.0.tar.gz";
623 md5 = "8cafbdad648068e0e44b8fc5f9faae42";
622 url = "https://pypi.python.org/packages/49/d8/c5ff6cca3ce2ebd8b73eec89779bf6b4a7737456a70e8ea4d44c1ff90f71/pytest-sugar-0.9.0.tar.gz";
623 md5 = "89fbff17277fa6a95a560a04b68cb9f9";
624 624 };
625 625 meta = {
626 626 license = [ pkgs.lib.licenses.bsdOriginal ];
@@ -640,20 +640,20 b''
640 640 };
641 641 };
642 642 repoze.lru = super.buildPythonPackage {
643 name = "repoze.lru-0.6";
643 name = "repoze.lru-0.7";
644 644 buildInputs = with self; [];
645 645 doCheck = false;
646 646 propagatedBuildInputs = with self; [];
647 647 src = fetchurl {
648 url = "https://pypi.python.org/packages/6e/1e/aa15cc90217e086dc8769872c8778b409812ff036bf021b15795638939e4/repoze.lru-0.6.tar.gz";
649 md5 = "2c3b64b17a8e18b405f55d46173e14dd";
648 url = "https://pypi.python.org/packages/12/bc/595a77c4b5e204847fdf19268314ef59c85193a9dc9f83630fc459c0fee5/repoze.lru-0.7.tar.gz";
649 md5 = "c08cc030387e0b1fc53c5c7d964b35e2";
650 650 };
651 651 meta = {
652 652 license = [ { fullName = "Repoze Public License"; } { fullName = "BSD-derived (http://www.repoze.org/LICENSE.txt)"; } ];
653 653 };
654 654 };
655 655 rhodecode-vcsserver = super.buildPythonPackage {
656 name = "rhodecode-vcsserver-4.10.6";
656 name = "rhodecode-vcsserver-4.11.0";
657 657 buildInputs = with self; [pytest py pytest-cov pytest-sugar pytest-runner pytest-catchlog pytest-profiling gprof2dot pytest-timeout mock WebTest cov-core coverage configobj];
658 658 doCheck = true;
659 659 propagatedBuildInputs = with self; [Beaker configobj decorator dulwich hgsubversion hg-evolve infrae.cache mercurial msgpack-python pyramid pyramid-jinja2 pyramid-mako repoze.lru simplejson subprocess32 subvertpy six translationstring WebOb wheel zope.deprecation zope.interface ipdb ipython gevent greenlet gunicorn waitress pytest py pytest-cov pytest-sugar pytest-runner pytest-catchlog pytest-profiling gprof2dot pytest-timeout mock WebTest cov-core coverage];
@@ -663,13 +663,13 b''
663 663 };
664 664 };
665 665 scandir = super.buildPythonPackage {
666 name = "scandir-1.5";
666 name = "scandir-1.6";
667 667 buildInputs = with self; [];
668 668 doCheck = false;
669 669 propagatedBuildInputs = with self; [];
670 670 src = fetchurl {
671 url = "https://pypi.python.org/packages/bd/f4/3143e0289faf0883228017dbc6387a66d0b468df646645e29e1eb89ea10e/scandir-1.5.tar.gz";
672 md5 = "a2713043de681bba6b084be42e7a8a44";
671 url = "https://pypi.python.org/packages/77/3f/916f524f50ee65e3f465a280d2851bd63685250fddb3020c212b3977664d/scandir-1.6.tar.gz";
672 md5 = "0180ddb97c96cbb2d4f25d2ae11c64ac";
673 673 };
674 674 meta = {
675 675 license = [ pkgs.lib.licenses.bsdOriginal { fullName = "New BSD License"; } ];
@@ -715,13 +715,13 b''
715 715 };
716 716 };
717 717 six = super.buildPythonPackage {
718 name = "six-1.9.0";
718 name = "six-1.11.0";
719 719 buildInputs = with self; [];
720 720 doCheck = false;
721 721 propagatedBuildInputs = with self; [];
722 722 src = fetchurl {
723 url = "https://pypi.python.org/packages/16/64/1dc5e5976b17466fd7d712e59cbe9fb1e18bec153109e5ba3ed6c9102f1a/six-1.9.0.tar.gz";
724 md5 = "476881ef4012262dfc8adc645ee786c4";
723 url = "https://pypi.python.org/packages/16/d8/bc6316cf98419719bd59c91742194c111b6f2e85abac88e496adefaf7afe/six-1.11.0.tar.gz";
724 md5 = "d12789f9baf7e9fb2524c0c64f1773f8";
725 725 };
726 726 meta = {
727 727 license = [ pkgs.lib.licenses.mit ];
@@ -741,16 +741,16 b''
741 741 };
742 742 };
743 743 subvertpy = super.buildPythonPackage {
744 name = "subvertpy-0.9.3";
744 name = "subvertpy-0.10.1";
745 745 buildInputs = with self; [];
746 746 doCheck = false;
747 747 propagatedBuildInputs = with self; [];
748 748 src = fetchurl {
749 url = "https://code.rhodecode.com/upstream/subvertpy/archive/subvertpy-0.9.3.tar.gz?md5=4e49da2fe07608239cc9a80a7bb8f33c";
750 md5 = "4e49da2fe07608239cc9a80a7bb8f33c";
749 url = "https://pypi.python.org/packages/9d/76/99fa82affce75f5ac0f7dbe513796c3f37311ace0c68e1b063683b4f9b99/subvertpy-0.10.1.tar.gz";
750 md5 = "a70e03579902d480f5e9f8c570f6536b";
751 751 };
752 752 meta = {
753 license = [ pkgs.lib.licenses.lgpl21Plus ];
753 license = [ pkgs.lib.licenses.lgpl21Plus pkgs.lib.licenses.gpl2Plus ];
754 754 };
755 755 };
756 756 termcolor = super.buildPythonPackage {
@@ -806,13 +806,13 b''
806 806 };
807 807 };
808 808 waitress = super.buildPythonPackage {
809 name = "waitress-1.0.2";
809 name = "waitress-1.1.0";
810 810 buildInputs = with self; [];
811 811 doCheck = false;
812 812 propagatedBuildInputs = with self; [];
813 813 src = fetchurl {
814 url = "https://pypi.python.org/packages/cd/f4/400d00863afa1e03618e31fd7e2092479a71b8c9718b00eb1eeb603746c6/waitress-1.0.2.tar.gz";
815 md5 = "b968f39e95d609f6194c6e50425d4bb7";
814 url = "https://pypi.python.org/packages/3c/68/1c10dd5c556872ceebe88483b0436140048d39de83a84a06a8baa8136f4f/waitress-1.1.0.tar.gz";
815 md5 = "0f1eb7fdfdbf2e6d18decbda1733045c";
816 816 };
817 817 meta = {
818 818 license = [ pkgs.lib.licenses.zpt21 ];
@@ -3,24 +3,23 b' setuptools==30.1.0'
3 3
4 4 Beaker==1.9.0
5 5 configobj==5.0.6
6 decorator==4.0.11
6 decorator==4.1.2
7 7 dulwich==0.13.0
8 hgsubversion==1.8.7
9 hg-evolve==6.6.0
8 hgsubversion==1.9.0
9 hg-evolve==7.0.1
10 10 infrae.cache==1.0.1
11 mercurial==4.2.3
11 mercurial==4.4.2
12 12 msgpack-python==0.4.8
13 pyramid-jinja2==2.5
13 pyramid-jinja2==2.7
14 14 pyramid==1.9.1
15 15 pyramid-mako==1.0.2
16 repoze.lru==0.6
16 repoze.lru==0.7
17 17 simplejson==3.11.1
18 18 subprocess32==3.2.7
19 19
20 # Custom subvertpy that is not available on pypi.
21 https://code.rhodecode.com/upstream/subvertpy/archive/subvertpy-0.9.3.tar.gz?md5=4e49da2fe07608239cc9a80a7bb8f33c#egg=subvertpy==0.9.3
20 subvertpy==0.10.1
22 21
23 six==1.9.0
22 six==1.11.0
24 23 translationstring==1.3
25 24 WebOb==1.7.4
26 25 wheel==0.29.0
@@ -31,7 +30,7 b' zope.interface==4.1.3'
31 30 gevent==1.2.2
32 31 greenlet==0.4.12
33 32 gunicorn==19.7.1
34 waitress==1.0.2
33 waitress==1.1.0
35 34
36 35 ## debug
37 36 ipdb==0.10.3
@@ -1,15 +1,15 b''
1 1 # test related requirements
2 pytest==3.1.2
3 py==1.4.34
2 pytest==3.2.5
3 py==1.5.2
4 4 pytest-cov==2.5.1
5 pytest-sugar==0.8.0
6 pytest-runner==2.11.1
5 pytest-sugar==0.9.0
6 pytest-runner==3.0.0
7 7 pytest-catchlog==1.2.2
8 pytest-profiling==1.2.6
9 gprof2dot==2016.10.13
8 pytest-profiling==1.2.11
9 gprof2dot==2017.9.19
10 10 pytest-timeout==1.2.0
11 11
12 12 mock==1.0.1
13 WebTest==2.0.27
13 WebTest==2.0.29
14 14 cov-core==1.15.0
15 15 coverage==3.7.1
@@ -1,1 +1,1 b''
1 4.10.6 No newline at end of file
1 4.11.0 No newline at end of file
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 b' import os'
20 20 import posixpath as vcspath
21 21 import re
22 22 import stat
23 import traceback
23 24 import urllib
24 25 import urllib2
25 26 from functools import wraps
@@ -124,11 +125,15 b' class GitRemote(object):'
124 125
125 126 @reraise_safe_exceptions
126 127 def assert_correct_path(self, wire):
128 path = wire.get('path')
127 129 try:
128 130 self._factory.repo(wire)
129 131 except NotGitRepository as e:
130 # Exception can contain unicode which we convert
131 raise exceptions.AbortException(repr(e))
132 tb = traceback.format_exc()
133 log.debug("Invalid Git path `%s`, tb: %s", path, tb)
134 return False
135
136 return True
132 137
133 138 @reraise_safe_exceptions
134 139 def bare(self, wire):
@@ -442,6 +447,14 b' class GitRemote(object):'
442 447 return remote_refs
443 448
444 449 @reraise_safe_exceptions
450 def sync_push(self, wire, url, refs=None):
451 if self.check_url(url, wire):
452 repo = self._factory.repo(wire)
453 self.run_git_command(
454 wire, ['push', url, '--mirror'], fail_on_stderr=False)
455
456
457 @reraise_safe_exceptions
445 458 def get_remote_refs(self, wire, url):
446 459 repo = Repo(url)
447 460 return repo.get_refs()
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -53,6 +53,7 b' def make_ui_from_config(repo_config):'
53 53 # make our hgweb quiet so it doesn't print output
54 54 baseui.setconfig('ui', 'quiet', 'true')
55 55
56 baseui.setconfig('ui', 'paginate', 'never')
56 57 # force mercurial to only use 1 thread, otherwise it may try to set a
57 58 # signal in a non-main thread, thus generating a ValueError.
58 59 baseui.setconfig('worker', 'numcpus', 1)
@@ -453,10 +454,9 b' class HgRemote(object):'
453 454 fctx = ctx.filectx(path)
454 455
455 456 result = []
456 for i, annotate_data in enumerate(fctx.annotate()):
457 for i, (a_line, content) in enumerate(fctx.annotate()):
457 458 ln_no = i + 1
458 node_info, content = annotate_data
459 sha = hex(node_info[0].node())
459 sha = hex(a_line.fctx.node())
460 460 result.append((ln_no, sha, content))
461 461 return result
462 462
@@ -561,6 +561,15 b' class HgRemote(object):'
561 561 repo, remote, heads=commit_ids, force=None).cgresult
562 562
563 563 @reraise_safe_exceptions
564 def sync_push(self, wire, url):
565 if self.check_url(url, wire['config']):
566 repo = self._factory.repo(wire)
567 bookmarks = dict(repo._bookmarks).keys()
568 remote = peer(repo, {}, url)
569 return exchange.push(
570 repo, remote, newbranch=True, bookmarks=bookmarks).cgresult
571
572 @reraise_safe_exceptions
564 573 def revision(self, wire, rev):
565 574 repo = self._factory.repo(wire)
566 575 ctx = repo[rev]
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -20,10 +20,10 b' Mercurial libs compatibility'
20 20 """
21 21
22 22 import mercurial
23 import mercurial.demandimport
23 from mercurial import demandimport
24 24 # patch demandimport, due to bug in mercurial when it always triggers
25 25 # demandimport.enable()
26 mercurial.demandimport.enable = lambda *args, **kwargs: 1
26 demandimport.enable = lambda *args, **kwargs: 1
27 27
28 28 from mercurial import ui
29 29 from mercurial import patch
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,7 +1,7 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # RhodeCode VCSServer provides access to different vcs backends via network.
4 # Copyright (C) 2014-2017 RodeCode GmbH
4 # Copyright (C) 2014-2018 RhodeCode GmbH
5 5 #
6 6 # This program is free software; you can redistribute it and/or modify
7 7 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -331,6 +331,8 b' class HTTPApplication(object):'
331 331 username = dict_conf.get('username')
332 332 if username:
333 333 environ['REMOTE_USER'] = username
334 # mercurial specific, some extension api rely on this
335 environ['HGUSER'] = username
334 336
335 337 ip = dict_conf.get('ip')
336 338 if ip:
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -45,7 +45,7 b' class StreamFeeder(Thread):'
45 45 self.bytes = bytes(source)
46 46 else: # can be either file pointer or file-like
47 47 if type(source) in (int, long): # file pointer it is
48 ## converting file descriptor (int) stdin into file-like
48 # converting file descriptor (int) stdin into file-like
49 49 try:
50 50 source = os.fdopen(source, 'rb', 16384)
51 51 except Exception:
@@ -118,7 +118,7 b' class InputStreamChunker(Thread):'
118 118 t = self.target
119 119 cs = self.chunk_size
120 120 ccm = self.chunk_count_max
121 kr = self.keep_reading
121 keep_reading = self.keep_reading
122 122 da = self.data_added
123 123 go = self.go
124 124
@@ -129,15 +129,13 b' class InputStreamChunker(Thread):'
129 129
130 130 while b and go.is_set():
131 131 if len(t) > ccm:
132 kr.clear()
133 kr.wait(2)
134 # # this only works on 2.7.x and up
135 # if not kr.wait(10):
136 # raise Exception("Timed out while waiting for input to be read.")
137 # instead we'll use this
138 if len(t) > ccm + 3:
139 raise IOError(
140 "Timed out while waiting for input from subprocess.")
132 keep_reading.clear()
133 keep_reading.wait(2)
134
135 if not keep_reading.wait(10):
136 raise Exception(
137 "Timed out while waiting for input to be read.")
138
141 139 t.append(b)
142 140 da.set()
143 141 b = s.read(cs)
@@ -159,7 +157,8 b' class BufferedGenerator(object):'
159 157 """
160 158
161 159 def __init__(self, source, buffer_size=65536, chunk_size=4096,
162 starting_values=[], bottomless=False):
160 starting_values=None, bottomless=False):
161 starting_values = starting_values or []
163 162
164 163 if bottomless:
165 164 maxlen = int(buffer_size / chunk_size)
@@ -190,9 +189,9 b' class BufferedGenerator(object):'
190 189 elif self.worker.EOF.is_set():
191 190 raise StopIteration
192 191
193 def throw(self, type, value=None, traceback=None):
192 def throw(self, exc_type, value=None, traceback=None):
194 193 if not self.worker.EOF.is_set():
195 raise type(value)
194 raise exc_type(value)
196 195
197 196 def start(self):
198 197 self.worker.start()
@@ -354,7 +353,7 b' class SubprocessIOChunker(object):'
354 353 _closed = False
355 354
356 355 def __init__(self, cmd, inputstream=None, buffer_size=65536,
357 chunk_size=4096, starting_values=[], fail_on_stderr=True,
356 chunk_size=4096, starting_values=None, fail_on_stderr=True,
358 357 fail_on_return_code=True, **kwargs):
359 358 """
360 359 Initializes SubprocessIOChunker
@@ -370,6 +369,7 b' class SubprocessIOChunker(object):'
370 369 exception if the return code is not 0.
371 370 """
372 371
372 starting_values = starting_values or []
373 373 if inputstream:
374 374 input_streamer = StreamFeeder(inputstream)
375 375 input_streamer.start()
@@ -417,6 +417,10 b' class SubprocessIOChunker(object):'
417 417 "Subprocess exited due to an error:\n" + err)
418 418 if _returncode and fail_on_return_code:
419 419 err = ''.join(bg_err)
420 if not err:
421 # maybe get empty stderr, try stdout instead
422 # in many cases git reports the errors on stdout too
423 err = ''.join(bg_out)
420 424 raise EnvironmentError(
421 425 "Subprocess exited with non 0 ret code:%s: stderr:%s" % (
422 426 _returncode, err))
@@ -434,6 +438,7 b' class SubprocessIOChunker(object):'
434 438 # are doing some magic in between closing stdout and terminating the
435 439 # process and, as a result, we are not getting return code on "slow"
436 440 # systems.
441 result = None
437 442 stop_iteration = None
438 443 try:
439 444 result = self.output.next()
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -83,6 +83,11 b' def test_dynamic_capabilities_uses_large'
83 83 assert LARGEFILES_CAPABILITY in caps
84 84
85 85
86 def test_hgsubversion_import():
87 from hgsubversion import svnrepo
88 assert svnrepo
89
90
86 91 @pytest.fixture
87 92 def patched_capabilities(request):
88 93 """
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
@@ -1,5 +1,5 b''
1 1 # RhodeCode VCSServer provides access to different vcs backends via network.
2 # Copyright (C) 2014-2017 RodeCode GmbH
2 # Copyright (C) 2014-2018 RhodeCode GmbH
3 3 #
4 4 # This program is free software; you can redistribute it and/or modify
5 5 # it under the terms of the GNU General Public License as published by
General Comments 0
You need to be logged in to leave comments. Login now