Ua hoʻolauna ʻo Facebook i kahi ʻōnaehana hoʻokele code kumu hou ʻo Sapling

Ua paʻi ʻo Facebook (kāpae ʻia ma Rusia) i ka ʻōnaehana hoʻokele code source Sapling i hoʻohana ʻia i ka hoʻomohala ʻana i nā papahana kūloko o ka hui. Manaʻo ka ʻōnaehana e hāʻawi i kahi interface hoʻololi maʻamau e hiki ke hoʻonui i nā waihona waihona nui loa i ka ʻumi miliona o nā faila, commits a me nā lālā. Ua kākau ʻia ka code client ma Python a me Rust, a wehe ʻia ma lalo o ka laikini GPLv2.

Hoʻokaʻawale, ua hoʻomohala ʻia kahi ʻāpana kikowaena no ka hana mamao kūpono me nā repositories a me kahi ʻōnaehana file virtual no ka hana ʻana me kahi ʻāpana kūloko o kahi ʻāpana o ka waihona e like me kahi waihona piha (ʻike ka mea hoʻomohala i ka waihona holoʻokoʻa, akā ʻo ka ʻikepili i noi ʻia ke kope ʻia. i ka ʻōnaehana kūloko, i loaʻa). ʻAʻole i wehe ʻia ke code no kēia mau ʻāpana i hoʻohana ʻia i ka ʻoihana Facebook, akā ua hoʻohiki ka hui e hoʻolaha i ka wā e hiki mai ana. Eia naʻe, hiki ke loaʻa nā prototypes o ka server Mononoke (ma Rust) a me VFS EdenFS (ma C++) ma ka waihona Sapling. He koho kēia mau ʻāpana a ua lawa ka mea kūʻai aku ʻo Sapling e hana, e kākoʻo ana i ka cloning repositories Git, e launa pū me nā kikowaena e pili ana iā Git LFS, a me ka hana pū me nā pūʻali git e like me GitHub.

ʻO ka manaʻo nui o ka ʻōnaehana ʻo ia ke kamaʻilio ʻana me kahi ʻāpana kikowaena kūikawā e hāʻawi ana i ka waiho ʻana o ka waihona, hoʻonui ʻia nā hana āpau ma muli o ka helu o nā faila i hoʻohana maoli ʻia i ke code e hana nei ka mea hoʻomohala, a ʻaʻole hilinaʻi ma luna. ka nui o ka waihona a pau. No ka laʻana, hiki i ka mea hoʻomohala ke hoʻohana i kahi ʻāpana liʻiliʻi o ke code mai kahi waihona nui loa, a ʻo kēia ʻāpana liʻiliʻi wale nō, ma mua o ka waihona holoʻokoʻa, e hoʻoili ʻia i kāna ʻōnaehana. Hoʻopiha piha ʻia ka papa kuhikuhi hana, no ka mea, ʻike ʻia nā faila mai ka waihona, ma kekahi ʻaoʻao, hiki iā ʻoe ke wikiwiki wikiwiki i ka hana me kāu ʻāpana o ke code, akā ma ka ʻaoʻao ʻē aʻe, alakaʻi i kahi lohi i ka wā e komo mua ai. nā faila hou a koi i ke komo mau ʻana i ka pūnaewele (i hoʻokaʻawale ʻia a me ke ʻano offline o ka hoʻomākaukau ʻana i nā hana).

Ma waho aʻe o ka hoʻouka ʻana i ka ʻikepili adaptive, hoʻokō ʻo Sapling i nā optimizations e kuhikuhi ana i ka hōʻemi ʻana i ka hoʻouka ʻana o ka ʻike me ka mōʻaukala o nā loli (no ka laʻana, 3/4 o ka ʻikepili i loko o kahi waihona me ka Linux kernel ka mōʻaukala o nā loli). No ka hana maikaʻi ʻana me ka mōʻaukala hoʻololi, mālama ʻia ka ʻikepili e pili ana me ia i kahi hiʻohiʻona ʻāpana, kahi e hiki ai iā ʻoe ke hoʻoiho i nā ʻāpana ʻokoʻa o ka commit graph mai ke kikowaena. Hiki i ka mea kūʻai ke noi i ke kikowaena no ka ʻike e pili ana i ka pilina o kekahi mau hana a hoʻoiho i ka ʻāpana pono o ka pakuhi.

Ua hoʻomohala ʻia ka papahana i nā makahiki he 10 i hala iho nei a ua hana ʻia e hoʻoponopono i nā pilikia i ka wā e hoʻonohonoho ai i ke komo ʻana i nā waihona monolithic nui loa me hoʻokahi lālā kumu, kahi i hoʻomaʻamaʻa ʻia ai ka hoʻohana ʻana i ka hana "rebase" ma kahi o ka "merge". I kēlā manawa, ʻaʻohe mea hāmama no ka hana ʻana me ia mau waihona, a ua hoʻoholo nā ʻenekini Facebook e hana i kahi ʻōnaehana mana mana hou e kū ana i nā pono o ka ʻoihana, ma kahi o ka hoʻokaʻawale ʻana i nā papahana i loko o nā waihona liʻiliʻi, e alakaʻi i ka hoʻokele hilinaʻi paʻakikī. (i ka manawa hoʻokahi, e hoʻoponopono i kahi pilikia like, ua hana ʻo Microsoft i ka papa GVFS). I ka hoʻomaka ʻana, ua hoʻohana ʻo Facebook i ka ʻōnaehana Mercurial a ua kūkulu mua ʻia ka papahana Sapling ma ke ʻano he hoʻohui i Mercurial. I ka hala ʻana o ka manawa, ua hoʻololi ʻia ka ʻōnaehana i kahi papahana kūʻokoʻa me kāna protocol ponoʻī, ka waihona mālama a me nā algorithms, i hoʻonui ʻia me ka hiki ke launa pū me nā waihona Git.

