рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рдкрд░ рдорд░рдХреНрдпреВрд░рд┐рдпрд▓ рдЙрдард╛рдирд╛ (рдирд┐рдЧрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде)

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЧрд▓рддреА рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдмрд┐рдЯрдмрдХреЗрдЯ, рдЬрд╣рд╛рдВ рдореЗрд░реА рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрдерд┐рдд рд╣реИрдВ, рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ: рдирдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореМрдЬреВрджрд╛ 1.06.2020 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк: Git рдкрд░ рдЬрд╛рдПрдВ, рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЪреБрдиреЗрдВ , рдпрд╛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИ, рдореИрдВ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдФрд░ рдЕрдкрдиреА рдЖрджрддреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдмрд┐рдЯрдмрдХреЗрдЯ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рднреА рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдВрддрд┐рдо рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред рдХрд╛рд░реНрдп рд╕рд░рд▓ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╣реИ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реЗрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдореИрдВ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдХреБрдЫ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред


рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЙрдиреНрд╣реЗрдВ 3 рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


  1. hg рд╕рд░реНрд╡ - рдЕрд░реНрдерд╛рддреН Mercurial рд╕реНрд╡рдпрдВ рд╕рд░реНрд╡рд░ рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
  2. HgWeb.cgi рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рд╡рд┐рддрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
  3. рдмрд╛рд╣рд░реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдХреНрд╕рд░ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

HG SERVE


рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ 1 рд╡рд┐рдХрд▓реНрдк рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ HgWeb рдЪрд▓рд╛рддрд╛ рд╣реИ - рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╣рдо hg рд╕реЗрд╡рд╛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ ред рдпрд╣ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХреНрд╕реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЗрд╕ рдпрд╛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╣реБрдВрдЪ рди рджреЗрдВред рдпрджрд┐ рд╣рдореЗрдВ рдирд┐рдЬреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд╛рдЗрдЬреЗрдХреНрд╕ рдХреЛ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░реНрдХрд┐рдЯ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИ ред


рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, winw рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ hg рдХреА рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХреА рдЬрд╛рддреА рд╣реИ , рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рдЖрдкрдХреЛ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдмреИрдЯ рдлрд╛рдЗрд▓ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реЗрд╡рд╛ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╢реЗрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк" рдХреЗ рд╕рд╛рде рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд╕рд╛рде рдЯрд╛рд╕реНрдХ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ - рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХрдо рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡рд┐рдХрд▓реНрдк рд╣реИ: рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд▓реЙрдЧ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдЧреАред


рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ (hgweb.conf / hgrc) рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ:


  • рдЙрдирдХреА рд╡рд┐рд╖рдпрд╡рд╕реНрддреБ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ: рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк [Web]рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ [web], рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
  • рд╕рдорд╛рди рдЪрд┐рд╣реНрди рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдШрд┐рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ push_ssl=false, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ push_ssl = falseред

, Mercurial push , "Hello world", . Nginx :


    client_max_body_size 500M;
    proxy_read_timeout 120s;

, , .



hgweb.conf . ( ), : /.hg/hgrc , , , .


, Mercurial , Nginx. : Mercurial , Nginx . Nginx :


proxy_set_header      REMOTE_USER $remote_user;

:


proxy_set_header      X-Forwarded-User $remote_user;

:( HgWeb, ENV('REMOTE_USER'), тАФ .


, Nginx 2 ( ) hg serve, hgweb.conf. , hgweb.conf ( ) . , . .


HgWeb.cgi


, Python- HgWeb. Mercurial , . , (CGI) , тАФ WSGI FCGI.


Nginx CGI, WSGI WSGI- ( Windows ), FCGI тАФ FastCGI. Python, , Python , Mercurial тАФ 2.7. , 2.7. HgWeb Python Flup, , ( Python 2.7). :


pip install flup==1.0.3.dev-20110405

hgweb.fcgi тАФ ( ) , ( ):


WSGIServer(application, bindAddress=("127.0.0.1",5500)).run()

Nginx:


    location / {
        auth_basic "My Repos";
        auth_basic_user_file passwd;    #   
        include fastcgi.conf;
        fastcgi_split_path_info ^()(.*)$;
        fastcgi_param  SCRIPT_NAME        "";
        fastcgi_param  PATH_INFO          $fastcgi_path_info;
        fastcgi_param  AUTH_USER          $remote_user;
        fastcgi_param  REMOTE_USER        $remote_user;
        fastcgi_pass 127.0.0.1:5500;
    }
    location /static/ {
        root e:/Mercurial/templates;
    }

fastcgi.conf, fastcgi location . PATH_INFO тАФ . url , PATH_INFO.


:


python hgweb.fcgi

!



hg serve, HgWeb . winsw. bat-:


    @echo off
    if "%1"=="start" (goto :start)
:stop
    taskkill /F /IM python-hg.exe /T
    goto :end
:start
    "c:\Python27\python-hg.exe" e:\Mercurial-5.3\hgweb.fcgi
:end

, python.exe python-hg.exe taskkill .


: "Local System" тАФ ! , .



, HgWeb ( hg serve) . : , , Nginx location . :


    location /Base/ {   # Base -  ,     
       include fastcgi.conf;
       fastcgi_split_path_info ^()(.*)$;
       fastcgi_param  SCRIPT_NAME        "";
       fastcgi_param  PATH_INFO          $fastcgi_path_info;
       fastcgi_param  AUTH_USER          "pub";   #      hg ( )
       fastcgi_param  REMOTE_USER        "pub";
       fastcgi_pass 127.0.0.1:5500;
    }

тАФ Base .


, . ( , Python , , :-)

Source: https://habr.com/ru/post/undefined/


All Articles