2011年5月20日

How to upload the new or modified file to git server

在Git管理系統下,檔案分為四種狀態,untracked、unmodeified、modified以及staged。
此四種狀態可以使用git status指令來觀察,現在專案下的所有資料的狀態。


所有的指令所產生的動作,皆在Client端執行,直到git push這個指令,才是真正的上傳至server端。以下將把上傳之整個流程寫出。

新增檔案與上傳至server:

1.在專案資料夾,新增一個檔案之後,輸入git status,會出現以下畫面
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# test
nothing added to commit but untracked files present (use "git add" to track)

我們會看到Untracked files:,就字義上來說即為未追蹤之檔案,也就是說此檔案加入專案。

2.輸入git add test,並在次輸入git status。

# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# new file: test
#

Changes to be committed狀態則代表了此檔案已經加入專案了,現在檔案改變的部分是儲存在Client端的暫存區,還需新增註解之後,方可使用git push指令,將檔案upload到server上。

3.輸入git commit -m "this file is test",將檔案註解起來,並執行git status看現在檔案之狀態。
將會看到以下畫面

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

說明了 你已經註解了檔案,並指出跟原始檔差了一個註解。

4.執行git push將test檔案上傳至server,並且執行git status。

# On branch master
nothing to commit (working directory clean)

此時所顯示之結果,代表與server端同步。

至此,已經完成了新增檔案與上傳至server的動作。


修改與上傳檔案:


1.接下來,我們試著修改test檔案,新增一些內容,並執行git status,觀察test檔案狀態。

# On branch master
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: test
#
no changes added to commit (use "git add" and/or "git commit -a")

出現了一個新狀態,Changed but not updated:很明白的指出test被修改過,但是尚未updated,在此的updated所指的試client端的佔存區,並非指server。

2.執行git add test,並一樣輸入git status,觀察test檔案狀態。
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: test
#
可以看到git指示要我們為這個檔案加入註解。

3.輸入git commit -m "test modified",並輸入git status。
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

看到跟server之最新版本相差一個註解。

4.最後已git push上傳至server,至此完成修改檔案與上傳至server之動作。

Read more...

Git 基本指令

git add:
新增/修改之檔案


git status
查詢專案資料夾下,所有檔案的狀態

git commit
註解,將修改後的檔案,新增註解。

git push
將註解過的檔案從暫存區上傳至 server

git pull
從server下載專案檔

git clone
從server 複製整個專案。此指令用於在client端,完全無此專案資料時。

Read more...

2011年5月12日

Git Server 簡易架設 - 使用SSH

這邊記錄了Git Server 利用SSH協定以及權限的架設流程
此方法較為快速,如果原本的Server上SSH是可以溝通的,那不到20分鐘就可以完成架設過程
但是缺點也是相對的明顯,因為利用了SSH權限,所以在專案的權限管理會有些麻煩,必須使用到Linux user的權限的權限管理。

P.S此篇目前只有可以run的流程而已,以後會新增更多有關git的文章

Server O.S: Ubuntu Server 10.04
Client O.S: Ubuntu Deaktop 10.04



所需條件:
1.當然最少區域網路要通(廢話 XD)
2.Terminal可以以SSH協定溝通



以下為Server端

第一步:
#apt-get install git-core
此為安裝git package,在Ubuntu系統需在最前方加上sudo指令,以super user權限執行

第二步:
#adduser git
新增git user

第三步:
#mkdir /home/git/test.git
在git家目錄下,新增專案資料夾,在此為test.git

第四步:
在test.git底下執行
#git --bare init

init為新增一個程式庫 或是 重新初始一個已經存在的程式庫
bare為指定現在工作的程式庫。


以下為client:

首先為push檔案的流程

第一步:
在要存放project的資料夾下,執行
#git init
新增.git資料夾
client 端所有git相關資料皆會在.git資料夾內,此資料夾為隱藏檔,須以ls -al指令才可看到

第二步:
#git add filename
新增要管理的檔案名稱

第三步:
#git commit -m '註解'
增加此專案之註解,註解須在' '內

第四步:
#git remote add origin ssh://git@Server IP Address/home/git/test.git
設定上傳server IP、使用者名稱 以及資料夾位置
在此使用者名稱為git 資料夾位置為 /home/address/git/test.git
Server IP Address則須看自己Server IP
如果輸入錯誤,可以至/home/git/test.git/.git/config做修改