No ka hana, ua noi ʻia ka "sl" kauoha-line utility, kahi e hoʻokō ai i nā manaʻo maʻamau, nā kahe hana, a me kahi interface i kamaʻāina i nā mea hoʻomohala i kamaʻāina iā Git a me Mercurial. ʻOkoʻa iki nā huaʻōlelo a me nā kauoha ma Sapling mai Git a kokoke i Mercurial. No ka laʻana, hoʻohana ʻia nā "bookmarks" ma kahi o nā lālā (ʻaʻole i kākoʻo ʻia nā lālā i kapa ʻia), ma ka maʻamau, i ka wā e hana ana i ka clone / huki, ʻaʻole i hoʻouka ʻia ka waihona holoʻokoʻa, akā ʻo ka lālā nui wale nō, ʻaʻohe mākaʻikaʻi mua o nā hana (staging). wahi), ma kahi o "git fetch" ua hoʻohana ʻia ke kauoha "sl" huki", ma kahi o "git pull" - "sl pull --rebase", ma kahi o "git checkout COMMIT" - "sl goto COMMIT", ma kahi o "git reflog" - "sl journal", e hoʻihoʻi i ka hoʻololi ma kahi o "git checkout - FILE" "sl revert FILE" i kuhikuhi ʻia, a "." hoʻohana ʻia e ʻike i ka lālā "HEAD". Akā ma ka laulā, mālama ʻia nā manaʻo maʻamau o nā lālā a me nā hana clone/pull/push/commit/rebase.

Ma waena o nā hiʻohiʻona ʻē aʻe o ka hāmeʻa Sapling, kū ke kākoʻo no ka "log log" (smartlog), e hiki ai iā ʻoe ke nānā maka i ke kūlana o kāu waihona, e hōʻike i ka ʻike nui loa a kānana i nā kikoʻī liʻiliʻi. No ka laʻana, ke holo ʻoe i ka pono sl me ka ʻole o nā hoʻopaʻapaʻa, hōʻike ʻia kāu mau hoʻololi kūloko ponoʻī (ua hāʻule nā ​​haole), ke kūlana o nā lālā waho, nā faila i hoʻololi ʻia, a hōʻike ʻia nā mana hou o nā commits. Hoʻohui ʻia, hāʻawi ʻia kahi kikowaena pūnaewele pili, kahi e hiki ai ke hoʻokele wikiwiki i ka log akamai, hoʻololi i ka lāʻau a hana.

Ua hoʻolauna ʻo Facebook i kahi ʻōnaehana hoʻokele code kumu hou ʻo Sapling

ʻO kekahi hoʻomaikaʻi kaulana ʻē aʻe ma Sapling ʻo ia ka maʻalahi o ke kaʻina hana o ka hoʻoponopono ʻana a me ka hoʻopau ʻana i nā hewa, a hoʻi hou i kahi kūlana mua. No ka laʻana, ua hāʻawi ʻia nā kauoha "sl undo", "sl redo", "sl uncommit" a me "sl unamend" e hoʻohuli i nā hana he nui, "sl hide" a me "sl unhide" nā kauoha e hūnā no kekahi manawa i nā hana, a me ka hoʻokele interactive ma o nā mokuʻāina kahiko a hoʻi i kahi kikoʻī i ke kauoha "sl undo -i kauoha". Kākoʻo pū ʻo Sapling i ka manaʻo o kahi commit stack, kahi e hiki ai iā ʻoe ke hoʻonohonoho i kahi loiloi ʻanuʻu i kēlā me kēia ʻanuʻu ma o ka wāwahi ʻana i nā hana paʻakikī i loko o kahi pūʻulu o nā hoʻololi hoʻonui liʻiliʻi a ʻoi aku ka hoʻomaopopo ʻana (mai kahi hoʻolālā kumu a hiki i kahi hiʻohiʻona paʻa).

Ua hoʻomākaukau ʻia kekahi mau mea hoʻohui no Sapling, e komo pū me ka ReviewStack interface no ka nānā ʻana i nā loli (code ma lalo o GPLv2), e hiki ai iā ʻoe ke hana i nā noi huki ma GitHub a hoʻohana i kahi ʻike o nā loli. Eia kekahi, ua paʻi ʻia nā mea hoʻohui no ka hoʻohui ʻana me nā mea hoʻoponopono VSCode a me TextMate, a me ka hoʻokō ʻana o ka ISL (Interactive SmartLog) interface a me ka server.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka