mergiraf - AST-oriented เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบฅเบงเบกเบชเบฒเบกเบ—เบฒเบ‡เปƒเบ™ Git

เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ mergiraf 0.4 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบปเบงเบ‚เบฑเบšเบ‚เบตเปˆเบชเปเบฒเบฅเบฑเบš Git เบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบกเบเบฑเบ™เบชเบฒเบกเบ—เบฒเบ‡. Mergiraf เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบเบฒเบ™เบœเบฐเบชเบปเบกเบœเบฐเบชเบฒเบ™เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบฎเบนเบšเปเบšเบšเป„เบŸเบฅเปŒ. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป‚เบ—เบซเบฒ mergiraf เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Git เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบซเบผเบทเบ›เปˆเบฝเบ™เปเบ—เบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ merge เปƒเบ™ Git เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™ merge, revert, rebase เปเบฅเบฐ cherry-pick. เบฅเบฐเบซเบฑเบ”เบ–เบทเบเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” GPLv3. เบฎเบธเปˆเบ™เปƒเบซเบกเปˆเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ Python, TOML, Scala เปเบฅเบฐ Typescript, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบเป‰เป„เบ‚เป‚เบ”เบเปƒเบŠเป‰ mergiraf:

เบŠเบญเบšเปเบงเป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบซเบผเบฑเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเบชเบธเบ”. เบฅเบฐเบšเบปเบšเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบกเบตเบชเบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบปเปˆเบงเป„เบ› - เบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™ COMPLEX - เปเบฅเบฐเบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบฅเบฐเบšเบปเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบฒเบกเป€เบงเบฅเบฒ, เปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบเบฒเบ™เบเบฒเบเบžเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ—เบปเบ”เบชเบญเบšเบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เปƒเบ™เปเบ•เปˆเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™. เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบชเบดเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ”เบตเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™. เบเบฒเบ™เบงเบดเบงเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเบŠเบตเป‰ เบ™เบณ, เบšเปˆเบญเบ™เบ—เบตเปˆเบฎเบฒเบเปเบกเปˆเบ™เบŠเบธเบ” เปœเป‰เบฒ เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเปเบฅเบฐเปเบ•เปˆเบฅเบฐเบ‚เปเป‰ - เบเบปเบเป€เบงเบฑเป‰เบ™เบฎเบฒเบ - เปเบกเปˆเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™ เบ™เบณ เปƒเบŠเป‰เบเบฒเบ™เบเบฒเบเบžเบฑเบ™เบเบฑเบšเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบกเบฑเบ™.

เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™, เปเบ•เปˆเบฅเบฐ node เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบฎเบธเปˆเบ™", เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบฐเป€เบžเบฒเบฐเปเบฅเบฐเบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เป‰เบฒเบ™เบเบฒเบ™. เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ”เป†เบ•เปเปˆเบŠเบธเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบžเบฑเบ™, เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบญเบšเปƒเบ™เบเบฒเบŸ acyclic เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™; เบžเบงเบเบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบชเบฐเบ—เป‰เบญเบ™เป‚เบ”เบเบเบปเบ‡เป€เบ–เบดเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบฅเบฐเบšเบปเบšเบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเป€เบฎเบฑเบ”เบงเบฝเบ, เปเบ•เปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบงเบดเบ—เบตเบ—เบตเปˆเบ•เบปเบงเปเบ—เบ™เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐเบฎเบฑเบšเบฎเบนเป‰เป€เบ–เบดเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เป€เบžเบทเปˆเบญเปเบ›เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเป‰เบงเบ™เปเบ‚เบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ” * เบžเบฝเบ‡เบžเป * เบ•เปˆเปเบฒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบชเบฐเปเบ”เบ‡เบญเบญเบเปเบฅเบฐเบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ. เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง, เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เป‚เบ”เบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡.

