C, Java рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рдХреНрдпреЛрдВ рд╣реИ (Java рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ)

Git рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдЪрд░реНрдЪрд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реБрдИ рдХрд┐ рдХреИрд╕реЗ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ JGit рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддреА рд╣реИ ред рдЪрд░реНрдЪрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░, рд╕реА рдФрд░ рдЬрд╛рд╡рд╛ рджреЛрдиреЛрдВ рдореЗрдВ рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╢рд╛рдорд┐рд▓ рдереЗред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд╢реЙрди рдУред рдкрд┐рдпрд░реНрд╕, рдЬреЛ рдХрд┐ рдЧреВрдЧрд▓ рдХреЗ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЬреЛ рдЧреНрд░рд╣рдг рдХреЗ рдПрдХ рд╕рдХреНрд░рд┐рдп рд▓реЗрдЦрдХ, рдЧрд┐рдЯ рдХреЗ рд╕рд╣-рд▓реЗрдЦрдХ рдФрд░ рдЬреАрдЬреАрдЯ рдирд╛рдордХ рдПрдХ рдЬрд╛рд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓реЗрдЦрдХ рд╣реИрдВред рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реАрдорд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдХреБрд╢рд▓ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рд╕рд╛рдордирд╛ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕рдмрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╕реА рдХреЛрдб рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рддреБрд▓рдиреАрдп рдХреБрд╢рд▓ рдЬрд╛рд╡рд╛ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрддреНрд░ рдЕрдкреНрд░реИрд▓ 2009 рддрдХ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ, рд╢реЙрди рдХреЗ рдХреБрдЫ рддрд░реНрдХ рдЕрднреА рднреА рдЕрдкрдиреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдирд╣реАрдВ рдЦреЛ рдЪреБрдХреЗ рд╣реИрдВред

рд╕реВрдЪреА: git
рд╡рд┐рд╖рдп: Re: рдХреНрдпреЛрдВ Git рдЗрддрдирд╛ рддреЗрдЬ рд╣реИ (рдерд╛: Re: рдПрд░рд┐рдХ рд╕рд┐рдВрдХ рдХрд╛ рдмреНрд▓реЙрдЧ - git рдкрд░ рдиреЛрдЯреНрд╕,
рд╕реЗ: "рд╢реЙрди рдУред рдкреАрдпрд░реНрд╕" <рднрд╛рд▓рд╛ () рднрд╛рд▓рд╛! org>

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯ рд╕реА рдХреЛрдб рдореЗрдВ рдХрдИ рдЫреЛрдЯреЗ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдПред рдпрд╣рд╛рдВ 5%, 10% рд╡рд╣рд╛рдВ, рдФрд░ рдЕрдЪрд╛рдирдХ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ 60% рддреЗрдЬ рд╣реИрдВред рдирд┐рдХреЛ [рдкрд┐рдЯреНрд░реЗ], рд▓рд┐рдиреБрд╕ [рдЯреЛрд░рд╡рд╛рд▓реНрдбреНрд╕] рдФрд░ рдЬреВрдирд┐рдпреЛ [рд╣реИрдордиреЛ] - рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рднреА рдХреЛ рдкрд┐рдЫрд▓реЗ рддреАрди рд╕реЗ рдЪрд╛рд░ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдЧрд┐рдЯ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реНрдЪ рдХрд┐рдпрд╛, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рдХреБрдЫ рд╣рдж рддрдХ рдорд╢реАрди рдХреЛ рдЫрд┐рдкрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрди рд╕рднреА рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JGit mmap() рдХреА рдХрдореА рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛ NIO MappedByteBuffer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА byte[] рд╕рд░рдгреА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред G рдореЗрдВ C рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдкреНрд░рддрд┐ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдЕрдиреНрдп рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, mmap рд╡рд┐рдзрд┐ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рднреА рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рд╖рд╛рдПрдВ mmap рдкреНрд░рдмрдВрдзрди рдХреЛ "рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП" рдХрдЪрд░реЗ рдХреЗ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреА рд╣реИрдВред

JGit рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдХрдореА рд╕реЗ рднреА рдЧреНрд░рд╕реНрдд рд╣реИред JGit рдореЗрдВ рдХрдИ рдЬрдЧрд╣ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ unsigned int32_t рдпрд╛ unsigned long (рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рдХрд╛ рдорд╢реАрди рд╢рдмреНрдж) рдпрд╛ unsigned char , рд▓реЗрдХрд┐рди рдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЧрд╛рдпрдм рд╣реИрдВред рдПрдХ рдмрд╛рдЗрдЯ рдХреЛ int рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд & 0xFF рдСрдкрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

SHG-1 рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JGit рдПрдХ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рдХреА рдХрдореА рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИред C рдХреЛрдб рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ unsigned char[20] рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдореЗрдВ, byte[20] рдЕрддрд┐рд░рд┐рдХреНрдд 16 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдореЗрдореЛрд░реА рдЦрд░реНрдЪ рд╣реЛрдЧреА, рдФрд░ рдЙрди рддрдХ рдкрд╣реБрдВрдЪ рд▓рдВрдмреА рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдмрд╛рдЗрдЯреНрд╕ рдХрдВрдЯреЗрдирд░ рд╕реЗ рдореЗрдореЛрд░реА рдХреЗ рдПрдХ рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИрдВред рд╣рдо byte[20] рд╕реЗ рдкрд╛рдВрдЪ рдЗрдиреНрдЯрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред

C рдореЗрдВ Git рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрддрд╛ рд╣реИ рдХрд┐ memcpy(a, b, 20) рдСрдкрд░реЗрд╢рди рдПрдХ рдлреБрд▓рд╛рдП рд╣реБрдП рд╡реГрдХреНрд╖ рд╕реЗ рд╕реНрдореГрддрд┐ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд░рдЪрдирд╛ рд╡рд╕реНрддреБ рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╕рдордп рдмреЗрд╣рдж рд╕рд╕реНрддрд╛ рд╣реИред JGit рдХреЛ рдЗрди 20 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдкрд╛рдБрдЪ ints рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд░реА рдЬреБрд░реНрдорд╛рдирд╛ рджреЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рдпреЗ рдкрд╛рдБрдЪ ints рд╕рд╕реНрддреЗ рд╣реЛрддреЗ рд╣реИрдВред

рдЕрдиреНрдп рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдпрд╛ рдЙрдиреНрд╣реЗрдВ 20-рдмрд╛рдЗрдЯ рдмрд╛рдЗрдирд░реА рд╕рд░рдгреА рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЬреБрд░реНрдорд╛рдирд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛-рджреЗрд╢реА рд╕рдВрдЧреНрд░рд╣ (рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд░) рд╣рдорд╛рд░реЗ рд▓рд┐рдП JGit рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рд▓ рдмрди рдЧрдП рд╣реИрдВред рд╣рдордиреЗ java.util.* рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ java.util.* рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд░, рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓рдЧрднрдЧ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЦрд░рд╛рдм рдХрд╛рдо рдХрд░рддреЗ рдереЗред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Map<ObjectId,Object> рдЬреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ ObjectIdSubclassMap рдерд╛ред рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╛рдВрдЧ рдХреА рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рдХрд╛рд░, рдЬрд┐рд╕реЗ рдЖрдк "рдорд╛рди" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдСрдмреНрдЬреЗрдХреНрдЯрдЖрдИрдб рд╕реЗ рдЖрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдпрд╣ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдПрдХ рдХреБрдВрдЬреА рдФрд░ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬрдм HashMap<ObjectId,Object> рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреБрд░рд╛ рд╕рдкрдирд╛ рд╣реЛрддрд╛ рд╣реИред (рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ ObjectId SHG-1 рдХреЗ рд▓рд┐рдП JGit рдХрд╛ unsigned char[20] )ред

рдХреБрдЫ рд╣реА рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рдкреИрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╣реИрд╢рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП, LongMap , LongMap HashMap<Long,Object> рдХрд╛ рддреЗрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдмрд╛рдд, рдПрдХ long (рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдкреВрд░реНрдгрд╛рдВрдХ) рдХреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рд▓рд╛рдЧрдд рдорд╛рдирдХ рд╣реИрд╢рдкреЙрдк рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡рд╕реНрддреБ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдзрд┐рдХ рдереАред

рдФрд░ рдЕрдм JGit рдЕрднреА рднреА рдзреАрдореА рд╣реИ рдЬрдм рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдз рдпрд╛ рдкреЗрдбрд╝ рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдВрдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╛ рдЬрдм inflate() рдЬрд╛рддрд╛ inflate() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ C рдореЗрдВ git рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ byte[] рдЖрдо рддреМрд░ рдкрд░, рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдФрд░ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, JGit rev-list --objects тАУall рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдмрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ Git рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдЬреИрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рдЧрднрдЧ 270 рдПрдордмреА рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП index-pack рднреА рд▓рдЧрднрдЧ рджреЛ рдмрд╛рд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддрд╛ рд╣реИред

JGit рдХреЗ рджреЛрдиреЛрдВ рднрд╛рдЧ рдЙрддрдиреЗ рд╣реА рдЕрдЪреНрдЫреЗ рд╣реИрдВ рдЬрд┐рддрдирд╛ рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ JIT рдХреА рджрдпрд╛ рдкрд░ рд╣реИрдВ, рдФрд░ JIT рдореЗрдВ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рд╣рдорд╛рд░реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ (рдпрд╛ рд╕реБрдзрд╛рд░) рд╣реЛ рд╕рдХрддреА рд╣реИред G рдореЗрдВ C рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд╣рд╛рдВ Linus Torvalds рдХреЛрдб рдХреЗ рдкреВрд░реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рд╣рд╛рдБ, рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдореЗрдВ Git рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рддрдХ G рдореЗрдВ C. Git рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдпрд╛ рд╕рдЦреНрдд рдореЗрдореЛрд░реА рдЦрдкрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рдХрд╛ рд╕рд╛рд░ рдЖрдкрдХреА рд▓рд╛рдЧрдд рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, JGit рдХрд╛рдлреА рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ; рд╣рдорд╛рд░реЗ рд▓рд┐рдП Google рдХреЗ рдЕрдВрджрд░ git рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрд╡рд╛рд╕ рд╣реИред

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

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


All Articles