çä¼¼ãã¼ã¸ =========== ãã§ãªã¼ãããã³ã° ------------------ æã ããã©ã³ãã®å¤æ´ã®å ¨é¨ã§ã¯ãªãä¸é¨ã ããé¸ãã§ãã¼ã¸ãããã¨ã\ 便å©ã§ãããã¨ãããã¾ãã ããã¯ä¸è¬çã« *ãã§ãªã¼ãããã³ã°(cherrypicking)* ã¨ãã¦è¨åããã¾ãã ãã§ãªã¼ãããã³ã°ãå½¹ã«ç«ã¤ããã¤ãã®äºä¾: * ã¡ã¤ã³ã®éçºãã©ã³ãããä¿®æ£ã®ä¸é¨ãåãåºãã¦ãªãªã¼ã¹ãã©ã³ãã«åãè¾¼ã * å®é¨ãã©ã³ãããæ¹åå 容ãé¸å¥ãã¦æ©è½ãã©ã³ãã«åãè¾¼ã ``foo`` ãã©ã³ãã®ãªãã¸ã§ã³ Xã«ãã£ã¦ãªãããå¤æ´ã®ã¿ããã¼ã¸ããããã«ã¯:: bzr merge -c X foo ``foo`` ãã©ã³ãã®ãªãã¸ã§ã³Xã¾ã§ã®å¤æ´ã®ã¿ããã¼ã¸ããããã«ã¯:: bzr merge -r X foo ``foo`` ã®ãªãã¸ã§ã³X以éã®å¤æ´ã®ã¿ããã¼ã¸ããããã«ã¯:: bzr merge -r X.. foo ``foo`` ãã©ã³ãã®ãªãã¸ã§ã³Xãããªãã¸ã§ã³Yã¾ã§ã®å¤æ´ã®ã¿ããã¼ã¸ããã«ã¯:: bzr merge -r X..Y foo é常ã®ãã¼ã¸ã¨åãããã«ããã§ãªã¼ããã¯ã¯æ示çã«ã³ãããããªããã°ãªãã¾ããã ãããè¡ãåã«ã ``bzr diff`` ãå©ç¨ããå¤æ´ãè¦ã¦ä½ãããã°ãã¹ãã¹ã¤ã¼ãã\ å®è¡ããã¨ããã§ãããã é常ã®ãã¼ã¸ã¨ã¯ç°ãªããBazaarã¯ç¾å¨ã¯ãã§ãªã¼ããã¯ã追跡ãã¾ããã å ·ä½çã«è¨ãã¨ãå¤æ´ã¯é常ã®ã³ãããã¨åãããã«ãªããä»ã®ãã©ã³ãããæ¥ã(å é¨ã®)å¤æ´å±¥æ´ã¯å¤±ããã¾ãã ä¸è¨ã®ãããªãã§ãªã¼ããã¯ãå½¹ã«ç«ã¤å ´é¢ã§ã¯ããã®ãã¨ã¯ããã¦ãé大ãªåé¡ã§ã¯ããã¾ããã ãã«ãã¼ã¸ãå¾ã§è¡ããããã¨ã¯ãã£ãã¦ãªãã¨è¨ããååãªçç±ãããããã§ãã ããã§ã¯ãªãå ´é¢ã§ã¯ãå¤æ´ãåã³ãã¼ã¸ãããã¨ãã«ã¾ãè¡çªã解æ¶ããå¿ è¦ãããã¾ãã .. Merging without parents 親ã®ãªããã¼ã¸ ------------------ ãã§ãªã¼ããã¯ã«é¢é£ãããã¯ããã¯ã¨ãã¦ããã¼ã¸å ã®ãªãã¸ã§ã³ãåç §ããã«ã ã³ãããåã«è¦ªãªãã¸ã§ã³ãå¿ãããã¨ãã§ãã¾ãã ããããã¨ããã®ãã¼ã¸ã§è¡ãããå ¨ã¦ã®å¤æ´ãã1åã®ã³ãããã§è¡ããããã㪠å¹æãããã¾ãã ãã¼ã¸ãããã¨ãã³ãããããåã«æ¬¡ã®ã³ãã³ããå®è¡ãã¾ãã :: bzr revert --forget-merges ããã§ãä½æ¥ããªã¼å ã®å¤æ´ã¯æ®ããã¾ã¾ããã®å¤æ´ãã©ããããã¼ã¸ããããã® è¨é²ã ããåé¤ãã¾ããããã¦ã次ã®ã³ãããã§ã¯ãã¼ã¸ããããªãã¸ã§ã³ã« é¢ããæ å ±ãä¸åãªãç¶æ ã§ãå ¨ã¦ã®å¤æ´ãè¨é²ãã¾ãã ãã®æ©è½ã¯ããããããªãå±¥æ´ãä½ãããã¦ã¼ã¶ã¼ã«åã£ã¦ä¾¿å©ãªãã®ã§ããã Bazaarã¯ãã¨ãã¨ãã¼ã¸ãããå±¥æ´ã段éçã«è¡¨ç¤ºããæ©è½ãæã£ã¦ããã®ã§ã 失ã£ãå±¥æ´ã®ä¾¡å¤ãå±¥æ´ã®ããããã®ä¾¡å¤ãä¸åããªãããã«æ°ãã¤ããå¿ è¦ãããã¾ãã ç¹ã«ããã®æ©è½ã使ãã¨ãã¼ã¸å ã®å¤æ´ã ããåãè¾¼ãã§ãã®å¤æ´ã®ãã¼ã¸å ã è¨é²ããªãã®ã§ãå¾ã§åããã¼ã¸å ãããã¼ã¸ãããã¨ããã¨ä½è¨ãªã³ã³ããªã¯ãã çºçãããå¯è½æ§ãããã¾ãã .. _reverse-cherrypicking: ãªãã¼ã¹ãã§ãªã¼ãããã³ã° --------------------------- ãã§ãªã¼ãããã³ã°ã¯ä¸é£ã®å¤æ´ãå ã«æ»ããã¨ãã§ãã¾ãããã®å ´åããªãã¸ã§ã³ç¯å²ã®\ ä¸ç(upper bound)ãä¸ç(lower bound)ããã *å°ãã* ãªãã¾ãã ãã¨ãã°ããªãã¸ã§ã³10ã®å¤æ´ãåãæ¶ãããã®ã³ãã³ãã¯ãããªãã¾ã:: bzr merge -r 10..9 ã©ããããããã¹ã¦ã§ã¯ãªã大åã®å¤æ´ãå¾ããå ´åé常ã®ãã¼ã¸ãããå¾ã«å°ãã®\ ãªãã¼ã¹ãã§ãªã¼ããã¯ãè¡ãã¨ããã§ãããã ã³ãããããã¦ããªãå¤æ´ããã¼ã¸ãã ------------------------------------- è¤æ°ã®ãã©ã³ããæã£ã¦ãããééãã¦å¥ã®ãã©ã³ããå¤æ´ãå§ããå ´åãè¨æ£ãã¨ãã¹ãããã¯æ¬¡ã®ã¨ããã§ãã ãã©ã³ã ``bar`` ã§ä½æ¥ãããã£ãã®ã«ããã©ã³ã ``foo`` ã§ä½æ¥ãå§ãã¦ãã¾ã£ãã¨ããå ´åãåæã¨ãã¾ã: 1. ``bar`` ãã©ã³ãã«ç§»åãã 2. ``bzr merge --uncommitted foo`` ãå®è¡ãã 3. ãã£ã¦ããå¤æ´ããã§ãã¯ãã (``bzr diff``) 4. ``foo`` ãã©ã³ãã«å¤æ´ãã 5. ``bzr revert`` ãå®è¡ãã .. TODO Selective file merging? ãªãã¼ã¹ãã -------------- é常ã®ãã¼ã¸ã®å¥ã®ãªãã·ã§ã³ã¯ *ãªãã¼ã¹(rebase)* ã§ãã ããªãã¡ãç¾å¨ã®ãã©ã³ããæ¬æ¥ã¨ã¯ç°ãªãå°ç¹ããã¼ã¹ã«ããããã«ãã¾ãã ãªãã¼ã¹ã¯ ``rebase`` ãã©ã°ã¤ã³ã«ãã£ã¦æä¾ããã ``rebase`` ã³ãã³ã\ ã«ãã£ã¦ãµãã¼ãããã¾ãã ``rebase`` ã³ãã³ãã¯ç¾å¨ã®ä½æ¥ãã£ã¬ã¯ããªå ã®ãªãã¼ã¹ããããã©ã³ãä¸ã§\ å¥ã®ãã©ã³ãã®ä½ç½®ãã¨ãã¾ãã ãã©ã³ããæå®ãããªãã¨è¦ªã®ãã©ã³ãã使ãããé常ããã¯æã¾ããçµæã§ãã æåã®ã¹ãããã¯ç¾å¨ã®ãã©ã³ãã®ãã®ã§ããã親ã®ãã©ã³ãã§ã¯ãªããªãã¸ã§ã³ã\ ç¹å®ãããã¨ã§ãã ç¾å¨ã®ãã©ã³ãã¯ã¿ã¼ã²ãããã©ã³ãã¨åããªãã¸ã§ã³ã«è¨å®ãããããããã®\ ãªãã¸ã§ã³ã¯ãã©ã³ãã®ãããã§åç¾ããã¾ãã ããã»ã¹ã®çµäºæã«ç¾å¨ã®ãã©ã³ããã¿ã¼ã²ããã®æçµãªãã¸ã§ã³ãããã©ã³ã\ ãããããã«ãªãã¾ãã åç¾ãããããããã®ãªãã¸ã§ã³ãããªã¼ã®ä¸ã§è¡çªãèµ·ãããã¨ãããã¾ãã ãããèµ·ãããã³ãã³ãã¯åæ¢ãã¦ããããä¿®æ£ããªããã°ãªãã¾ããã ``merge`` ããããã«ã³ãããã解æ¶ãããããã解æ¶ããããã®ã¨ãã¦ãã¼ã¯ããããã« ``bzr resolve`` ãå®è¡ãã¾ãã ãã¹ã¦ã®è¡çªã解æ¶ãããããªãã¼ã¹ãªãã¬ã¼ã·ã§ã³ãç¶ããããã« ``bzr rebase-continue`` ãå®è¡ãã¾ãã è¡çªã«ééããç¶ããªããã¨ã決ãããã ``bzr rebase-abort`` ãå®è¡ã§ãã¾ãã ãªãã¬ã¤ãããã³ãããã®ä¸è¦§ã表示ããããã« ``rebase-todo`` ãå©ç¨ãããã¨ãã§ãã¾ãã 注: ãã¼ã¸ãã©ããã³ã°æ©è½ã貧弱ãªVCSãã¼ã«ããæ¥ãã¦ã¼ã¶ã¼ã®ä¸ã«ã¯ãªãã¼ã¹ã好ã人ããã¾ãã å¤ããã¼ã«ã§ã®ä½æ¥æ¹æ³ã«ä¼¼ã¦ããããããã¯"å®ç§ã«ããããª" å±¥æ´ãéè¦ã ããã§ãã Bazaarã§ãªãã¼ã¹ããåã«ãé常ã®ãã¼ã¸ããã¿ã¼ãªé¸æè¢ã§ã¯ãªãã®ãèãã¦ãã ããã ã¨ããããå§ããåã«ãã©ã¤ãã¼ããªãã©ã³ãããªãã¼ã¹ããã®ã¯å¤§ä¸å¤«ã§ããã ä»ã®èª°ãã¨ãã©ã³ããå ±æããå¾ã®ãªãã¼ã¹ã¯ **å¼·ãéæ¨å¥¨** ã§ãã