рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг

рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдИ рдмрд╛рд░ рдЬреАрдердм рдкрд░ рдЪрд▓рддреЗ рд╣реБрдП рдореИрдВрдиреЗ "v2.3.4" рдЬреИрд╕реЗ рдЯреИрдЧ рджреЗрдЦреЗ рдФрд░ "рдмрдореНрдк рд╕рдВрд╕реНрдХрд░рдг" рдЬреИрд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдЬрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХрд╣реАрдВ рд▓рд┐рдм / рд╡рд░реНрдЬрди рдореЗрдВ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рдерд╛ - рдХреБрдЫ рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рдерд╛ред

рдФрд░ рдЬрдм рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рдЖрдпрд╛, рддреЛ рдореИрдВрдиреЗ рдХрд╣рд╛: тАЬрдирд╣реАрдВ! рдореИрдВ рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рд╣рд╛рде рд╕реЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд░рдиреЗ рджреЗрдВ! "

рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ:


  1. рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рдЯреНрд░рд┐рдкрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ: major.minor.patch рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рддрд░реНрдХрд╕рдВрдЧрдд рдиреАрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ;
  2. рдкреНрд░рддреНрдпреЗрдХ рдирдП рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╕рдордп, рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрдорд┐рдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдлреЙрд░реНрдо рд╡реА <рдореЗрдЬрд░> <рдорд╛рдЗрдирд░> рдХрд╛ рдЯреИрдЧ рдмрдирд╛рддрд╛ рд╣реВрдВ;
  3. Git рдореБрдЭреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдЯреИрдЧ (рдЗрд╕ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдиреЗ рд╡рд╛рд▓реЗ рдирдВрдмрд░ рджреЗрдЧрд╛ред


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


Git рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдХрдорд╛рдВрдб рд╣реИрдВ, рд╣рдо рджреЛ рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдВрдЧреЗ:
  1. git describe - рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдз рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╕рдмрд╕реЗ рдирд╡реАрдирддрдо рдЯреИрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ;
  2. git show - рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдкреНрд░рддрд┐рдмрджреНрдз рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦреЗрдВрдЧреЗ)ред


рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░, рдореИрдВрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди / рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдореЗрд░реА рд░реЗрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХрд╛ version.rb рдлрд╝рд╛рдЗрд▓ рд░рдЦрд╛:

 module AppName module Version Described = (IO::popen('git describe --long') { |gs| gs.read }).strip Number = Described.gsub('-', '.').gsub(/^v/, '').split('.')[0..-2].join('.') Date = Date.strptime( IO::popen('git show -s --format="%ct"') { |gs| gs.read } , "%s") Revision = (IO::popen('git show -s --format="%H"') { |gs| gs.read }).strip end end 


рдпрд╣рд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИ:

git describe --long рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: v0.8-3-g387f83f , рдЬрд╣рд╛рдБ

рдпрд╣ рдкрдВрдХреНрддрд┐ Described.gsub('-', '.').gsub(/^v/, '').split('.')[0..-2].join('.') рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ Described.gsub('-', '.').gsub(/^v/, '').split('.')[0..-2].join('.') 0.8.3

git show -s --format="%ct" рд╣рдореЗрдВ рд╡рд╣ рджрд┐рдирд╛рдВрдХ рдорд┐рд▓рддреА рд╣реИ, рдЬрдм рд╡рд░реНрддрдорд╛рди рдХрдореЗрдВрдЯ рдпреВрдирд┐рдХреНрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдФрд░ git show -s --format="%H" рд╣рдореЗрдВ рдкреВрд░реНрдг рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрд╢ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рдЕрдм, рдЬрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд░рд┐рд▓реАрдЬ рдХреА рддрд╛рд░реАрдЦ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рдФрд░ рдЕрдм, рдкреГрд╖реНрда рдкрд░ рдХрд╣реАрдВ рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 " AppName.  #{AppName::Version::Number}  #{I18n.l AppName::Version::Date, :format => :long} ." 

рдФрд░ рдорд┐рд▓рддрд╛ рд╣реИ
 " AppName.  0.8.3  27  2012 ." 


рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖


рдЖрдХрд░реНрд╖рдг рдЖрддреЗ рд╣реИрдВ

рд╡рд┐рдкрдХреНрд╖


рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?


рдЦреИрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, git рд╡рд░реНрдгрди рдФрд░ git рдореИрдиреБрдЕрд▓ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, "<CVS> рдСрдЯреЛрд╡реЛрд╡рд░реНрдбрд┐рдВрдЧ" (рдЬрд╣рд╛рдВ <CVS> рдЖрдкрдХреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд╛рдо рд╣реИ) рдкрд░ рдПрдХ рдЦреЛрдЬ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЕрд╡рд╕рд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд▓рд┐рдП рд╡реНрдпрдВрдЬрдиреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред

рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреНрд░рдо рдореЗрдВ рдЕрдЪреНрдЫрд╛ рднрд╛рдЧреНрдп (рдХрдо рд╕реЗ рдХрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ)ред

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


All Articles