ANT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SVN рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛

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

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕

15,000 рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ 5,000 рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ SVN рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рдЧрднрдЧ 10 рд╕рд╛рд▓ рдкреБрд░рд╛рдиреА рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдпреЛрдЧреНрдпрддрд╛рдУрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдХрдИ рдкреАрдврд╝рд┐рдпреЛрдВ рдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдпрд╛ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ "рдмрд╣"ред рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдирдХреЛрдВ рдФрд░ рдкрд░рддреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдирдХреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реБрдЖ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рдЪрдХреНрд░реАрдп рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдереАрдВред рдирддреАрдЬрддрди, рдХрдИ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдПрд╕рд╡реАрдПрди рдореЗрдВ рдПрдХ рдбрдВрдк рдХрд╛ рдЧрдарди рд╣реБрдЖ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд▓ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд░реНрдордирд╛рдХ рддрд░реАрдХреЗ рд╕реЗред

рдХрд╛рд░реНрдп

рдПрдХ рдПрдХрд▓ рд╕рдВрдЧреНрд░рд╣рдг рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЛрдб рд▓рд╛рдПрдВред рдЗрд╕реА рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХреЗрдВ рдирд╣реАрдВред

рдЬрдЯрд┐рд▓рддрд╛

SVN рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдлрд╛рдЗрд▓ рдпрд╛ рдлреЛрд▓реНрдбрд░ рд╕реЗ рд╕реЗрд╡рд┐рдВрдЧ рд╣рд┐рд╕реНрдЯреНрд░реА рдХреЙрдкреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЬрдмрдХрд┐ рдЖрдк 15,000 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдирдП рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рджреБрд╖реНрдЪрдХреНрд░ред
рд╕реНрд╡рдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реНрдХреНрд░реАрдкреНрдЯрд┐рдХ, рдЬреЛ рд╕рдордп! - рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рддрдмреНрджреАрд▓ рдХрд░рддрд╛ рд╣реИред

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

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


рд╕реНрд░реЛрдд рдХреЛрдб (рдХрдВрдкрдиреА рдФрд░ рдЙрддреНрдкрд╛рдж рдХреЗ рдирд╛рдо рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдлреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд), Google рдХреЛрдб рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред


рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЖрдпрд╛ред

рдореИрдВрдиреЗ рдПрдХ рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ:
  1. рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ
  2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдврд╛рдВрдЪреЗ рд╕реЗ рдирдП рддрдХ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ
  3. рдПрдХ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдбрд┐рдмрдЧ рдХрд░реЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ рдЖрджрд┐ред - рдбрд┐рдмрдЧрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЙрдкреА рдСрдкрд░реЗрд╢рдВрд╕ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдФрд░ рджрд╕рд┐рдпреЛрдВ (рдпрджрд┐ рд╕реИрдХрдбрд╝реЛрдВ рдирд╣реАрдВ) рд▓реЗ рд╕рдХрддреА рд╣реИ
  4. рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ рдЬреЛ svn рдХреЙрдкреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХрд░рддреА рд╣реИ
  5. svn рдореЗрдВ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдбрд┐рдмрдЧ
  6. рдШрдВрдЯреЗ рдПрдХреНрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╕рднреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдирдИ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред


рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдорд╛рдВрдб рд╢рд╛рдорд┐рд▓ рдереЗ:
<mkdir dir="@{to}"/> <copy todir="@{to}" overwrite="false"> <fileset dir="@{from}"> <include name="@{include}"/> <include name="@{include}"/> <exclude name="@{include}"/> </fileset> </copy> 


рдпрд╣ рдмрд╣реБрдд рд▓рдВрдмрд╛, рдЦрд░рд╛рдм рдкрдардиреАрдп рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдХрд▓рд╛ред
рдЙрд╕рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рдерд╛ - рдЙрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ svn рдХреЙрдкреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрдиреА рдереА ... рдФрд░ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдХрд╖реНрдЯрдкреНрд░рдж рдерд╛ред
рдЧрд╣рди рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ, рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдореЗрдВ рдореИрдкрд┐рдВрдЧ рдбрд╛рд▓реЗрдВ рдФрд░ рдХрдиреЗрдХреНрдЯреЗрдб рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫрд┐рдкрд╛рдПрдВред рд▓реЗрдХрд┐рди рдпрд╣ ANT рдореЗрдВ рдХреИрд╕реЗ рдХрд░реЗрдВ? ANT рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛!

Macrodef рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, ant.macros рдореЗрдВ рдПрдХ рдирдП рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

  <macrodef name="copy_by_pattern"> <attribute name="from"/> <attribute name="to"/> <attribute name="include"/> <sequential> <echo message="copy from dir @{from} to dir @{to} by pattern @{include}"/> <mkdir dir="@{to}"/> <copy todir="@{to}" overwrite="false"> <fileset dir="@{from}"> <include name="@{include}"/> </fileset> </copy> </sequential> </macrodef> 


рдЯрд╛рд╕реНрдХ copy_by_pattern рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдорд╛рд╕реНрдХ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред

рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

  <copy_by_pattern from="${dir.input.base}/module1" to="${dir.output.base}" include="**"/> <copy_by_pattern from="${dir.input.base}/module2" to="${dir.output.base}" include="**"/> <copy_by_pattern from="${dir.input.base}/module3" to="${dir.output.base}" include="**"/> 


рд╣рдо рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ рдлрд┐рд░ рд╣рдо svn.macros рдореЗрдВ svn рдХреЙрдкреА рдХреЗ рд▓рд┐рдП copy_by_pattern рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

  <macrodef name="copy_by_pattern"> <attribute name="from"/> <attribute name="to"/> <attribute name="include"/> <sequential> <fileset id="localfs" dir="@{from}"> <include name="@{include}"/> </fileset> <local name="out.script"/> <pathconvert property="out.script" refid="localfs" pathsep="${line.separator}"> <chainedmapper> <identitymapper/> <regexpmapper from="@{from}/(.*)" to="${cli.command} @{from}/\1 @{to}/\1" handledirsep="yes"/> </chainedmapper> </pathconvert> <echo file="${script.filename}" message="${out.script}${line.separator}" append="true"/> </sequential> </macrodef> 


рдпрд╣ рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ (ANT 1.8 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ) рдХреЛ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ ред рдкрд╛рдердХреЙрдирд╡рд░реНрдЯ рдФрд░ рд░реЗрдЧреЗрдХреНрд╕ рд╢реЗрдордкреЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ ред рддрдм рдпрд╣ рдлрд╝рд╛рдЗрд▓ $ {script.filename} рдореЗрдВ svn рдХреЙрдкреА рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ

рдиреЛрдЯ: рд╕рдВрд╕реНрдХрд░рдг 1.8 рд╕реЗ рдкрд╣рд▓реЗ ANT рдореЗрдВ рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдирд╣реАрдВ рдереЗред рдПрдХ рдЪрд░ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред

рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд svn рдХреЙрдкреА рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

svn copy --parents D:\path_old\app.xml D:\path_new\app.xml
svn copy --parents D:\path_old\Cls.java D:\path_new\Cls.java
svn copy --parents D:\path_old\page.jsp D:\path_new\page.jsp
svn copy --parents D:\path_old\js.js D:\path_new\js.js

- theparents рдХреБрдВрдЬреА рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдмрдирд╛рдПрдЧреА

Svn рдХреЙрдкреА рдХрдорд╛рдВрдб рдиреЛрдЯ

рдЙрд╕рдХреЗ рдкрд╛рд╕ 4 рдХреЙрдкреА рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
WC -> WC: copy and schedule for addition (with history)
WC -> URL: immediately commit a copy of WC to URL
URL -> WC: check out URL into WC, schedule for addition
URL -> URL: complete server-side copy; used to branch and tag


рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк WC -> WC: рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХреЛрдИ рддреБрд░рдВрдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЖ рдЬрд╛рддрд╛ рд╣реИред 15,000 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлреЗрд░рдмрджрд▓ рдХрд░рдиреЗ рд╕реЗ 15,000 рдХрдорд┐рдЯ рдмрдиреЗрдВрдЧреЗред WC -> WC рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рдПрдХ рд▓рдВрдмрд┐рдд рдкреНрд░рддрд┐рдмрджреНрдз рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

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

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


All Articles