第五步
#git push origin master
將設定管理的檔案上傳,在此會要求輸入密碼,密碼即為當初新增使用者git的密碼



最後使用
#git clone ssh://git@Server IP Address/home/git/test.git
來將上傳完成的檔案下載,已驗證是否成功

P.S client端步驟為第一次新增管理專案才需執行 之後僅需使用git push、git commit、git pull、git add等指令即可操作


Read more...

2010年10月26日

Uimage header format

U-Image header (total Size 40 byte)
defined in u-boot/include/image.h


address


0x00~0x03 Magic number 0x27051956
0x04~0x07 Header CRC Checksum
0x08~0x0B Creation Timestamp
0x0C~0x0F Data Time
0x10~0x13 Loader Address
0x14~0x17 Entry point address
0x18~0x1B Data CRC Checksum
0x1C OS type
0x1d CPU ARCH
0x1E Image Type
0x1F Compression type 0x00(non) , 0x01(gzip) , 0x02(bzip2)
0x20~0x39 Image name

Read more...

2010年9月6日

Android Need Packet

在建置android開發環境時,最麻煩的地方在於一堆package要安裝,其實大部分的package,只需使用#apt-get install就可以安裝完成,唯獨 sun-java5-jdk這個,我一直無法使用apt-get來順利的安裝,也嘗試過網路上一些達人的方式,例如新增apt-get的source.list,但結果....當然是殘念,不然也不會有這篇網誌嚕....以下將列出所有所需封包以及小弟我安裝sun-java5-jdk package的方式。

所需package如下:

git-core
gnupg
sun-java5-jdk
flex
bison
gperf
libsdl-dev
libesd0-dev
libwxgtk2.6-dev
build-essential
zip
curl
valgrind
libreadline5-dev

至於sun-java5-jdk如何安裝

第一步
http://www.oracle.com/technetwork/java/archive-139210.html選擇所需的版本
接下來按照網頁所提示的步驟 一一選擇

第二步
執行所下載的檔案,在這小弟是下載自解壓縮的.bin
#sudo ./jdk-1_5_0_22-linux-i586.bin

第三步
將解壓縮出來的資料夾,加入path中

#PATH=$PATH:/usr/lib/jdk1.5.0_22/bin

P.S 此步驟將因解壓縮資料夾所在路徑不同 會有所改變

Read more...

2008年6月12日

無發言會議

PM :SoftWare 是你負責的,應該沒有問題吧?
我 :..........@@?( 啥? )
某同事 :SoftWare 沒問題才怪,問題才多勒!!!
我 :..........一.一( 真狠 一點面子也不給嗎? )
經理 :對阿 硬體都沒看到 這個問題大不大?
我 :..........( 那叫我近來開會做啥 ?)
經理 :你回去忙你的吧!!!
我 :那我先出去了.......

真是暈阿......

Read more...

2008年6月11日

8051/8052暫存器

偷懶了許多天,該是好好充實一下網誌內容的時候了,今天來補充一下8051/8052的各個暫存器吧!!蝦米?!為啥不是ARM或其他32位元的MCU( 註一 ) ?而是8051/8052呢?8051/8052不是很久的產品了嗎?老實說是因為我以前上課不專心,所以現在遭到報應了XD....其實在現在許多產品還是使用8051/8052或是其變種來作MCU ,為啥?因為它便宜唄!!技術也成熟!!加上它有許多變種的存在,不失為一個好用的MCU,以下為8051/8052的各個暫存器:

1.ACC (累加器) : 位址 E0H

通常寫為ACC或是A表示,8051/8052大部分的運算都透過ACC來儲存運算結果,作資料的轉移或跳要判斷,算是功能最多的一個暫存器。

2.B暫存器 : 位址 F0H
此暫存器主要用於乘法、除法指令,再乘法運算時,存放乘積的高位元,在除法運算時放餘數。不做乘除法指令時,也可以作為一般暫存器。

3.PSW ( Program Status Word ) : 位址 D0H
程式狀態字暫存器,紀錄程式運作時,CPU的各種狀態訊息。我們可以用指令改變PSW的值,藉以控制CPU執行的狀態。

