충동알림창에서 Start MergeTool to resolve conflicts을 선택하여 MergeTool을 통해 수정하거나, 충돌이 일어난 파일을 수동을 찾아 직접 수정하여 충돌 해결


Project의 Team Menu->Add to Index 선택 


Project의 Team Menu -> Rebase -> Continue Rebaes 선택 



Posted by 빨강토끼

어제 저에게 제목과 같은 일이 벌어졌습니다.

하나의 SVN에 여러개의 프로젝트를 등록해서 사용하고 있고

PC에서는 GIT를 사용하고 있었습니다.

여러 프로젝트를 작업하다가

그중 하나의 프로젝트를 commit 후 SVN 에 DCOMMIT을 했는데

중간에 간간히 뜨던 팝업을 그동안 그냥 무심코 Yes 를 클릭했었는데

무심코 마지막으로 뜨던 팝업에 No를 클릭했더니

commit 하지 않았던 프로젝트의 소스가 원래대로(commit 했던 상태) 돌아와버린것입니다.

우째 이런일이....ㅜㅜ;


그래서 정리해봤습니다.

작업한 사본이 명확하지 않습니다. 변경된 사항을 숨길까요?


No를 클릭하면 DCOMMIT 은 진행되지 않습니다.

Yes 를 누르면 DCOMMIT이 이루어지는데 그중간에 보면 commit 하지 않은 다른 소스들이 원래대로 돌아와있는 것을

확인할수있습니다. (후덜덜한 상태입니다....)





DCOMMIT 을 마치고 Close 버튼을 누르면



DCOMMIT 전에 숨겨놓은 변경사항을 다시 돌릴까요?

여기서 반드시 Yes 를 클릭해야됩니다.

No 를 선택하는 순간...

지옥의 문이 열릴겁니다. (아~ 디아블로 3 하고 싶다.)


(추가) 숨겨놓은 변경사항들을 다시 살리는 법이 있습니다.

마우스오른쪽버튼을 누르면 Stash save, Stash Pop, Stash List 라고 있습니다.

이곳에서 Stash List 를 확인후에 Stash Pop 을 이용하여 복구할 수 있습니다.^^


그리고 만일 DCOMMIT 하지 않고 commit 만 한 상태로

다른 프로젝트를 commit 하고 DCOMMIT 하면 기존에 commit 했던 부분도 같이 DCOMMIT 됩니다.

어떻게 생각하면 당연한 일이지만,

혹시 DCOMMIT 을 원하지 않았던 부분도 같이 DCOMMIT 되는 결과가 나오는 것이므로 주의 하세요.



Posted by 빨강토끼

저의 경우는 이렇습니다.

개인적으로 작업을 할때에 GIT가 편하고 유용한데 회사에서는 아직 SVN을 쓰고 있을때

(다른 경우는 생각을 안해봤습니다. 다른분들은 어떤경우인가요?)


GIT에 대한 강좌는 엄청 많지만 너무 이론적인 것이 많고 일반인이 그저

쉽게 TortoiseGit 등을 사용하는 경우에 참고할 수 있는 블로그는 개인적으로


http://blog.naver.com/empty_wagon?Redirect=Log&logNo=20144797011


이곳을 추천합니다.


저는 제가 사용하면서 했던것들을 정리해보도록 하겠습니다.


일단 회사시스템이 SVN이였습니다.

저는 GIT를 쓰고 싶었구요.


관리자나 아니면 직접 SVN서버에 저장소를 만들어놓았을경우에

그리고 그곳에 이미 소스들이 있을 경우에 어떻게 소스들을 받냐면요.


소스를 다운받을 폴더에서 마우스 오른쪽 버튼을 누르면



Git Clone 을 선택합니다.


SVN URL 을 입력하고 From SVN Repository 를 선택하고 OK 를 클릭합니다.


그런데 만일 전체 소스가 아니고 SVN에 올라와 있는 일부 디렉토리의 소스들만 필요한 경우가 있습니다.

특히 SVN는 그 기능이 비교적 단순해서 매번 여러개의 SVN Repository 를 만들지 않고

팀별 혹은 문서, 폴더 , 기타등등을 몰아서 하나의 Repository에 넣어놓는 경우가 종종있었습니다.


그럴경우에는


SVN/trunk/디렉토리경로.... 를 입력하고


위와 같이 Trunk, Tags, Branch 의 모든 체크박스를 언체크해주면 됩니다.


이번엔 필요한 작업을 마친후에 SVN에 등록하는 법을 설명하겠습니다.

작업중에 틈틈히 GIT에 commit 를 해주시고

마지막 commit 후에


DCommit 버튼을 클릭하면됩니다.




둘다 상관없지만 저는 Normal SVN Commit 를 사용합니다.


그럼 SVN에 Commit이 됩니다.


다른 방법으로는 작업한 폴더에서 마우스 오른쪽 버튼을 누르면

