æŠèŠ
ããã«ãããå€ãã® Git æ©èœããREST API ã䜿ã£ãŠåå®è£ ããããšãã§ããŸããRaw 圢åŒãªããžã§ã¯ããããŒã¿ããŒã¹ã«çŽæ¥äœæãããã©ã³ã ãªãã¡ã¬ã³ã¹ãæŽæ°ããããšã«ãããGit ãã€ã³ã¹ããŒã«ããªããŠããGit ãã§ããããšã®ã»ãšãã©ãè¡ããã®ã§ãã
REST API ã¯ãGit ãªããžããªã空ã§ããããå©çšã§ããªãå Žåã409 Conflict
ãè¿ããŸãã éåžžããªããžããªãå©çšã§ããªããšããããšã¯ãGitHub ããªããžããªãäœæåŠçäžã§ãããšããããšã§ãã 空ã®ãªããžããªã®å ŽåãPUT /repos/{owner}/{repo}/contents/{path}
REST API ãšã³ããã€ã³ãã䜿çšããŠã³ã³ãã³ããäœæãããªããžããªãåæåãããšãAPI ã䜿çšã㊠Git ããŒã¿ããŒã¹ã管çã§ããããã«ãªããŸãã ãã®ã¬ã¹ãã³ã¹ã¹ããŒã¿ã¹ãç¶ç¶ããŠããå Žåã¯ãGitHub ãµããŒã ããŒã¿ã«ãŸã§ãé£çµ¡ãã ããã
Git ãªããžã§ã¯ã ããŒã¿ããŒã¹ã®è©³çްã«ã€ããŠã¯ãPro Git ããã¯ã®ãGit Internals (Git ã®å åŽ)ãã®ç« ãåç §ããŠãã ããã
ããšãã°ããªããžããªã®ãã¡ã€ã«ã«å€æŽãã³ããããããå Žåã¯ã次ã®ããã«ããŸãã
- çŸåšã®ã³ããããªããžã§ã¯ããååŸãã
- ãã€ã³ãããããªãŒãååŸãã
- ç¹å®ã®ãã¡ã€ã«ãã¹ã«å¯ŸããŠããªãŒãæã€blobãªããžã§ã¯ãã®ã³ã³ãã³ããååŸãã
- äœããã®æ¹æ³ã§ã³ã³ãã³ãã倿Žããæ°ããã³ã³ãã³ãã§æ°ããblobãªããžã§ã¯ããPOSTããblob SHAãåååŸãã
- ãã¡ã€ã«ãã¹ãã€ã³ã¿ãæ°ããblob SHAã«çœ®ãæããããããªãŒãªããžã§ã¯ããPOSTããããªãŒSHAãåååŸãã
- çŸåšã®ã³ãããSHAã芪ãšããæ°ããã³ããããªããžã§ã¯ããšãæ°ããããªãŒSHAãäœæããã³ãããSHAãåååŸãã
- ãã©ã³ãã®ãªãã¡ã¬ã³ã¹ããæ°ããã³ãããSHAãæãããã«æŽæ°ãã
è€éã«èŠãããããããŸããããå®éã«ã¯ã¢ãã«ãçè§£ããŠããã°éåžžã«åçŽã§ãçè§£ããããšã«ãã API ã§ã§ããããšãåºããã§ãããã
ãã«ãªã¯ãšã¹ãã®ããŒãžå¯èœæ§ã確èª
èŠå
ãã®ã³ã³ãã³ãã¯èŠåãªãã«å€ãå
容ã«ãªããããGit ref ã merge
ããããã®æŽæ°ã« Git ãçŽæ¥äœ¿çšããããGET /repos/{owner}/{repo}/git/refs/{ref}
ã䜿çšãããããããšã«äŸåããªãã§ãã ããã
test ããŒãž ã³ããããäœæããã«ã¯ã䜿çšãã API ã§ãã«ãªã¯ãšã¹ããæç€ºçã«èŠæ±ããå¿
èŠããããŸãã test ããŒãž ã³ãããã¯ãUI ã§ãã«ãªã¯ãšã¹ãã衚瀺ã㊠[ããŒãž] ãã¿ã³ã衚瀺ããããšãããŸã㯠REST API ã䜿çšããŠãã«ãªã¯ãšã¹ããååŸãäœæããŸãã¯ç·šéãããšãã«äœæãããŸãã ãã®ãªã¯ãšã¹ãããªããã°ãmerge
Git ref ã¯æ¬¡ã«èª°ãããã«ãªã¯ãšã¹ãã衚瀺ãããŸã§æéåãã«ãªããŸãã
æéåãã® merge
Git ref ãçæããããŒãªã³ã° ã¡ãœãããçŸåšäœ¿çšããŠããå ŽåãGitHub ã§ã¯ä»¥äžã®æé ã䜿çšããŠãããã©ã«ããã©ã³ãããææ°ã®å€æŽãååŸããããšããå§ãããŸãã
- ãã«ãªã¯ãšã¹ãwebhookãåãåããŸãã
- ããŒãž ã³ãããã®åè£ãäœæããããã®ããã¯ã°ã©ãŠã³ã ãžã§ããéå§ããããã«
GET /repos/{owner}/{repo}/pulls/{pull_number}
ãåŒã³åºããŸãã GET /repos/{owner}/{repo}/pulls/{pull_number}
ã䜿çšããŠãªããžããªãããŒãªã³ã°ããmergeable
屿§ãtrue
ãŸãã¯false
ã®ãããã§ãããã確èªããŸãã åã®æé ãå®è¡ããåŸã«ã®ã¿ãGit ref ãmerge
ããããã®æŽæ°ã« Git ãçŽæ¥äœ¿çšããããGET /repos/{owner}/{repo}/git/refs/{ref}
ã䜿çšãããããããšãã§ããŸãã