4.SP (Stack Pointer) : 位址 81H
堆疊指標暫存器為8位元暫存器,所以堆疊區最大容量為 2^8 = 256Byte,當程式要執行PUSH或是CALL的指令時,堆疊指標的執會先加1,再將資料推入到堆疊區所指的暫存區中存放。堆疊區的位置可以由使用者決定再內部記憶體( RAM )的任何位址。當8051/8052被Reset時,堆疊指標的位址會指為07H,所以第一筆資料將存入08H,而08H剛好為工作暫存器庫( RB1) 的 第一個暫存器 (R0)的位址。為了讓RB1的正常運作,應該接堆疊指標指向使用者RAM 的區域 ( 30H ~ 7F)。

5. DPTR (Data Pointer Register ) : 位址 82H 83H
資料指標暫存器是一個16位元的暫存器,它是由兩個8位元暫存器所組成。高位元組是DPH,低位元組是DPL。DRTR作為16位元暫存器時,可以定址外部記憶體或外部記憶體的位址。當作為8位元暫存器時,視為兩個一般暫存器。

6. RB0、RB1、RB2、RB3工作暫存器共有四組工作暫存器庫。每個暫存器庫共有8個8位元暫存器,分別為R0、R1、R2、R3、R4、R5、R6、R7。

7.SBUF( Serial Buffer ) : 位址99H
串列資料緩衝器,實際上為兩個暫存器所組成。一個是傳送時的資料緩衝器、另一個為接收時的資料緩衝器。當我們把一個位元組的資料寫入SBUF時,此時SBUF就當做傳送的資料緩衝器,非同步接收傳送器 ( UART串列傳輸 ),就會把這個資料轉換成串列資料,透過TXD這條線傳送出去,若是接收資料,此時SBUF就當做接收的資料緩衝器。

8.P0 P1 P2 P3 : 位址 80H 90H A0H B0H
四個輸出/輸入埠是8051/8052與外界溝通的主要管道。

9.TH0~TH2 TL0~TL2 : 位址 8CH 8DH CDH 8AH 8BH CCH
計時/計數暫存器 在8051中只有TH0 TH1 (計時/計數暫存器高位元組)及TL0 TL1 (計時/計數暫存器低位元組)這兩組計時/計數暫存器。8052則多了一組TH2 TL2。這三組暫存器維16位元的暫存器,名稱分別為Timer0 Timer1 Timer2,計時/計數暫存器又簡稱為計時/計數器或是計數器。

10.RCAP2H RCAP2L ( Capture Register ) : 位址 CAH
捕取式暫存器,當8052 的 Timer2工作模式為捕取模式時 ( Capture Mode ),當T2EX腳位的輸入信號是高電位或是正緣觸發時,TH2 TL2的內容將複製到這兩個暫存器中,當TH2 TL2設定成 16位元自動載入模式(Auto - Reload - Mode)時候,TH2 TL2的重新載入值就是保存在這兩個暫存器中。

11.IP ( Interrupt Priority Control ) : 位址 B8H
中斷優先順序暫存器。

12.IE ( Interrupt Enable Control ) : 位址 A8H
中斷致能控制暫存器。

13.TMOD ( Timer/Counter Modes ) : 位址 89H
計時/計數模式控制。控制計時/計數器0與計時/計數器1 工作模式。

14.TCON ( Timer/Counter Control ) : 位址 88H
計時/計數器控制暫存器。控制計時/計數器0與計時/計數器1 工作狀態。

15.TCON2 ( Timer/Counter 2 Control ) : 位址 C8H
計時/計數器2控制暫存器。控制計時/計數器2工作模式。

16.SCON ( Serial Control ) : 位址 98H
串列埠控制暫存器。控制非同步接收傳送器(UART)的工作模式。

17.PCON(電源控制暫存器) 位址 87H
控制電源工作模式。


註一:Micro Control Unit。我們稱作單晶片,對岸稱作單片機。根據匯流排的寬度,單晶片又分為4位元、8位元、16位元及32位元單晶片。4位元單晶片多用於家電控制中;8位元、16位元單晶片主要用於一般的控制領域,通常不使用作業系統;32位元單晶片用於網路操作、多媒體處理等比較複雜的處理程式,通常要使用嵌入式作業系統。

Read more...