나오는 GIT 메뉴에서

SVN DCommit.. 을 선택합니다.

그이후는 전과 같습니다.


다음음 다른사람이 SVN에 Commit 한 소스를 update 하는 방법입니다.

마우스 오른쪽 버튼을 눌러서 GIT메뉴중에 

SVN Rebase.. 를 선택합니다.


이상입니다. ㅎㅎ


Posted by 빨강토끼
TAG GIT-SVN
rsync 에는 ssh 를 이용하여 원격서버에 접속하여 동기화를 하는 기능이 있습니다.

대략의 내용은 아래와 같습니다.
rsync -azrtv --delete --stats -e "ssh -i /root/.ssh/개인키" 원본서버계정@원본서버주소:원본경로/ /백업경로/

그럼. 자세히...

일단 접속하기 위한 원격주소의 계정 정보가 필요합니다.
즉 ssh 로 원격서버로 로그인을 하는것입니다.
하지만 crontab을 이용하여 자동으로 스케쥴링을 하려면은 암호를 입력하는 단계가 걸림돌이죠
바로 자동로그인을 해야된다는 의미입니다.

그러기위해서는 ssh 키를 이용하는데
먼저 키를 생성합니다. 주의 할점은 개인키를 가진쪽이 공개키를 가진쪽으로 접속한다는 것입니다.
즉... 접속대상서버가 아니라 접속을 시도하는 백업서버에서 키를 만든다는 것입니다.
[~]$ ssh-keygen -d -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/inkaftp/.ssh/id_rsa):
Created directory '/home/inkaftp/.ssh'.
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /home/inkaftp/.ssh/id_rsa.
Your public key has been saved in /home/inkaftp/.ssh/id_rsa.pub.
The key fingerprint is:
11:ce:7a:2d:60:0d:09:b3:2a:8b:3f:de:9a:8f:96:20 root@nhn.com

아무것도 입력하지않고 엔터만 두번누르면 RSA 방식의 키가 생성됩니다.

.ssh/id_rsa
.ssh/id_rsa.pub

위와 같은 파일이 생성된것을 발견할 수 있습니다.

그다음으로는 공개키를 전송합니다.
#scp /root/.ssh/id_rsa.pub 원본서버계정@원본서버아이피:~/.ssh/authorized_keys
원본서버계정에 .ssh 디렉토리가 없으면 미리 만들어둬야합니다.
패스워드를 입력하면 끝

(하지만 전 scp 가 잘되지 않아서 그냥...ftp 로 전송했습니다.)

그럼 접속이 잘되는지 확인해봅시다.
#ssh -i /root/.ssh/id_rsa 원본서버계정@원본서버아이피
RSA key fingerprint is 03:c0:4d:25:a6:5d:0c:41:70:a7:11:0e:f7:12:ee:c8.
Are you sure you want to continue connecting (yes/no)? yes <ENTER>
접속이 잘된다면 성공

이제 본격적으로 rsync를 사용해봅시다.
rsync -azrtv --delete --stats -e "ssh -i /root/.ssh/id_rsa" 원본서버계정@원본서버주소:원본경로/ /백업경로/

-a : 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v : 자세한 정보출력
-z : 전송시 압축
-r : 하위디렉토리포함
-e ssh : ssh를 이용한 rsync 동기화
--delete : 서버동기화후 원본에서 파일이 삭제되면 백업에서도 파일을 삭제
--stats : 결과출력

백업이 잘되면 자동화를 위하여 cron에 등록합니다.
먼저 rsync 명령을 실행할 .sh 파일을 만듭니다.
# vi ./rsync_cron.sh
rsync -azrtv --delete --stats -e "ssh -i /root/.ssh/id_rsa" 원본서버계정@원본서버주소:원본경로/ /백업경로/

파일을 만들고나서는 실행권한을 줍니다.
#chmod 755 ./rsync_cron.sh

crontab 을 실행합니다.
#crontab -e
30 4 * * * /root/rsync_cron.sh

참조
http://blog.naver.com/forioso?Redirect=Log&logNo=10025992292
Posted by 빨강토끼
TAG cron, rsync, ssh
솔찍히 조금만 구글링을 하면 보다더 자세히 설명해주고 있는곳이 많지만 제가 필요할때 마다 참조하려고 개인적정리입니다. (즉 대충... 자세한 설명은 생략)

1. redmine DB 백업
mysqldump -uroot -p비밀번호 redmine디비명 | gzip > /백업경로/redmine_`date +%y_%m_%d`.gz

2. redmine 첨부파일백업
rsync -avz --delete /redmine설치경로/files /백업경로
or
rsync -avz --delete -e ssh /redmine설치경로/files 사용자계정@서버아이피:/원격의백업경로

