рдЬреАрдЖрдИрдЯреА рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рди

рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдиреЗ рд╕реЗ, рд╕рдорд╕реНрдпрд╛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдпрд╣ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛ рдХреИрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЧрд┐рдЯ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рднрдВрдбрд╛рд░ рд╣реЛрддрд╛ рд╣реИред Git рдореЗрдВ 4 рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ:
рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕рдХреЗ "рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╛рдо" - 40 рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЕрдХреНрд╖рд░реЛрдВ (рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рдХрд╛ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ SHA1 рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬреАрдЖрдИрдЯреА рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрдорд┐рдЯ рдХреЗ "рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╛рдо" рдпрд╛ рдХреЗрд╡рд▓ рдХрдорд┐рдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд╡рд░реНрддрдорд╛рди рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
git log --pretty=oneline -n1 

рдЕрдм рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм --version рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд░рдирд╛ред

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╣реБрдХ рдХреА рдорджрдж рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдХрд╕реНрдЯрдо рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЧрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреАред рд╡рд┐рднрд┐рдиреНрди рд╣реБрдХ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкреЛрд╕реНрдЯ-рдХрдорд┐рдЯ (рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрд┐рдЯ рдХрдореЗрдЯреА рдХреЗ рдмрд╛рдж рдХреЙрд▓), рдкреЛрд╕реНрдЯ-рдЪреЗрдХрдЖрдЙрдЯ (рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЧрд┐рдЯ рдЪреЗрдХрдЖрдЙрдЯ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдкреЛрд╕реНрдЯ-рдорд░реНрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЧреЗрдЯрд┐рдЯ рдорд░реНрдЬ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЧрд┐рдЯ рдкреБрд▓ рдХреЗ рджреМрд░рд╛рди рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) ред рд╣реБрдХ $ GIT_DIR / рд╣реБрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рдирд┐рд╖реНрдкрд╛рджрдирдпреЛрдЧреНрдп рд╣реИрдВред

рд╣реБрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдпрд╣ git_hooks рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдФрд░ $ GIT_DIR / рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдорд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд▓реА 3 рдкреЛрд╕реНрдЯ-рдХрдорд┐рдЯ, рдкреЛрд╕реНрдЯ-рдЪреЗрдХрдЖрдЙрдЯ, рдкреЛрд╕реНрдЯ-рдорд░реНрдЬ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо C / C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдорд┐рдЯ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдпреЗ рдлрд╛рдЗрд▓реЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА:

 #!/bin/sh # post-commit #       file="git_commit.h" file_def=`echo $file|tr . _` echo "#ifndef $file_def" > $file echo "#define $file_def" >> $file echo "static const char *git_commit_str = \""`git log --pretty=oneline -n1`"\";" >> $file echo "#endif" >> $file #        echo "--- Git commit is written to $file ---" echo "--- !!! NOW PLEASE RECOMPILE YOUR PROJECT TO TAKE EFFECT !!! ---" 

рдЕрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрдорд┐рдЯ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧрд╛ред
 #include git_commit.h тАж printf("Git commit: %s\n", git_commit_str); 

рд╣рд░ рдмрд╛рд░ git рдХрдорд┐рдЯ, git checkout, git рдкреБрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рджреВрд░рд╕реНрде рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ), git_commit.h рдлрд╝рд╛рдЗрд▓ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ git checkout COMMIT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рдЖрдк github.com/USER/PROJECT/tree/COMMIT рдкрд░ github рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реИрд╕реЗ, рдПрд╕рд╡реАрдПрди рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрд╕рд╡реАрдПрди рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╢реЛрдзрди рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ svnversion рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣реБрдХ рдХреЛ рдкреЛрд╕реНрдЯ-рдХрдорд┐рдЯ рдФрд░ рдкреЛрд╕реНрдЯ-рд░рд┐рд╡рдкреНрд░реЙрдк-рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛рдУрдВ рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles