Facebook ã® Mercurial ã«å¯¾ããæ¬æ°åº¦ã¾ã¨ã
Facebook ã®ã¨ã³ã¸ãã¢ããã°ã§ "Scaling Mercurial at Facebook" ã¨é¡ããã¨ã³ããªã 2014-01-07 ã«å ¬éããã大ããªæ³¨ç®ãéãã¾ããã
ã¾ãããã®ããã°ã¨ã³ããªã«ã¤ãã¦è§£èª¬ãã InfoQ ã®è¨äº "Facebook makes Mercurial faster than Git" ãããã®ç¿»è¨³ "Facebook、MercurialをGitよりも速くする" ããå¤ãã®äººããªãã¤ã¼ããããªã©ãã¦è©±é¡ã«ãã¦ãã¾ãã
ãã®ã¨ã³ããªã§ã¯ãä¸è¨ã®è¨äºã§ã¯è§¦ãã¦ããªããFacebook ã® Mercurial ã¸ã®æ¬æ°å ·åã«ã¤ãã¦ãã¾ã¨ãã¦ã¿ã¾ããã
人çé¢ä¸
Facebook 㯠Mercurial ã®ä¸»è¦éçºè ãä½äººãéç¨ãã¦ãã¾ããæãé¡èãªä¾ããMercurial ããã¸ã§ã¯ãã®ãªã¼ãã¼ã§ãã Matt Mackall æ°ãã®äººã®éç¨ã§ããããã
以ä¸ãç§ã®ææ¡ã§ãã¦ããç¯å²ã§ Facebook ãéç¨ãã¦ããï¼ï¼ "@fb.com" 名義ã使ç¨ãããã¨ã®ããï¼ä¸»è¦éçºè
ãä½äººãç´¹ä»ãã¾ãã
ã¡ãªã¿ã«ãGit ã®ã¡ã³ããã§ãã濱éç´æ°ãç¾å¨ Google に勤務ãã¦ããããã¾ããå½ä»£ã®ä»£è¡¨çãªå¤§è¦æ¨¡ãµã¼ãã¹æä¾ä¼æ¥ã§ãã Google 㨠Facebook ããåæ£å±¥æ´ç®¡çãã¼ã«ããã¸ã§ã¯ãã®ããããæã£ã¦æ±ãè¾¼ãã§ããã¨ããã®ã¯ããªããªãé¢ç½ãã§ããã
â Bryan O'Sullivan
"Real World Haskell" ã "Mercurial: The Definitive Guide" ã®å·çã§ãç¥ããã Bryan O'Sullivan æ°ã¯ã以åã®å¤åå 㧠BitKeeper ã使ç¨ããå¿ è¦ããã£ããããコア機能の開発に関与できずにいたææãããã¾ããããã¼ã¿ã«ã§ 600 件è¿ãã³ãããå®ç¸¾ãæã¤ãæå¤åã® Mercurial ã³ã¢ã¡ã³ãã¼ã®ä¸äººã§ãã
Facebook ã®è©æ¸ã§ã®ç´ 240 件ã®ã³ãããå®ç¸¾ã¯ãFacebook 社å¡ã«ãã 500 ä»¶è¶ ã®ã³ãããå®ç¸¾ã®ãåæ°è¿ããå ãããã¨ã«ãªãã¾ããã
â Pierre-Yves David
Pierre-Yves David æ°ã¯ãã¡ã¤ã³ãªãã¸ããªã¸ã®ã³ããã権ãæ㤠Crew メンバーã§ããããã¾ããããobsolete 機能å®è£ ã®ä¸»å°ãã540 件è¿ãã³ãããå®ç¸¾ãªã©ã主è¦éçºè ã®ä¸äººã¨è¨ã£ã¦å·®ãæ¯ããªãã§ãããã
Facebook ã®è©æ¸ã§ã®ã³ãããæ°ã¯ 2014-01 以éã®æ°ä»¶ã¿ããã§ãã®ã§ãã²ãã£ã¨ãããæè¿ã«ãªã£ã¦ Facebook ã«è»¢è·ããã®ããããã¾ããã
ã³ã¼ãé¢ä¸
Facebook 社å¡ï¼ï¼ "@fb.com" å義ã®ã¦ã¼ã¶ï¼ã®æã«ãããããã®æ¡ç¨ç¶æ³ã¯ã以ä¸ã®è¦é ã§ç¢ºèªãããã¨ãã§ãã¾ãã
$ hg log -r "author('@fb.com') and not merge()"
ä¸è¦§è¡¨ç¤ºãããªãã--template "{author|email} {node|short}: {desc|firstline}\n"
æå®ã追å ããæ¹ãè¯ãããããã¾ãããã
2.9-rc æç¹ã®ãªãã¸ããªä¸ã§ã¯ãFacebook 社å¡ã«ããå¤æ´ä»¶æ°ã¯ 543 件ã§ããï¼ä»¶ã®ããã°ã¨ã³ããªãå ¬éãã¦ãã Durham Goode æ°ã®ã³ãããã 64 件ããã¾ããï¼ã
Matt Mackall æ°ã¯ Facebook ã«å¤åããç¾å¨ã§ã "Matt Mackall <[email protected]>" å義ã使ç¨ãã¦ãã¾ãã®ã§ãå®è³ªçã«ã¯ä»¶ã®ããã°ã¨ã³ããªã§ã® "over 500 patches" 以ä¸ã®é¢ä¸ããããã¨ã«ãªãã¾ããã
件ã®ããã°ã¨ã³ããªã§ã¯ã500以ä¸ã®ä¿®æ£ã³ã¼ãã®è²¢ç®ä¾ã¨ãã¦ã新しいグラフアルゴリズムãCによるコードの書き直しãä¸ãã¦ãã¾ãããããç¨åº¦ã¾ã¨ã¾ã£ãéã®å¤æ´ã¨ãã¦ã以ä¸ã®ãããªæ©è½è¿½å ã®è²¢ç®ãããã¾ãã
â 並å update
Mercurial 2.6 ããæä¾ãããããã«ãªã£ã並列 update 機能ãå®ç¾ãã¦ãã worker.py ã¯ã"Facebook, Inc." の Copyright 付きã®ã³ã¼ãã§ãã
Facebook 社å¡ã«ãã件ã®ããã°ã¨ã³ããªã§ã¯ããstatus ã®æ§è½åä¸ãããclone 㨠pull ã®æ§è½åä¸ãã«ã¤ãã¦è¨åããã¦ãã¾ããã大éã®ãã¡ã¤ã«ãæ±ã大è¦æ¨¡ãªãã¸ããªä¸ã®å ´åãç¹å®ãªãã¸ã§ã³æç¹ã®å 容ãåãåºã update å¦çã®å¿çæ§ãã対話çå®è¡ã«ãããã¦ã¼ã¶å©ä¾¿æ§ã®ç¹ã§ã¯ç¡è¦ã§ãã¾ããã
並å update 対å¿ã® Mercurial ããè¤æ°ã® CPU ãå©ç¨ã§ããç°å¢*1ã§ä½¿ç¨ããå ´å:
- update ã«ãã£ã¦æ´æ°ï¼å¤æ´ï¼è¿½å ï¼ãå¿ è¦ãªãã¡ã¤ã«ã®ä¸è¦§ãä½æ
- ä¸è¦§ãå©ç¨å¯è½ CPU æ°ã§åå²
- å CPU æ¯ã«ãæ å½ãã¡ã¤ã«ã®æ´æ°ä½æ¥ã並åå®è¡
ä¸è¨ã®æé 㧠update å¦çã並ååããã¾ãã
å¤ãã®å ´åãä½æ¥é åå ¨ä½ãåä¸ããã¤ã¹ä¸ã«è¨é²ããã¦ããã§ãããããã並å度åãä¸ãã¦ããæ§è½åä¸ã¯ä¸å®ã¬ãã«ã§é æã¡ã¨ãªãå¯è½æ§ãããã¾ãã
ãããæ¨ä»ã§ã¯ä»¥ä¸ã®ãããªç¶æ³ã«ãªã£ã¦ãã¾ãã®ã§ã並å update ã®å¹æã¯ãæã£ã以ä¸ã«å¤§ããããããã¾ãããã
- SSD ã®æ®åã«ãããã©ã³ãã ã¢ã¯ã»ã¹ I/O ã«ããæ§è½å£åããå転åªä½ãã¼ã¹ã® HDD ç¨ã§ã¯ãªã
- 大éã¡ã¢ãªã®æè¼ã«ãããOS ã¬ãã«ã®ãã£ãã·ã¥ï¼é 延æ¸ãåºããå¹ããã¨ã§ãåªä½ã¨ã® I/O ã«ããæ§è½å£åãä½æ¸
ã¡ãªã¿ã«ãPython の履歴管理ツール選定ã§ã®è©ä¾¡ã®æç¹ã§ã¯ãgit checkout
ããã hg update
ã®æ¹ãæ§è½é¢ã§æå©ã¨å¤å®ããã¦ãã¾ãããããã§ãæ¡å¤ãã«å¤§éã®ãã¡ã¤ã«ãæ±ããªãã¸ããªã§ã¯ãã¡ãã£ã¨ãããã¨ã§ãã¦ã¼ã¶ã®ä½æé度ã¯ç°¡åã«å£åãã¦ãã¾ãã¾ãã
並å update æ©è½ã«ã¯ãå©ä¾¿æ§åä¸ã®ããã®æ§è½æ¹åã«å¯¾ããå·å¿µãæãã¾ãã
â å梱ç shelve ã¨ã¯ã¹ãã³ã·ã§ã³
ããã¾ã§ã¯ã"git stash" ç¸å½ã®æ©è½ãå®ç¾ããã«ã¯ããµã¼ããã¼ãã£è£½ã® shelve エクステンションãå ¥æããå¿ è¦ãããã¾ããããMercurial 2.8 ãã㯠shelve エクステンションãå梱ãããããã«ãªãã¾ããã
ãã®å梱ç shelve ã¨ã¯ã¹ãã³ã·ã§ã³ã¯ã"Facebook, Inc." の Copyright 付きã®ã³ã¼ãã§ãã
ã¡ãªã¿ã«ããµã¼ããã¼ãã£è£½ã® shelve ã¨å梱çã®ããã¯ãæ©è½ã®å®ç¾æ¹å¼ãå ¨ãç°ãªãã¾ãã両è ã®å·®ç°ã«é¢ãã¦ã¯別のエントリã§è§£èª¬ãã¦ãã¾ãã®ã§ããã¡ããåç §ãã¦ãã ããã
Facebook ç±æ¥ã® shelve ãå梱対象ã«é¸å®ãããã®ã¯ãè¡çªçºçæã« 3-way ãã¼ã¸ã«ãã解æ¶ãå¯è½ãªç¹ããããããã¼ã¹ã®ãµã¼ããã¼ãã£è£½ shelve ããã好ã¾ããã®ã ã¨æããã¾ãã