-a : 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존
-v : 자세한 정보출력
-z : 전송시 압축
-r : 하위디렉토리포함
-e ssh : ssh를 이용한 rsync 동기화
--delete 서버동기화후 원본에서 파일이 삭제되면 백업에서도 파일을 삭제

3. 일정날짜가 지난 백업파일을 삭제
find /백업경로 -name *.gz -mtime +90 -delete

4. 위의 과정을 진행하는 sh 파일작성
vim bkscript.sh

5. crontab 을 사용하여 주기별로 sh 파일을 실행
#분 시 일 월 요일(월=1 화=2 ... 일=7)
0 6 * * 6 /백업경로/bkscript.sh

참조
http://khtinsoft.egloos.com/379902
http://blog.nul.kr/246
Posted by 빨강토끼

maven 으로 jar 를 생성하여 배포할때 종속적인(dependency) 라이브라리들이 실행시 필요합니다.

war 프로젝트는 WEB-INF 라는 폴더아래로 필요한것들을 넣어주지만 jar에서는 일일히 dependency로 추가된
라이브러리들을 처리하는것이 무척 귀찮고 막막합니다.

하나씩 잡아줘보지만 한두개도 아니고....
이럴땐 2가지 방법이 있습니다.

첫번째는 dependency를 따로 폴더안으로 모두 복사해오고 META-INF/MENIFEST.MF를 수정하는 것입니다.
아래와 같이 플러그인을 추가하고 goal로 install을 실행하면 모든 dependency 들이 lib안으로 복사하여 모으고 jar파일생성시  META-INF/MENIFEST.MF를 수정합니다.




두번째방법은 jar 안에 모든 dependency를 포함시키는 것입니다. jar하나로 모든 라이브러리들이 포함되어 실행이 되는 구조입니다. 당연히 파일크기가 커지겠지요.



그리고
maven assembly:assembly 라고 콘솔에서 실행하면
abc-0.0.1-SNAPSHOT.jar
abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar

위와 같이 라이브러리가 포함된 jar와 일반 jar 가 생성된것이 보입니다.

참조

http://entireboy.egloos.com/4615383
http://redrebel.tistory.com/entry/maven-으로-생성한-jar-파일이-실행이-안될때-NullPointerException


Posted by 빨강토끼


위와 같은 에러가 나오면서 maven 에서 mvn install 을 통해서 생성한 jar 파일이 실행이 안되는 경우가 있습니다.
이경우에는 실행가능한 jar를 생성할때 실행할 mainClass 를 지정하지 않아서 생기는 문제입니다.

실행가능한 JAR 를 만드는데 아래와 같은 단계를 추천합니다.

1. JAR 의 MAINFEST.MF 파일에서 main 클래스를 정의합니다. (MAINFEST.MF 파일을 Maven에서 애플래케이션을 패키징할때 생성되는 파일입니다.)
2. 프로젝트에 종속된 모든 라이브러리를 찾습니다.
3. 애플리케이션에서 해당 라이브러리를 참조할수 있도록 MAINFEST.MF 파일에 포함시킵니다.

위의 작업을 수동으로 직접할 수 도 있지만 maven-jar-plugin 과 maven-dependency-plugin 이라는 maven 플러그인을 사용하여 효율적으로 수행할 수 있습니다.

maven-jar-plugin
pom.xml 파일의 <build></build> 안에 아래내용을 추가합니다.



mainClass 에 실행할 메인클래스를 지정합니다.

maven-dependency-plugin

pom.xml 파일의 <build></build> 안에 아래내용을 추가합니다.


위와 같이 내용을 추가하였으면 다시 jar를 만들고 실행해 보면 실행이 될겁니다.

참조 :
https://www.ibm.com/developerworks/kr/library/j-5things13/
Posted by 빨강토끼

Maven으로 PMD check 중에
[WARNING] Error while parsing xx/xx.java: Can't use generics unless running in JDK 1.5 mode!
라는 메시지가 떠서 구글을 검색해봤는데

<properties> 

   <targetJdk>1.6</targetJdk> 
</properties> 


이것을 추가 하라고 나옵니다.
Posted by 빨강토끼
TAG maven, PMD
리눅스에서 jenkins 를 사용하고 있는데
Jenkins의 새버젼이 나왔다고해서 업데이트를 하려고 하는데 하는 방법을 몰라 인터넷을 찾아보니 보이지 않았다.
사실알고보니 처음에 jenkins.war 가 있던 곳(java -jar jenkins.war)에 새로운 jenkins를 복사하면됩니다.
.
.
.
Posted by 빨강토끼

메일설정(gmail)
SMTP server : smtp.gmail.com
Default user e-mail suffix : 비움
System Admin E-mail Address : gmail address

(체크) use SMTP Authentication
User Name : gmail address(전체주소)
Passwork : 비밀번호
Use SSL : 체크
SMTP Port : 465
Charset : UTF-8

Posted by 빨강토끼