เป€เบžเบทเปˆเบญเบ„เปˆเบญเบเป†เป€เบญเบปเบฒเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฑเบ”เบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเป„เบ”เป‰เบกเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเบฐเปเบ”เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบ–เปˆเบฒเบเบฎเบนเบšเปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบžเบฒเบšเบ–เปˆเบฒเบเบชเบฐเปเบ”เบ‡เป€เบ–เบดเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ—เบตเปˆเบกเบตเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒเบ—เบฑเบ‡เปเบปเบ”, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเปเบ”เบ‡เป€เบ–เบดเบ‡เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบฒเบšเบ–เปˆเบฒเบ. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบฎเบนเบšเบ–เปˆเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบŠเบธเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เบฝเบงเปƒเบซเป‰เบเบฑเบšเบžเปเปˆเปเบกเปˆเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฎเบนเบšเบ–เปˆเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบเบทเบญเบšเบˆเบฐเบ•เบดเบ”เบชเบฐเบซเบผเบฒเบเบงเปˆเบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เบžเบงเบเบกเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบกเบฑเบเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปเบฅเบเบ›เปˆเบฝเบ™เบเบฑเบ™เป„เบ”เป‰.

เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบกเบตเบžเบฒเบšเบ–เปˆเบฒเบเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบซเบผเบฒเบ - merging commits . เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบฑเบเบˆเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™. เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบงเบตเบŠเบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเป€เบŠเบฑเปˆเบ™ Git เบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบžเบงเบเป€เบ‚เบปเบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบฎเบนเบšเบžเบฒเบšเป€เบ›เบฑเบ™เบเบฒเบŸ acyclic เบ—เบดเบ”เบ—เบฒเบ‡, เบญเบฐเบ—เบดเบšเบฒเบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบกเบตเบ„เปเบฒเป€เบซเบฑเบ™, เปเบฅเบฐเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเปƒเบซเบกเปˆเบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เบšเบฑเบ™เบซเบฒเปเบฅเบฐเบเบฒเบ™เบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเป€เบŠเบฑเปˆเบ™: "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบ™เบตเป‰ (เบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เบปเบงเปเบ›) เปเบ™เบฐเบ™เปเบฒ?", "เบ›เบฐเบกเบฒเบ™เบชเปˆเบงเบ™เบฎเป‰เบญเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบ•เปเปˆเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™. ?โ€, โ€œเปƒเบœเบ–เบทเบเปเบฎเบฑเบเป‚เบ”เบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” bookmark เปเบฅเบฐเป€เบงเบฅเบฒเปƒเบ”?โ€, โ€œเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบ”เบฑเบšเบ•เปเปˆเบฒเบญเบฑเบ™เปƒเบ”เบ—เบณเบฅเบฒเบเปœเป‰เบฒเบ—เบตเปˆเบ™เบตเป‰ (เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบ„เบงเบ™เบกเบต, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡!?)โ€

เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเป€เบงเบตเบŠเบฑเบ™เป€เบชเบตเบกเบ™เบตเป‰เบเบฑเบšเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบชเบฒเบ‚เบฒ, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบ›เบฑเบ™เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ—เบตเปˆเบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™เบ‚เบญเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบชเบฒเบ‚เบฒเปเบกเปˆเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐ, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบชเบฒเบ‚เบฒเบซเบผเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบœเบนเป‰เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบชเบฒเบ‚เบฒ (เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡เปเบฅเบฐเบขเบนเปˆเบ—เบปเปˆเบงเบ—เบธเบเปเบซเปˆเบ‡), เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบซเบผเบฒเบเบชเบฒเบ‚เบฒเบ—เบตเปˆเบ‚เบฑเบ”เปเบเป‰เบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบเบฒเบ™เป€เบ•เบตเบšเป‚เบ•เบซเบผเบทเบ„เบธเบ™เบ™เบฐเบžเบฒเบš. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบ‚เบญเบ‡เบ„เบปเบ™เบญเบทเปˆเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบžเบดเบกเบ„เบทเบ™เปƒเบซเบกเปˆเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ—เบธเบเบ„เบฑเป‰เบ‡.

เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เบชเบฒเบ‚เบฒเปเบกเปˆเบšเบปเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป€เบžเบทเปˆเบญเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™ "เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™", เบˆเบฒเบเบชเบฒเบ‚เบฒเบ‚เป‰เบฒเบ‡เปƒเบ”เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐ, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด (เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบธเบเป†เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ) synchronized เบเบฑเบšเบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบ•เป, เปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฎเบธเปˆเบ™เบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบฅเบฐ. เบžเป‰เบญเบกเบเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบทเปˆเบ™เป†เป„เบงเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบˆเบฐเป„เบงเป„เบ”เป‰.

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฐเบเบฒเบเบฒเบกเบชเบปเบกเบ—เบปเบšเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡ snapshots เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบŠเบญเบเบซเบฒเบšเบฑเบ™เบžเบฐเบšเบธเบฅเบธเบ”เบ—เบปเปˆเบงเป„เบ›, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบชเป‰เบฒเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเป€เบ—เบดเบ‡เบ‚เบญเบ‡เบญเบทเปˆเบ™, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ rebase, เบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเปเบกเปˆเบ™เป€เบเบทเบญเบšเบ„เป‰เบฒเบเบ„เบท rebase, เบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ. graph เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบ›เบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบšเปเปˆเบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเบ—เบตเปˆเบˆเบฐ manipulate, เบชเบฐเบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ–เบดเป‰เบกเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡ rebases) เบšเบฑเบ™เบซเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบฅเบฐเบšเบปเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก (VCS) เปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เบฅเบงเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเปเบเบเป„เบŸเบฅเปŒเบญเบญเบเป€เบ›เบฑเบ™เปเบ•เปˆเบฅเบฐเบชเบฒเบ, เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเปˆเปเบ•เปˆเบฅเบฐเบชเบฒเบเป€เบ›เบฑเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปเบฅเบฐเป„เบŸเบฅเปŒเป€เบ›เบฑเบ™เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ™เปเบฒเปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป€เบžเบทเปˆเบญเบฅเบงเบกเบžเบงเบเบกเบฑเบ™เบกเบฒเบˆเบฒเบ bioinformatics.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เป‚เบ”เบเปเบ–เบงเบ•เปเปˆเปเบ–เบงเบ™เบตเป‰เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเป€เบ™เบทเป‰เบญเบซเบฒเบ‚เบญเบ‡เบกเบฑเบ™. เบ›เบฐเป‚เบซเบเบ”เบžเบฝเบ‡เปเบ•เปˆเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ—เบปเปˆเบงเป„เบ›. เบ„เบงเบฒเบกเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡, เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เบเบฒเบ™เป€เบˆเบฑเบšเบซเบปเบงเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบถเบเบชเบฒเบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบชเบญเบ‡เบชเบฐเบšเบฑเบšเบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเป€เบชเบฑเป‰เบ™เป‚เบ”เบเป€เบชเบฑเป‰เบ™เป€เบ›เบฑเบ™ "เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡" เบซเบผเบท "เบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡", เปเบ•เปˆเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบฅเบงเบกเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปเบฅเบฐเปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เปƒเบ”เป†. เบšเบฑเบ™เบซเบฒเบ•เปˆเบฒเบ‡เป†เบเบฒเบเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบชเบฑเป‰เบ™เบ•เปเปˆเปเบ–เบงเบฅเบฐเบšเบธเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เป€เบŠเบดเปˆเบ‡เบกเบฑเบเบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบฅเบงเบกเบ—เบฑเบ‡เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเป†เบ™เป‰เบญเบเป†เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบฅเบฐเบซเบฑเบ”. เบ–เป‰เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เปเปˆเป„เบ›เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบเบฑเบ™เบฎเป‰เบฒเบเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™. เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบซเบ™เป‰เบฒเบขเป‰เบฒเบ™, เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป€เบชเบฑเป‰เบ™เบ•เปเปˆเป€เบชเบฑเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฐเบเบฒเบเบฒเบกเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™. เบงเบดเบ—เบตเบซเบ™เบถเปˆเบ‡เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบšเบฑเบ™เบซเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เบ”เป‰เบงเบเป€เบ„เบทเปˆเบญเบ‡เบกเบท canonicalization เป€เบŠเบฑเปˆเบ™เบชเบตเบ”เปเบฒ.

เปเบ™เปˆเบ™เบญเบ™, เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ‚เบตเป‰เบฎเป‰เบฒเบ (เปเบฅเบฐเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบงเบดเบ—เบตเป€เบชเบฑเป‰เบ™เบ•เปเปˆเป€เบชเบฑเป‰เบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™ heuristic, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปเบ•เบเบซเบฑเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบ™เบถเปˆเบ‡เบ›เปˆเบฝเบ™เบŠเบทเปˆเบ•เบปเบงเปเบ›, เปเบฅเบฐเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบขเบนเปˆเบ—เบตเปˆ. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ™เบฑเป‰เบ™, เบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡เบˆเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เบฅเบงเบก / rebasing เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เปเบ•เปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ) - เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเปเบšเบšเบžเบฒเบเปƒเบ™เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเปƒเบ™เบ‚เบปเบ‡เป€เบ‚เบ”เบ™เบตเป‰เป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เป„เบ›เบ›เบฐเบกเบฒเบ™ 30 เบ›เบต, เปเบฅเบฐเป„เบ”เป‰เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบเบฒเบ™เบ„เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบซเบผเบฒเบ, เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบซเบฑเบ™เป€เบ›เบฑเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบˆเบปเบ™เบเปˆเบงเบฒเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰. เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เบŠเบญเบšเปเบงเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบ•เบปเป‰เบ™เบ›เบต 2010, เปเบฅเบฐเป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบžเบฒเบชเบฒ Java เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบŸเบฃเบตเบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, GumTree, เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ—เบตเปˆเบกเบตเบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบฒเบ‡เบงเบดเบŠเบฒเบเบฒเบ™, เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เปƒเบ™ Java, เบกเบตเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆ predates treeitter, เปเบฅเบฐเบกเบต backends เบ—เบฑเบ‡เบญเบตเบ‡เปƒเบชเปˆ treeitter เปเบฅเบฐเบญเบตเบ‡เปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบญเบทเปˆเบ™เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบซเบผเปˆเบ‡. เบฅเบฐเบซเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบปเบงเปเบ—เบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™. เบฅเบฐเบšเบปเบšเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบžเบฝเบ‡เปเบ•เปˆ (เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเป€เบซเบ”เบเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบก; เบเบฑเบ‡เบกเบต API เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เป„เบ”เป‰เบ‡เปˆเบฒเบเบˆเบฒเบเบžเบฒเบชเบฒเปƒเบ”เป†เบ—เบตเปˆเบกเบตเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบฑเบš Java) เปเบฅเบฐเป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบกเบ•เบปเบงเบ›เปˆเบฝเบ™เปเบ›เบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบกเบฑเบ™, เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡ (เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบงเปˆเบฒเบเบฒเบ™เป‚เบซเบผเบ” diffs เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบœเปˆเบฒเบ™ API).

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบญเปˆเบญเบ™เบเบงเปˆเบฒเปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฒเบเบ‚เบญเบ‡ difftastic เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Rust, เบญเบตเบ‡เปƒเบชเปˆ treeitter, เปเบฅเบฐเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเปƒเบ™ console. เบฅเบฐเบšเบปเบšเบ™เบตเป‰เบเบฑเบ‡เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบฅเบฐเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบšเปเปˆเป„เบ”เป‰เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบตเปˆเบˆเบฐเบฅเบงเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบทเบ™เปเบฒเปƒเบŠเป‰ patches.

เป‚เบ„เบ‡เบเบฒเบ™ mergiraf เป„เบ”เป‰เบ›เบฐเบเบปเบ”เบ•เบปเบงเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เปเบฅเบฐเบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰, เบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบ™เปƒเบ™ Rust (21 MiB!), เปเบกเปˆเบ™เบเบฑเบ‡เบญเบตเบ‡เปƒเบชเปˆ treeitter, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเป„เบงเบเบฒเบเบญเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเป‰เบญเบ™เบงเปˆเบฒ LLVM เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ. เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบ„เบนเปˆเปเบ‚เปˆเบ‡เบ‚เบญเบ‡เบ•เบปเบ™, mergiraf เบชเบฐเบซเบ™เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบเบฒเบ™เบœเบฐเบชเบปเบกเบœเบฐเบชเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™ hood, mergiraf เปƒเบŠเป‰เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ algorithm เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ GumTree เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ patches, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ algorithm เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ spork, เบ”เบฑเบ”เปเบ›เบ‡เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ treeitter.

Serialization เบ‚เบญเบ‡ patches เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰เบ•เปเปˆเบกเบฒ, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” (เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบฒเบ™เปเบเบเบšเบฑเบ™เบ—เบถเบเป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบ GumTree). เบญเบตเบเบงเบดเบ—เบตเบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบšเปเปˆเปเบกเปˆเบ™เบœเปˆเบฒเบ™ patches, เปเบ•เปˆเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ refactoring เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ LSP, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเบเบงเบ”เบžเบปเบšเบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡เปƒเบ™เบฅเบฐเบ”เบฑเบšเป‚เบ„เบ‡เบเบฒเบ™. Visualization เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฑเบ”เปเบเป‰เบ‡.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบขเบนเปˆเบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบ: common ancestor "base.py" (เปเบ–เบšเบซเบเปเป‰เปœเป‰เบฒ, เปเบ–เบงเบžเบดเป€เบชเบ”เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™) foo = 1 def main(): print(foo + 2 + 3) "a.py" (เปเบ–เบšเบเบฑเบ‡เบซเบเปเป‰เปœเป‰เบฒ, 2 เปเบ–เบงเป€เบžเบตเปˆเบกเป€เบ•เบตเบก เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” icecream เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเบก debug, เบซเป‰เบญเบ‡เบฎเบฝเบ™ "baz" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก: เบˆเบฒเบ icecream เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ ic foo = 1 def main(): ic(foo + 2. + 3) class baz: def __init__(self): """baz""" "b.py" (เบ•เบปเบงเปเบ› "foo" เบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบ›เบฑเบ™ "bar", เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ”เป‰เบงเบ "black" เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰ indentation เบเบฑเบš spaces เปเบฅเบฐ extra เป€เบชเบฑเป‰เบ™เบ–เบทเบเบ•เบฑเบ”): bar = 1 def main(): print(bar + 2 + 3) Call ./mergiaf merge ./base.py ./a.py ./b.py -x a.py -y b.py -s base.py -o ./res.py เปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฒเบ icecream import ic bar = 1 def main(): ic(bar + 2 + 3) class baz: def __init__ (เบ•เบปเบ™เป€เบญเบ‡): """"baz""" (เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบดเบก debug, เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” "icecream" เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เบ•เบปเบงเปเบ› "foo" เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบ›เบฑเบ™ "bar", เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ”เป‰เบงเบ "เบชเบตเบ”เปเบฒ" เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰ indentation. โ€” เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปเบฅเบฐเป€เบชเบฑเป‰เบ™เบžเบดเป€เบชเบ”เบ•เบฑเบ”เบญเบญเบ, เบ›เบฐเบชเบปเบกเบ‚เบญเบ‡เปเบ–เบšเปเบฅเบฐเบŠเปˆเบญเบ‡เบชเปเบฒเบฅเบฑเบš indentation, เปเบ•เปˆเปเบšเบšเบŸเบญเบกเบญเบฐเบ™เบธเบเบฒเบ”).

เบเบฒเบ™เบ‚เบฒเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบกเปˆเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบ—เบฑเบ™เบ—เบต. เบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเป€เบญเบเบฐเบชเบฒเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบ–เบทเบเบเบณเบ™เบปเบ”เบ„เปˆเบฒเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ .editorconfig, เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฎเบนเบšเปเบšเบšเบ—เบปเปˆเบงเป‚เบฅเบ, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ–เบšเป€เบ›เบฑเบ™เบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡ เปเบฅเบฐเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบชเบตเบ”เบณเบ•เบฒเบกเบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบ™ b.py, เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบกเบฒเบžเป‰เบญเบกเบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ .editorconfig. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบเบงเปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ•เป‰เบญเบ‡เบกเบตเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš "เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™" เบ—เบปเปˆเบงเป‚เบฅเบ, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ”เบถเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบˆเบฒเบ ".editorconfig".

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™