1.tortoisehg è¦å
å®è£
mercurialå
2.Ubuntu下编译OpenJDK9
tortoisehg è¦å å®è£ mercurialå
çæ¬æ§å¶ç³»ç»ï¼Version Control System / Revision Control Systemï¼æè å«åæºç æ§å¶ç³»ç»Source Control Systemï¼ä»¥ä¸ç®ç§°VCSï¼ï¼æ¯è½¯ä»¶å¼å人åæ常ç¨çå·¥å ·ä¹ä¸ï¼ç±äºVCSæ¯å¦æ¤å¸¸ç¨ï¼æ以è±ä¸äºæ¶é´å»äºè§£å®æ¯æå¿ è¦çã
åå¸å¼çæ¬æ§å¶ç³»ç»ï¼Distributed Version Control System,源码DVCSï¼ï¼æ¯ç¸å¯¹äºéä¸å¼çæ¬æ§å¶ç³»ç»ï¼Centralized Version Control Systemï¼CVCSï¼èè¨çï¼æ¯å¦ï¼ä½¿ç¨äººæ°æå¤çSVNãVSSå°±æ¯å ¸åçCVCSãå¦æä½ æ¾ç»ç¨è¿SVNæVSSï¼å°±å¯ä»¥å¾å®¹æç解ä»ä¹å«åâCentralizedâ ãCVCSï¼æ¯æåªæä¸ä»½æ°æ®ä»åºåæ¾å¨ä¸å°æå¡å¨ä¸ï¼ææ客æ·ç«¯é½è¿æ¥å°è¿å°æå¡å¨ä»¥è¯»åæ°æ®ä»åºçå·¥ä½æ¨¡åãèDVCS模ååä¸ç¶ï¼æ¯ä¸å°ç»ç«¯é½æä¸ä»½å®æ´çæ°æ®ä»åºï¼ææç»ç«¯ä¹é´é½æ¯å¹³ççï¼å¹¶ä¸åå¨å¯ä¸çä¸å°âæå¡å¨âãææçç»ç«¯ä¹é´ï¼å¯ä»¥èªç±å°äº¤æ¢æ°æ®ã
DVCSå¯ä»¥å¾å®¹æå°æ¨¡æCVCSçå·¥ä½æ¹å¼ï¼åªè¦æå®ä»»æä¸å°ç»ç«¯ä½ä¸ºæå¡å¨ï¼è§å®ææ人é½å°æ´æ¹æ¨éå°è¿å°æå¡å¨ï¼å¹¶ä¸ææ人ä¹é½ä»è¿å°æå¡å¨è·åæ´æ°å³å¯ãèä¸CVCSç¸æ¯ï¼DVCSåæ以ä¸ä¼ç¹ï¼
a) æ´å å®å ¨ç代ç 管çã
å¨SVNä¸ï¼æ¯æ¬¡æ交é½æå³çæ£å¼ç代ç 被æ´æ¹ï¼å«äººå¯ä»¥ç«å³çå°æ¤æ¬¡æ交ï¼å¹¶ä¸å¯è½ç´æ¥å½±åå°æ£å¨è¿è¡çç³»ç»ï¼å¯è½ä¼æ人ç«å³å°æ¤æ´æ°æ·è´å°æå¡å¨ï¼ï¼è¿å¯¼è´ä¸ç³»åçé®é¢ãé¦å ä¸ä¸ªé®é¢æ¯ï¼æ人å¯è½ä¼æ æä¸æ交é误çãä¸å¯é ç代ç ãå ¶æ¬¡ï¼è¿å¯¼è´ç¨åºåä¸æ¢è½»æç¾å ¥æ´æ¹ï¼å½ç¨åºè¿è¡ä¸é¡¹èæ¶å¾ä¹ ï¼å¤§éä¿®æ¹çå·¥ä½æ¶ï¼ææçä¿®æ¹é½æ¯æ²¡æç»è¿VCSä¿æ¤çï¼è¿æ¯é常å±é©çï¼ä¹ä¸ç¬¦å使ç¨VCSçåè¡·ã
èå¨DVCSä¸åä¸åï¼å 为é¦å æ交å°èªå·±æ¬å°ä»åºä¸ï¼æ以ç¨åºåå¯ä»¥å°½éå°åæ°æ®ä»åºæ交æ´æ¹ï¼èä¸ç¨æ å¿è¿ä¼å½±åå°å ¶ä»äººæç³»ç»ï¼è¿å¯ä»¥å°ç¨åºåå¨å¼åè¿ç¨ä¸æ产ççå个çæ¬ä»£ç å®åå°ä¿æ¤èµ·æ¥ï¼å¨å¨æè¾é¿çå¼åä¸ï¼è¿ä¸ç¹ç¹å°¤å ¶æ¾å¾éè¦ã
è½ç¶å¨SVNä¸æåæ¯åè½å¯ä»¥è¾¾å°ç±»ä¼¼çç®çï¼ä½æ¯åæ¯å并æä½èµ·æ¥è¾ä¸ºç¹çï¼èä¸é常容æåçå²çªï¼ç»æå°±æ¯å¾å¤åºå½ä½¿ç¨åæ¯çåºåå ¶å®å¹¶æ²¡æ使ç¨åæ¯ã
b) æè±ç½ç»çæç¼ï¼éæ¶è¿è¡å®æ´çå·¥ä½ã
å¨SVNä¸ï¼ç±äºä¸å¤®ä»åºåªæä¸ä¸ªï¼æ以任ä½éè¦ä¸ä»åºæ²éçå¨ä½ï¼ä¾å¦æ¥è¯¢åå²çæ¬ï¼æ交æ´æ¹ççï¼å¿ é¡»é¦å èç½ï¼èå¨æäºæ¶åï¼è¿ä¸æç¼å°±æ¾å¾ä¸æ¹ä¾¿ï¼èå¨DVCSä¸ï¼åéæ¶å¯ä»¥ä¸æ°æ®ä»åºè¿è¡æ ç¼çæ²éï¼ç¨åºåå¯ä»¥åå ¶ä¸ä¸åæ交æ°çæ´æ¹ï¼ææ¥è¯¢æ个æ件çåå²çæ¬ï¼é½å¯ä»¥å¨å®å ¨æç½çæ åµä¸è¿è¡ã
c) æ´å æºè½ç代ç å并ã
å½ä¸¤ä¸ªäººå¯¹åä¸ä»½ä»£ç è¿è¡å·¥ä½æ¶ï¼ä¸¤ä¸ªäººçä¿®æ¹å¯è½ä¼äº§çå²çªãç¶èï¼SVNå½æ°çæ´æ¹è¢«æ交æ¶ï¼SVNåªè½æ¥çæç»ççæ¬ï¼è¿å¯¼è´SVN对æäºå·®å¼å¾å¤§çæ件æ æ³èªå¨å并ï¼è人工å并æ¯å¾è´¹æ¶è´¹åçãå¨Mercurialä¸ï¼å½ä¸¤ä¸ªä¸åççæ¬éè¦è¿è¡å并æ¶ï¼DVCSå¯ä»¥ä½¿ç¨è¿ä¸ªæ件ææçä¿®æ¹åå²æ¥ä¸æ¥ä¸æ¥å°è¿åæ´ä¸ªä¿®æ¹çè¿ç¨ï¼è¿æ ·ä¸æ¥ï¼Mercurialçå并è½åå°±è¿è¿å°è¶ è¿äºSVNï¼æ以å¨Mercurialä¸ï¼æå°ä¼åºç°äººå·¥å并çé®é¢ã
d) æ´å¿«çååºé度. ç±äºåç§æ¥å¸¸æä½é½æ¯å¨å¼å人åçæ¬æºè¿è¡ç, æ以ä¸ä»»ä½çCVCSç¸æ¯, DVCSçæä½ååºé度é½å°å¿«å¾å¤å.
å¦å¤ï¼å¯¹äºä¸ªäººé¡¹ç®æ¥è¯´ï¼å°¤å ¶éå使ç¨DVCSï¼å 为DVCS天ç¶å°æ é¿ç®¡çæ¬å°çæ°æ®ä»åºï¼ä¸åCVCSé£æ ·å¿ é¡»æ¶è®¾ä¸ä¸ªæå¡ç«¯ï¼ä¸ä¸ªå®¢æ·ç«¯ã
å æ¤æ»çæ¥è¯´ï¼åå¸å¼ç»æçMercurialå ·æSVNçææä¼ç¹ï¼èåæ¯SVNæ´å åçææã
ç®åçDVCSæ主è¦æMercurialåGit两款软件ï¼å ¶ä¸Gitçåä½è æ¯Linus大ç¥ï¼ç¨Cè¯è¨ç¼åï¼è¿è¡æ§è½ä¼äºMercurialï¼Mercurialæ¯ç¨Pythonåçï¼å¤©ç注å®æ§è½ä¸å¯è½æ¯Gitæ´å¿«ï¼ï¼ä½æ¯Linus以åæåçå¼åå¢é并ä¸æç®å¼åWindowsçæ¬çGitï¼æ以Gitæ¬èº«å¹¶ä¸æ¯æWindowsï¼åæ¥æäºä¸ä¸ªmsysgit项ç®å°Git移æ¤å°äºwindowså¹³å°ï¼å¹¶ä¸æäºå¼åäºä¸ä¸ªTortoiseGit客æ·ç«¯ï¼ä½¿å¾Gitå¨windowsä¸ä¹åå¾å®¹æ使ç¨äºï¼ä½æ¯å¨æ使ç¨çè¿ç¨ä¸ï¼è¿ç»åçå¤æ¬¡ä¸¥éçæ éï¼ææçå ¶å¨windowsä¸è¿ä¸å¤æçï¼å æ¤éç¨ä¸æä½ç³»ç»å ¼å®¹å®ç¾çMercurialã Mercurialè¿ä¸ªåè¯æ¯æ°´é¶çææï¼æ以Mercurialçå½ä»¤åéç¨äºæ°´é¶çåå¦å ç´ ç¬¦å·hgï¼è¿ä¹æ¯ä¸ºä»ä¹å®çå¾å½¢ç»ç«¯å«åTortoiseHgï¼èä¸æ¯TortoiseMercurialä¹ç±»çã
è¿éï¼/read/ï¼æä¸ä»½å®æ´çMercurialææ¡£ï¼è¯¦ç»æè¿°äºMercurialçåç§ç»èï¼ä¸è¿é´äºå ¶æ¯è±æçï¼æç®ååç½åä¸ä¸Mercurialçåºæ¬ç¨æ³ã
é¦å ï¼ä¸è½½å¹¶å®è£ ä¸ä¸ªTortoiseHg with Mercurial(mand hereï¼ è¿ä¼æå¼ä¸ä¸ªcmdå½ä»¤çªï¼è·¯å¾å°±æ¯å½åæ件夹ï¼ç´æ¥è¾å ¥å½ä»¤hg initï¼ å³å¯å®ææ°æ®ä»åºçå建ã
ï¼ä»¥åæä¹ä¸å欢ç¨å½ä»¤ï¼ä½æ¯ä½¿ç¨Mercurial以åï¼æåç°å ¶å®ç¨å½ä»¤å¹¶ä¸éº»ç¦ï¼å¾å¤æ¶åæ¯TortoiseHgæ¥å¾è¿è¦èæä¸äºï¼
image
å建æ°æ®ä»åºä»¥åï¼å次å³å»ï¼ ä¼åç°é¦å å¨ä¸çº§å³é®èåä¸å¢å äºHg Commité项ï¼èå项ä¸ååºç°äºä¸å¤§æå¯ç¨å½ä»¤ãè¿äºææ¶ä¸ç¨å»çå®ã
é便æ°å»ºä¸ä¸ªææ¬æ件ï¼ç¹å»hg commitï¼è¾å ¥ä¸ç¹æ³¨éï¼Mercurial强å¶è¦æ±æ¯æ¬¡commitå¿ é¡»å注éï¼ï¼ç¹å»æ交å³å¯ã
image
注æ左侧çæ件åè¡¨ï¼ å¿ é¡»å æä¸å¾ãå 为æ¯åMercurialæ°å¢æ件ï¼æä»¥å¿ é¡»å æ§è¡addå½ä»¤ï¼ ç¶åæè½commitï¼ä½ç°å¨è¿ä¸ªå¾å½¢çé¢ä¸ï¼å°±æ¯å å¾ä¸å·¦è¾¹ï¼åç¹commitã
å¦æ使ç¨å½ä»¤ï¼ååå«è¾å ¥ï¼
hg add
hg commit âm âsome comment hereâ
第ä¸è¡hg addä¼å°æææ°å¢çæ件æ 记为éè¦Mercurialè¿è¡è¿½è¸ªç®¡çï¼ç¬¬äºå¥åæ¯åæ°æ®ä»åºæ交修æ¹ã
è¿ééè¦æ³¨æçæ¯Updateå½ä»¤ãMercurialçUpdateä¸SVNå¨å®é ææä¸å·®å¼å·¨å¤§ãUpdateæ¯ç¨äºä½¿å·¥ä½ç®å½ä¸æ¬å°æ°æ®ä»åºä¹é´ä¿æä¸è´ãæ以ï¼å¦æä½ æ¯å人项ç®ï¼æ»æ¯å¨å·¥ä½ç®å½æ交修æ¹çè¯ï¼å®ä»¬è¯å®æ¯å®å ¨ä¸è´çï¼Updateå½ä»¤å°æ°¸è¿ä¸å¿ æ§è¡ãï¼è¿å¤§çº¦ä¹æ¯ä¸ºä»ä¹TortoiseHgæUpdateå½ä»¤ä½ä¸ºäºçº§å½ä»¤èä¸åCommité£æ ·æ¯ä¸çº§èåå½ä»¤ï¼ é£ä¹ä»ä¹æ¶åéè¦Updateï¼å çä¸ä¸pushåpullã
åå®æ们åæå建çä»åºä½äºD:\repo1ï¼ ç°å¨æ§è¡å½ä»¤hg clone d:\repo1 d:\repo2ï¼ æè å¨tortoisehgä¸ç¹å»cloneæ§è¡ç¸åºæä½ï¼å¾å½¢çé¢ä¸åä¸ä¸æªå¾ï¼å¾ç®åçæä½ï¼ï¼è¿æ ·å°±å建äºä¸ä¸ªæ°çä»åºrepo2ï¼ å®ä¸repo1æ¯å®å ¨ç¸åçãç°å¨årepo1æ交å¦å¤ä¸äºä¿®æ¹ï¼æ¾èæè§çï¼repo2ä»ç¶åçå¨cloneæ¶çç¶æï¼repo1çææ°ä¿®æ¹repo2并ä¸ç¥éã å¦æç°å¨å¸ærepo2ä¹è½æ´æ°å°repo1çææ°ç¶æï¼ åæ两ç§æä½æ¹å¼ï¼
1. Pushã Push顾åæä¹ï¼æ¯æ¨éçææï¼å°±æ¯ä»repo1ä¸æ¨éæ°æ®å°repo2ï¼ repo2 ä¸éè¦åä»»ä½å¨ä½ãå¨repo1ç®å½ä¸æ§è¡å½ä»¤hg push d:\repo2ã æè ç¹å»tortoisehgçSyncronizeï¼ å¨åæ¥çªå£ä¸ç¹å»pushå½ä»¤ï¼
image
ï¼è¿ç§æä½æå®å¨è§å¾è¿æ¯å½ä»¤æ¹ä¾¿ä¸äºãããï¼
å ¶ä¸ï¼pushå½ä»¤åé¢çè·¯å¾å¹¶ä¸æ¯å¿ é¡»çãæ¯ä¸ªæ°æ®ä»åºå¯ä»¥æä¸ä¸ªé»è®¤çè¿ç¨ä»åºï¼å¦æå¨repo1ä¸è®¾ç½®äºé»è®¤è¿ç¨ä»åºä¸ºrepo2ï¼ ååªéè¦æ§è¡hg push å°±å¯ä»¥äºãå½æ§è¡cloneå½ä»¤æ¶ï¼ä¼èªå¨ææ¥æºä»åºè®¾ä¸ºé»è®¤è¿ç¨ä»åºï¼æ以å¨repo2ä¸å¯ä»¥ç´æ¥æ§è¡hg pushæhg pullï¼ ä¼èªå¨å°repo1ä¸åæ¥æ°æ®ã
å 为repo1并ä¸ç¥érepo2çåå¨ï¼ æ以å¦æéè¦æå¨è®¾ç½®é»è®¤è¿ç¨ä»åºï¼å¦ä¸è¿æ ·æä½ï¼
ç¹å»å³é®â>TortoiseHgâ>Repository settings,
image
ç¹å»Edit file, å¦å¾æ示, ä¿®æ¹default为éè¦æå®çè·¯å¾å³å¯.
ä¿®æ¹å®æ以å,å³å¯ç´æ¥æ§è¡hg push èä¸ç¨åæhg push d:\repo2äº.
2. Pull. Pullæ¯æåçææ, å³è¢«æ´æ°çä»åºä¸»å¨ä»è¿ç¨ä»åºæåæ°æ®. å¨æ¬ä¾ä¸, å°repo2çç®å½ä¸æ§è¡hg pullå³å¯. å 为repo2æ¯ä»repo1 cloneæ¥ç, æ以repo2å·²ç»èªå¨ærepo1设置é»è®¤è¿ç¨ä»åº, ä¸éè¦ååhg pull d:\repo1äº.
æ以,æ 论æ¯ä»repo1端push, è¿æ¯ä»repo2端pull, é½å¯ä»¥è¾¾å°æ´æ°repo2æ°æ®ä»åºçç®ç.
ç¶èéè¦æ³¨æçæ¯, æ 论æ¯pushè¿æ¯pull, é½åªæ´æ°æ°æ®ä»åº, èä¸æ´æ°å·¥ä½ç®å½.
è®°ä½è¿ä¸ç¹é常éè¦, å¦åå¯è½ç»å¸¸ä¼è¿·æ为ä»ä¹ä¸é¢æä¸ç¬¦. pushæpullä¹å, repo2çæ°æ®ä»åºä¸å·¥ä½ç®å½å·²ç»ä¸ç¬¦, è¿æ¶å°±éè¦å¨repo2ç®å½ä¸æ§è¡hg updateå½ä»¤, å³å¯å°å·¥ä½ç®å½æ´æ°å°ä¸æ°æ®ä»åºä¸è´.
å½åSVNé£æ ·ä½¿ç¨è¿ç¨æå¡å¨ä½ä¸ºä¸»æºæ¶, æ¯æ¬¡Pullåå¯ä»¥è¯å®æ¯è¦æ§è¡updateç, è¿æ ·ä¸¤æ¬¡æä½æ¾ç¶å¸¦æ¥ä¸ä¾¿, å¨TortoiseHgä¸, å·²ç»éæäºè¿æ ·çå½ä»¤, é¦å å³é®â>TortoiseHgâ>Syncronize, æå¼åæ¥çªå£,
image
ç¹å»Post Pull, å¨å¼¹åºçå°çªå£ä¸éæ©Update, è¿æ ·æ¯æ¬¡pullä¹åå°±ä¼ç«å³æ§è¡updateäº.
æè å¨é¡¹ç®çæ ¹ç®å½ä¸åä¸ä¸ªæ¹å¤çæ件, å æ¬ä»¥ä¸ä¸¤è¡å³å¯:
hg pull
hg update
以åæ¯æ¬¡éè¦è·åæ´æ°æ¶, åå»ä¸ä¸è¿ä¸ªæ¹å¤çå³å¯, æè§å¾è¿æ¯å½ä»¤æ¹ä¾¿â¦â¦
以ä¸ç®åç½åäºMercurialçåºæ¬ç¨æ³, 对äºæ¥è¯¢åå²ä¿®æ¹çæä½, TortoiseHgçèåå·²ç»é常ç®å, ä¸SVNä¹æ²¡æä»ä¹å·®å«, èªè¡ç¹å»çä¸ä¸å³å¯.
å ³äºå¨ä¸¤å°çµèä¹é´ä¼ éæ°æ®ï¼Mercurialèªå¸¦äºä¸ä¸ªç®åçServeå½ä»¤ï¼ä¾å¦å¨d:\repo1ç®å½ä¸æ§è¡å½ä»¤hg serverï¼ ä¼ç«å³å¯å¨ä¸ä¸ªé»è®¤å¨ç«¯å£çå¬çæå¡è¿ç¨ï¼è¿ä¸ªå½ä»¤ä¼è¿åä¸ä¸ªurlå°åï¼å¦ä¸å°çµèå¯ä»¥ç¨hg clone <url> local-path çå½¢å¼å¤å¶æ¬æºçrepo1ä»åºï¼ä½æ¯è¿ä¸ªserveå½ä»¤æ¾ç¶åªæ¯ä¸ä¸ªé常ç®åç临æ¶éå¾ï¼å¦æè¦é ç½®ä¸å°ä½ä¸ºæå¡å¨çä¸å¤®ä»åºï¼å½ç¶å°±ä¸è½ä» ä» ä½¿ç¨serveå½ä»¤äºï¼èæ¯åºè¯¥ä½¿ç¨IISæå ¶å®web serverï¼ä¸ä¸ç¯å°±ä»ç»å¦ä½å¨IISä¸æ¶è®¾ä¸ä¸ªMercurialçWeb Server,请åé åå¸å¼çæ¬æ§å¶ç³»ç»Mercurial
Ubuntu下编译OpenJDK9
为了在Ubuntu下编译OpenJDK9,首先安装VMware Workstation Pro和Ubuntu ..2 LTS,源码确保系统干净无其他应用。源码
接着,源码通过Mercurial(hg)获取OpenJDK9的源码ccp标定源码源代码,安装并下载hg,源码flash修改源码然后访问OpenJDK官网获取源代码的源码下载地址。按照指导,源码使用hg下载源代码,源码注意要执行get_source.sh脚本。源码
在下载过程中可能会遇到问题,源码如“exited abnormally”或“stream ended unexpectedly”,源码此时可重新执行下载脚本。源码kurento源码编译完成下载后,源码会生成约1GB的源码文件,包含大量.hg文件夹。
阅读OpenJDK官网提供的servlet 示例源码JDK 9 Build README,以了解编译步骤。在配置阶段,应避免使用系统自带的OpenJDK8作为Boot JDK,推荐手动下载安装Oracle的涂鸦网站源码Java 8版本以确保稳定性。
访问Oracle官网下载Java 8,解压后将其放置在指定目录。配置编译环境时,可能会遇到缺少X库的问题,通过执行特定脚本解决。在多次尝试和调整后,完成配置。
使用make images命令开始编译过程,整个编译耗时约8分钟。编译完成后,生成的build文件夹包含了所需JDK文件。将整个jdk文件夹复制到指定目录,并进行简单测试以验证编译成功。
对于Mac和Windows用户,OpenJDK9的编译流程类似,只需根据各自操作系统的特定需求进行调整。