정리

Version Control with Subversion (for Subversion 1.7)

저장소/잡다한거

Version Control with Subversion

for Subversion 1.7


http://svnbook.red-bean.com/en/1.7/svn-book.html

ADS(Alternate Data Streams)

저장소/잡다한거


익스플로러를 통해 다운로드 받은 실행 파일을 ShellExecute(Ex) API 를 통해 실행했을 때 실패 발생.

GetLastError의 값이 1223으로 나옴.

//
// MessageId: ERROR_CANCELLED
//
// MessageText:
//
// The operation was canceled by the user.
//
#define ERROR_CANCELLED                  1223L


탐색기에서 파일을 실행하면 다음과 같이 경고창이 뜬다.



파일 속성을 보면 다음과 같이 보안 항목이 표된다.



뭔지 찾아보니 NTFS의 ADS(Alternate Data Streams)와 관련이 있다고 한다.

다음은 ADS에 대한 정리가 잘 되어있는 링크니 참고해서 보자.


파일 열기 보안 경고

http://snoopybox.co.kr/1552


Hidden Threat: Alternate Data Streams

http://coinz.tistory.com/115


Data Hiding 기법 - ADS 생성/실행/탐지


Fork(file system)

Enumerating Alternate Data Streams

Manipulate Alternate Data Streams

http://www.codeproject.com/Articles/9387/Manipulate-Alternate-Data-Streams



TCP flag(URG, ACK, PSH, RST, SYN, FIN)

저장소/잡다한거

출처 : http://pmj0403.tistory.com/entry/TCP-flagURG-ACK-PSH-RST-SYN-FIN



TCP flag(URG, ACK, PSH, RST, SYN, FIN)

TCP(Transmission Control Protocol)는 3-WAY Handshake 방식을 통해 두 지점 간에 세션을 연결하여 통신을 시작 하고 4-WAY Handshake를 통해 세션을 종료하여 통신을 종료 합니다.

이러한 세션연결과 해제 이외에도 데이터를 전송하거나 거부, 세션 종료 같은 기능이 패킷의 FLAG 값에 따라 달라지게 되는데, TCP FLAG는 기본적으로 6 가지로 구성됩니다.

 

FLAG 순서

+-----+-----+-----+----+-----+----+

| URG  | ACK | PSH | RST | SYN | FIN |

+-----+-----+-----+----+-----+----+

각각 1비트로 TCP 세그먼트 필드 안에 cONTROL BIT 또는 FLAG BIT 로 정의 되어 있다.

 

 

SYN(Synchronization:동기화) - S : 연결 요청 플래그

TCP 에서 세션을 성립할 때  가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 초기에 시퀀스 번호를 보내게 된다.

 

ACK(Acknowledgement) - Ack : 응답

상대방으로부터 패킷을 받았다는 걸 알려주는 패킷, 다른 플래그와 같이 출력되는 경우도 있습니다.
받는 사람이 보낸 사람 시퀀스 번호에 TCP 계층에서 길이 또는 데이터 양을 더한 것과 같은 ACK를 보냅니다.(일반적으로 +1 하여 보냄) ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송한다.

 

RST(Reset) - R : 제 연결 종료
재설정(Reset)을 하는 과정이며 양방향에서 동시에 일어나는 중단 작업이다. 비 정상적인 세션 연결 끊기에 해당한다. 이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시 연결을 끊고자 할 때 사용한다.

 

PSH(Push) - P : 밀어넣기

TELNET 과 같은 상호작용이 중요한 프로토콜의 경우 빠른 응답이 중요한데, 이 때 받은 데이터를 즉시 목적지인 OSI 7 Layer 의 Application 계층으로 전송하도록 하는 FLAG. 대화형 트랙픽에 사용되는 것으로 버퍼가 채워지기를 기다리지 않고 데이터를 전달한다. 데이터는 버퍼링 없이 바로 위 계층이 아닌 7 계층의 응용프로그램으로 바로 전달한다.

 

URG(Urgent) - U : 긴급 데이터
Urgent pointer 유효한 것인지를 나타낸다. Urgent pointer란 전송하는 데이터 중에서 긴급히 전당해야 할 내용이 있을 경우에 사용한다. 긴급한 데이터는 다른 데이터에 비해 우선순위가 높아야 한다. 
 EX) ping 명령어 실행 도중 Ctrl+c 입력

 

FIN(Finish) - F : 연결 종료 요청
세션 연결을 종료시킬 때 사용되며 더이상 전송할 데이터가 없음을 나타낸다.

 

그 외

 

Placeholder             
패킷의 플래그에 SYN, FINISH, RESET, PUSH등의 플래그가 설정 되어 있지 않은 경우 이 플래그가 세팅된다. 이 플래그는 ACK플래그와 함께 사용되는 경우도 있다.


서명 도구 : signtool.exe

저장소/잡다한거

MSDN : http://msdn.microsoft.com/ko-kr/library/8s9b9yaz(v=vs.100).aspx

VCS의 branch, tag, trunk

저장소/잡다한거

여태 본 것 중에 가장 알아듣게 설명됨. 왕 친절! 

프로젝트 단위로 구성하는게 맘 편한듯... 왕 후회중 ㅠㅠ



원문 출처 : http://freedert.tistory.com/100


Subversion/SVN 설정시 branches, tags, trunk 에 대한 개념


Subversion/SVN 설정시 branches, tags, trunk 에 대한 개념

trunk
- 기본적으로 개발을 시작할 때 사용하는 디렉토리(소스의 주 개발 작업을 진행하는 폴더)
- 모든 프로그램 개발 작업은 trunk 디렉토리에서 부터 시작
- main, mainline, production의 의미로 사용됨

brankches
- trunk 에서 뻗어져 나온 나뭇가지(소스의 실험적인 작업을 진행하는 폴더, 소스의 현재 버전을 유지보수 하고, 현재 버전을 기반으로 차기 버전을 개발할 경우 이 폴더 이용)
- trunk 디렉토리에서 프로그램을 개발하다보면 큰 프로젝트에서 또 다른 작은 분류로 빼서 개발하는 경우.
- 프로젝트 안의 작은 프로젝트
- release 버전과 유지보수 버전을 분리하고 싶을 때 사용
- customizing이나 hot fix 목적으로 분리하여 수정함
- 수정이 계속해서 발생하다가 궁극적으로는 trunk에 merge 되는 것이 일반적임

tags
- 꼬리표의 개념.
- 현재 릴리즈된 소스를 관리하기 쉽게 따로 보관하는데 사용. 즉, 개발을 위한 것이 아니라 보관을 위한 것이기 때문에 export만 해야 한다. 체크아웃하여 커밋 할 경우 경고 메시지가 출력된다.
- 프로그램을 개발하면서 정기적으로 릴리즈 할 때 0.1, 0.2, 1.0 식의 버전의 소스를 따로 저장하는 공간
- 한번 만들면 수정하지 않음
- releases, snapshots, baselines의 의미로 사용됨


2012년 분야별 최고의 오픈소스 소프트웨어 124선

저장소/잡다한거

2012년 분야별 최고의 오픈소스 소프트웨어 124선

IT World  : http://www.itworld.co.kr/news/78082



Bossies 2012: The Best of Open Source Software Awards

Info World : http://www.infoworld.com/d/open-source-software/bossies-2012-the-best-of-open-source-software-awards-202465



2012년 최고의 오픈소스 소프트웨어 : 애플리케이션 부문 (24개)
블로깅 시스템 Movable Type http://www.movabletype.com/
블로깅 플랫폼 WordPress http://www.wordpress.com/
콘텐츠 관리 시스템 Plone http://plone.org/
블로깅 시스템 Joomla http://www.joomla.org/
블로깅 플랫폼 Drupal http://drupal.org/
콘텐츠 관리 시스템 Typo3 http://typo3.org/
기업용 콘텐츠 관리 시스템 Alfresco http://www.alfresco.com/
이미지 관리 툴 Gallery http://gallery.menalto.com/
고객관계관리 솔루션 SugarCRM http://www.sugarcrm.com/
고객관계관리 솔루션 vTiger https://www.vtiger.com/crm/
전자상거래 솔루션 Magento http://www.magentocommerce.com/
전자상거래 플랫폼 Spree http://spreecommerce.com/
중소기업용 회계 프로그램 FrontAccounting http://frontaccounting.com/wb3/
업무용 협업 툴 Feng Office http://www.fengoffice.com/web/
개인과 중소기업용 회계 툴 Gnucash http://www.gnucash.org/
전사자원관리 애플리케이션 OpenERP http://www.openerp.com/
전사자원관리 애플리케이션 Openbravo http://www.openbravo.com/
중소기업을 위한 맥용 전사자원관리 애플리케이션 xTuple http://www.xtuple.com/
인사관리 애플리케이션 OrangeHRM http://www.orangehrm.com/
소규모 의원과 병원을 위한 헬스케어 애플리케이션 OpenEMR http://www.open-emr.org/
비즈니스 인텔리전스 애플리케이션 Pentaho http://www.pentaho.com/
비즈니스 프로세스 관리 애플리케이션 Bonita Open Solution http://www.bonitasoft.com/
웹 포탈 시스템 Liferay Portal http://www.liferay.com/
소셜 네트워크 서비스 애플리케이션 Diaspora http://diasporaproject.org/
 
2012년 최고의 오픈소스 소프트웨어 : 애플리케이션 개발툴 부문 (18개)
네트워크 애플리케이션 개발 플랫폼 Node.js http://nodejs.org/
멀티 플랫폼 모마일 앱 개발환경 PhoneGap http://phonegap.com/
네이티브 앱 개발툴 Titanium http://www.appcelerator.com/
애플리케이션 개발 툴 Sencha Touch http://www.sencha.com/
다양한 스마트폰 OS를 지원하는 개발 프레임워크 Rhodeshttp://www.motorola.com/Business/US-EN/RhoMobile+Suite/Rhodes
오픈소스 브라우저 엔진 WebKit http://www.webkit.org/
가상화 플랫폼 VirtualBox https://www.virtualbox.org/
웹용 3D 그래픽 구현 툴 Three.js http://mrdoob.github.com/three.js/
웹 개발 프레임워크 Bootstrap http://twitter.github.com/bootstrap/
소스코드 관리 툴 Git http://git-scm.com/
애플리케이션 개발 관리 툴 Jenkins http://jenkins-ci.org/
텍스트 에디터 jEdit http://www.jedit.org/
오픈소스 통합개발 환경 Code::Blocks http://www.codeblocks.org/
윈도우부터 맥, 아이폰 등을 지원하는 GUI 플랫폼 wxWidgets http://www.wxwidgets.org/
크로스 플랫폼 애플리케이션 개발 툴 Qt http://qt-project.org/
C++ 소스 라이브러리 Boost http://www.boost.org/
LLVM 컴파일러용 C언어 프론트엔드 Clang http://clang.llvm.org/
자바 애플리케이션 버그 분석기FindBugs http://findbugs.sourceforge.net/

2012년 최고의 오픈소스 소프트웨어 : 데이터센터와 클라우드 부문 (16개)
클라우드 구축 플랫폼 OpenStack http://www.openstack.org/
가상화 네트워크 구축, 관리 솔루션 CloudStack http://www.cloudstack.org/
클라우드 서비스 플랫폼 Eucalyptus http://www.eucalyptus.com/
소규모 가상화 네트워크 관리 툴 Ganeti http://code.google.com/p/ganeti/
가상화 관리 솔루션 Open vSwitch http://openvswitch.org/
클라우드 플랫폼 서비스 솔루션 Cloud Foundry http://www.cloudfoundry.com/
웹 애플리케이션 서버 소프트웨어 JBoss AS7 http://www.jboss.org/as7
클라우드 서비스 지원 라이브러리 Jclouds http://www.jclouds.org/
서버 관리 소프트웨어 Puppet http://docs.puppetlabs.com/
인프라 설정관리 솔루션 Chef http://wiki.opscode.com/display/chef/Home
클라우드 인프라 관리 솔루션 Juju http://juju.ubuntu.com/
분산 파일 시스템 GlusterFS http://www.gluster.org/
분산 파일 시스템 Ceph http://ceph.com/community/
프리BSD 기반의 스토리지 플랫폼 FreeNAS http://www.freenas.org/
리눅스와 LVM 기반의 스토리지 플랫폼 Openfiler http://www.openfiler.com/
프리BSD 기반의 스토리지 플랫폼 NAS4Free http://www.nas4free.org/
 
2012년 최고의 오픈소스 소프트웨어 : 데이터베이스 부문 (11개)
빅데이터 솔루션 Hadoop http://hadoop.apache.org/
자바 기반 데이터 처리 솔루션 Cascading and Scalding http://www.cascading.org/
오픈소스 데이터베이스 솔루션 PostgreSQL http://www.postgresql.org/
오픈소스 데이터베이스 솔루션 MySQL and MariaDB http://www.mysql.com/
데이터베이스 관리 툴 Adminer http://www.adminer.org/
빅데이터 기반의 키값 데이터베이스 Cassandra http://cassandra.apache.org/
오픈소스 NoSQL 데이터베이스 MongoDB http://www.mongodb.org/
오픈소스 NoSQL 데이터베이스Couchbase http://www.couchbase.com/
오픈소스 NoSQL 그래프 데이터베이스 Neo4j http://neo4j.org/
오픈소스 분산 데이터베이스 Riak http://wiki.basho.com/
데이터 구조까지 저장할 수 있는 NoSQL 데이터베이스 Redis http://redis.io/
 
2012년 최고의 오픈소스 소프트웨어 : 데스트톱 애플리케이션 부문 (16개)
PC용 리눅스 운영체제 Ubuntu http://www.ubuntu.com/
오피스 프로그램 LibreOffice http://www.libreoffice.org/
오피스 프로그램 OpenOffice http://www.openoffice.org/
오픈오피스 사용자들이 만든 수많은 템플릿들 OpenOffice Templateshttp://templates.services.openoffice.org/
워드프로세싱 프로그램 AbiWord http://www.abisource.com/
데스크톱 출판 프로그램 Scribus http://www.scribus.net/
웹 브라우저 소프트웨어 Chromium http://www.chromium.org/
웹 브라우저 소프트웨어 Firefox http://www.firefox.com/
이미지 에디터 GIMP http://www.gimp.org/
일러스트레이터 프로그램 Inkscape http://inkscape.org/
화면 캡처 프로그램 CamStudio http://camstudio.org/    
오디오 녹음, 편집 프로그램 Audacity http://audacity.sourceforge.net/   
동영상 플레이어 VLC http://www.videolan.org/
암호관리 프로그램 KeePass http://www.keepass.info/
압축 프로그램 7-Zip http://www.7-zip.org/
하드 디스크 관리 프로그램 WinDirStat http://windirstat.info/
 
2012년 최고의 오픈소스 소프트웨어 : 네트워크와 보안 부문 (27개)
리눅스 기반의 라우터, 펌웨어 시스템 DD-WRT http://www.dd-wrt.com/
파이어폭스, 구글크롬용 보안 확장기능 HTTPS Everywhere https://www.eff.org/https-everywhere/
디스크 암호화 소프트웨어 TrueCrypt http://www.truecrypt.org/
디스크, 파일 암호화 소프트웨어 FreeOTFE http://www.freeotfe.org/
파일 삭제 프로그램 Eraser http://eraser.heidi.ie/    
파일 삭제 프로그램 Darik's Boot and Nuke http://www.dban.org/
리눅스 기반 라우터, 펌웨어 시스템 Vyatta http://www.vyatta.org/
가상화 관리 솔루션 Open vSwitch http://openvswitch.org/
UC 솔루션 Elastix http://www.elastix.org/
스팸 차단 소프트웨어 Anti-Spam SMTP Proxy Server http://sourceforge.net/projects/assp
비디오 카메라 모니터링 소프트웨어 iSpy http://www.ispyconnect.com/
네트워크 관리 솔루션 OpenNMS http://www.opennms.org/
네트워크 관리 솔루션 Cacti http://cacti.net/index.php
네트워크 트래픽 분석 소프트웨어 Wireshark http://www.wireshark.org/
침입탐지 시스템 Snort http://www.snort.org/
보안 관리 소프트웨어 Sagan http://sagan.softwink.com/
차세대 침입탐지 시스템 Suricata http://www.openinfosecfoundation.org/index.php/download-suricata
네트워크 관리용 그래픽 인터페이스 Snorby http://www.snorby.org/
네트워크 보안 스캐너 Nmap http://nmap.org/
네트워크 취약점 탐지 솔루션 Metasploit http://www.metasploit.com/download/
리눅스 기반 침입 테스트 소프트웨어 BackTrack http://www.backtrack-linux.org/
웹 애플리케이션 보안 테스트 솔루션 Burp Suite http://www.portswigger.net/burp/
디스크 이미징 툴 dc3dd http://sourceforge.net/projects/dc3dd/
윈도우 암호 해독기 Ophcrack http://ophcrack.sourceforge.net/
암호 해독 소프트웨어 John the Ripper http://www.openwall.com/john/
보안 커뮤니케이션 툴 GnuPG http://www.gnupg.org/
자바 애플리케이션 버그 분석기 FindBugs http://findbugs.sourceforge.net/
 
2012년 최고의 오픈소스 소프트웨어 : 새로운 부문 (12개)
홈오토메이션 솔루션 OpenRemote http://www.openremote.org/display/HOME/OpenRemote
실시간 전략 시뮬레이션 게임 0 A.D. http://www.wildfiregames.com/0ad/
미디어센터 소프트웨어 XBMC http://xbmc.org/
게임 에뮬레이터 Stella http://stella.sourceforge.net/
3D 탱크 슈팅 게임 BZFlag http://bzflag.org/
e북 콘텐츠 관리 소프트웨어 Calibre http://calibre-ebook.com/
오픈소스 싱글보드 컴퓨터 Arduino http://www.arduino.cc/
1인칭 슈팅게임 AssaultCube http://assault.cubers.net/
전략 시뮬레이션 게임 Freeciv http://freeciv.wikia.com/wiki/Main_Page
실시간 전략 게임 Warzone 2100 http://wz2100.net/
2D 우주무역 게임 Naev http://blog.naev.org/
동영상 편집 소프트웨어 Lightworks http://www.lwks.com


'저장소 > 잡다한거' 카테고리의 다른 글

서명 도구 : signtool.exe  (0) 2013.05.02
VCS의 branch, tag, trunk  (0) 2013.04.17
버전 관리 시스템 : SVN에서 Git으로.. 왜?  (0) 2013.04.16
정규표현식(Regular Expressions) 문법  (0) 2013.04.02
TortoiseSVN Commands  (0) 2013.03.19

버전 관리 시스템 : SVN에서 Git으로.. 왜?

저장소/잡다한거

요즈음 버전 관리 시스템의 추세는 중앙 집중식 버전 관리 시스템(CVS, SVN)에서 분산형 버전 관리 시스템(Git 외 다수)으로 바뀌고 있다고 한다.

대충 봤는데 와~!! 이건 꼭 써야해! 할 정도로 공감되지는 않더라. SVN 쓰는데 불편함이 없어서 말이지.


암튼 자세한 설명은 링크를 따라간다. 귀찮다.

내용 정리가 잘 되어있당.


Git에 대한 친절한 설명. 굿!

http://dogfeet.github.io/progit/progit.ko.html



Pro Git

http://dogfeet.github.io/articles/2012/progit.html


progit





'저장소 > 잡다한거' 카테고리의 다른 글

VCS의 branch, tag, trunk  (0) 2013.04.17
2012년 분야별 최고의 오픈소스 소프트웨어 124선  (0) 2013.04.16
정규표현식(Regular Expressions) 문법  (0) 2013.04.02
TortoiseSVN Commands  (0) 2013.03.19
Stack Overflow 사례  (0) 2013.02.20

정규표현식(Regular Expressions) 문법

저장소/잡다한거

정규표현식 책 추천 -> 손에 잡히는 정규표현식



정규표현식(Regular Expressions) 문법 정리


기본 메타 문자 

.

모든 문자와 일치 

|

왼쪽 혹은 오른쪽과 일치 

[] 

문자 집합 구성원 중 하나와 일치 

[^]

문자 집합 구성원을 제외하고 일치

-

범위 정의 ( [A-Z]와 같은 형태 )

\

다음에 오는 문자를 이스케이프

 수량자

*

문자가 없는 경우나 하나 이상 연속하는 문자 찾기

*?

게으른 * 문자

+

문자 하나 이상 찾기

+?

게으른 + 문자

?

문자가 없거나 하나인 문자 찾기

{n}

정확히 요소와 n번 일치

{m,n} 

요소와 m에서 n번 일치

{n,}

요소와 n번 이상 일치

{n,}?

게으른 {n,}

위치 지정 

^

문자열의 시작과 일치

\A

문자열의 시작과 일치

$

문자열의 끝과 일치

\Z

문자열의 끝과 일치

\<

단어의 시작과 일치

\>

단어의 끝과 일치

\b

단어 경계와 일치

\B

\b 와 반대로 일치

특수한 문자

[\b]

역스페이스 

\c

제어문자와 일치

\d

모든 숫자와 일치

\D

\d 와 반대

\f

페이지 넘기기(form feed)

\n

줄바꿈

\r

캐리지 리턴

\s

공백 문자와 일치

\S

\s 와 반대로 일치

\t

\v

수직 탭

\w

영숫자 문자나 밑줄과 일치

\W

\w 와 반대로 일치

\x

16진수 숫자와 일치

\0

8진수 숫자와 일치

역참조와 전후방 탐색

()

하위 표현식 정의

\1

첫 번째 일치한 하위 표현식. 두번째 일치한 하위 표현식은 \2 로 표기하는 방식

?=

전방탐색

?<=

후방탐색

?!

부정형 전방탐색

?<!

부정형 후방탐색

?(backreference)true

조건 지정

?(backreference)true|false

else 표현식 조건 지정

 대소문자 변환

\E 

\L 혹은 \U 변환을 끝냄

\l

다음에 오는 글자를 소문자로 변환

\L

\E 를 만날 때까지 모든 문자를 소문자로 변환

\u

다음에 오는 글자를 대문자로 변환

\U

\E 를 만날 때까지 모든 문자를 대문자로 변환

변경자

(?m) 

다중행 모드


TortoiseSVN Commands

저장소/잡다한거

나는 한다 복사를, TortoiseSVN 도움말에서.


TortoiseSVN Commands


Since all commands for TortoiseSVN are controlled through command line parameters, you can automate it with batch scripts or start specific commands and dialogs from other programs (e.g. your favourite text editor).


Important

Remember that TortoiseSVN is a GUI client, and this automation guide shows you how to make the TortoiseSVN dialogs appear to collect user input. If you want to write a script which requires no input, you should use the official Subversion command line client instead.

D.1. TortoiseSVN Commands

The TortoiseSVN GUI program is called TortoiseProc.exe. All commands are specified with the parameter /command:abcd where abcd is the required command name. Most of these commands need at least one path argument, which is given with /path:"some\path". In the following table the command refers to the /command:abcd parameter and the path refers to the /path:"some\path" parameter.

Since some of the commands can take a list of target paths (e.g. committing several specific files) the /path parameter can take several paths, separated by a * character.

You can also specify a file which contains a list of paths, separated by newlines. The file must be in UTF-16 format, without a BOM. If you pass such a file, use /pathfile instead of /path. To have TortoiseProc delete that file after the command is finished, you can pass the parameter /deletepathfile.

The progress dialog which is used for commits, updates and many more commands usually stays open after the command has finished until the user presses the OK button. This can be changed by checking the corresponding option in the settings dialog. But using that setting will close the progress dialog, no matter if you start the command from your batch file or from the TortoiseSVN context menu.

To specify a different location of the configuration file, use the parameter /configdir:"path\to\config\directory". This will override the default path, including any registry setting.

To close the progress dialog at the end of a command automatically without using the permanent setting you can pass the /closeonend parameter.  음.. Log Dialog는 안 된다;; 당연한가.. Progress Dialog만 된다. 이건 잘 된다.

  • /closeonend:0 don't close the dialog automatically

  • /closeonend:1 auto close if no errors

  • /closeonend:2 auto close if no errors and conflicts

  • /closeonend:3 auto close if no errors, conflicts and merges


    ex) C:\Users\Administrator>TortoiseProc /command:update /path:"d:\MyRepo" /closeonend:1

To close the progress dialog for local operations if there were no errors or conflicts, pass the /closeforlocal parameter.

The table below lists all the commands which can be accessed using the TortoiseProc.exe command line. As described above, these should be used in the form /command:abcd. In the table, the /command prefix is omitted to save space.

Table D.1. List of available commands and options

Command Description
:about Shows the about dialog. This is also shown if no command is given.
:log Opens the log dialog. The /path specifies the file or folder for which the log should be shown. Additional options can be set: /startrev:xxx, /endrev:xxx, /strict enables the 'stop-on-copy' checkbox, /merge enables the 'include merged revisions' checkbox, /findstring:"filterstring" fills in the filter text, /findtext forces the filter to use text, not regex, or /findregex forces the filter to use regex, not simple text search, and /findtype:X with X being a number between 0 and 511. The numbers are the sum of the following options:
  • /findtype:0 filter by everything

  • /findtype:1 filter by messages

  • /findtype:2 filter by path

  • /findtype:4 filter by authors

  • /findtype:8 filter by revisions

  • /findtype:16 not used

  • /findtype:32 filter by bug ID

  • /findtype:64 not used

  • /findtype:128 filter by date

  • /findtype:256 filter by date range

If /outfile:path\to\file is specified, the selected revisions are written to that file when the log dialog is closed. The revisions are written in the same format as is used to specify revisions in the merge dialog.
:checkout Opens the checkout dialog. The /path specifies the target directory and the /url specifies the URL to checkout from. If you specify the key /blockpathadjustments, the automatic checkout path adjustments are blocked. The /revision:XXX specifies the revision to check out.
:import Opens the import dialog. The /path specifies the directory with the data to import. You can also specify the /logmsg switch to pass a predefined log message to the import dialog. Or, if you don't want to pass the log message on the command line, use /logmsgfile:path, where path points to a file containing the log message.
:update Updates the working copy in /path to HEAD. If the option /rev is given then a dialog is shown to ask the user to which revision the update should go. To avoid the dialog specify a revision number /rev:1234. Other options are /nonrecursive, /ignoreexternals and /includeexternals. The /stickydepth indicates that the specified depth should be sticky, creating a sparse checkout.
:commit Opens the commit dialog. The /path specifies the target directory or the list of files to commit. You can also specify the /logmsg switch to pass a predefined log message to the commit dialog. Or, if you don't want to pass the log message on the command line, use /logmsgfile:path, where path points to a file containing the log message. To pre-fill the bug ID box (in case you've set up integration with bug trackers properly), you can use the /bugid:"the bug id here" to do that.
:add Adds the files in /path to version control.
:revert Reverts local modifications of a working copy. The /path tells which items to revert.
:cleanup Cleans up interrupted or aborted operations and unlocks the working copy in /path. Use /noui to prevent the result dialog from popping up (either telling about the cleanup being finished or showing an error message). /noprogressui also disables the progress dialog. /nodlg disables showing the cleanup dialog where the user can choose what exactly should be done in the cleanup. The available actions can be specified with the options /cleanup for status cleanup, /revert, /delunversioned, /delignored, /refreshshell and /externals.
:resolve Marks a conflicted file specified in /path as resolved. If /noquestion is given, then resolving is done without asking the user first if it really should be done.
:repocreate Creates a repository in /path
:switch Opens the switch dialog. The /path specifies the target directory.
:export Exports the working copy in /path to another directory. If the /path points to an unversioned directory, a dialog will ask for an URL to export to the directory in /path. If you specify the key /blockpathadjustments, the automatic export path adjustments are blocked.
:dropexport Exports the working copy in /path to the directory specified in /droptarget. This exporting does not use the export dialog but executes directly. The option /overwrite specifies that existing files are overwritten without user confirmation, and the option /autorename specifies that if files already exist, the exported files get automatically renamed to avoid overwriting them.
:merge Opens the merge dialog. The /path specifies the target directory. For merging a revision range, the following options are available: /fromurl:URL, /revrange:string. For merging two repository trees, the following options are available: /fromurl:URL, /tourl:URL, /fromrev:xxx and /torev:xxx. For doing a reintegrate merge, use the following options: /fromurl:URL and /reintegrate. These pre-fill the relevant fields in the merge dialog.
:mergeall Opens the merge all dialog. The /path specifies the target directory.
:copy Brings up the branch/tag dialog. The /path is the working copy to branch/tag from. And the /url is the target URL. You can also specify the /logmsg switch to pass a predefined log message to the branch/tag dialog. Or, if you don't want to pass the log message on the command line, use /logmsgfile:path, where path points to a file containing the log message.
:settings Opens the settings dialog.
:remove Removes the file(s) in /path from version control.
:rename Renames the file in /path. The new name for the file is asked with a dialog. To avoid the question about renaming similar files in one step, pass /noquestion.
:diff Starts the external diff program specified in the TortoiseSVN settings. The /path specifies the first file. If the option /path2 is set, then the diff program is started with those two files. If /path2 is omitted, then the diff is done between the file in /path and its BASE. To explicitly set the revision numbers use /startrev:xxx and /endrev:xxx, and for the optional peg revision use /pegrevision:xxx. If /blame is set and /path2 is not set, then the diff is done by first blaming the files with the given revisions. The parameter /line:xxx specifies the line to jump to when the diff is shown.
:showcompare

Depending on the URLs and revisions to compare, this either shows a unified diff (if the option unified is set), a dialog with a list of files that have changed or if the URLs point to files starts the diff viewer for those two files.

The options url1, url2, revision1 and revision2 must be specified. The options pegrevision, ignoreancestry, blame and unified are optional.

:conflicteditor Starts the conflict editor specified in the TortoiseSVN settings with the correct files for the conflicted file in /path.
:relocate Opens the relocate dialog. The /path specifies the working copy path to relocate.
:help Opens the help file.
:repostatus Opens the check-for-modifications dialog. The /path specifies the working copy directory. If /remote is specified, the dialog contacts the repository immediately on startup, as if the user clicked on the Check repository button.
:repobrowser

Starts the repository browser dialog, pointing to the URL of the working copy given in /path or /path points directly to an URL.

An additional option /rev:xxx can be used to specify the revision which the repository browser should show. If the /rev:xxx is omitted, it defaults to HEAD.

If /path points to an URL, the /projectpropertiespath:path/to/wc specifies the path from where to read and use the project properties.

If /outfile:path\to\file is specified, the selected URL and revision are written to that file when the repository browser is closed. The first line in that text file contains the URL, the second line the revision in text format.

:ignore Adds all targets in /path to the ignore list, i.e. adds the svn:ignore property to those files.
:blame

Opens the blame dialog for the file specified in /path.

If the options /startrev and /endrev are set, then the dialog asking for the blame range is not shown but the revision values of those options are used instead.

If the option /line:nnn is set, TortoiseBlame will open with the specified line number showing.

The options /ignoreeol, /ignorespaces and /ignoreallspaces are also supported.

:cat Saves a file from an URL or working copy path given in /path to the location given in /savepath:path. The revision is given in /revision:xxx. This can be used to get a file with a specific revision.
:createpatch Creates a patch file for the path given in /path.
:revisiongraph

Shows the revision graph for the path given in /path.

To create an image file of the revision graph for a specific path, but without showing the graph window, pass /output:path with the path to the output file. The output file must have an extension that the revision graph can actually export to. These are: .svg, .wmf, .png, .jpg, .bmp and .gif.

Since the revision graph has many options that affect how it is shown, you can also set the options to use when creating the output image file. Pass these options with /options:XXXX, where XXXX is a decimal value. The best way to find the required options is to start the revision graph the usual way, set all user-interface options and close the graph. Then the options you need to pass on the command line can be read from the registry HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lock Locks a file or all files in a directory given in /path. The 'lock' dialog is shown so the user can enter a comment for the lock.
:unlock Unlocks a file or all files in a directory given in /path.
:rebuildiconcache Rebuilds the windows icon cache. Only use this in case the windows icons are corrupted. A side effect of this (which can't be avoided) is that the icons on the desktop get rearranged. To suppress the message box, pass /noquestion.
:properties Shows the properties dialog for the path given in /path.


Examples (which should be entered on one line):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0

Stack Overflow 사례

저장소/잡다한거
원문 출처 : http://callibri.egloos.com/2801476


Stack Overflow발생하는경우를본다.  

(Demo: StackOverflow.exe 예제)

 

Unknown software exception (0xc00000fd)같은exception발생할있는데이때windbg연결한다

 

0:000> kL

ChildEBP RetAddr 

0003bba0 00401091 StackOverflow!_chkstk+0x27

00054264 00401091 StackOverflow!StackOverflow+0x91

0006c928 00401091 StackOverflow!StackOverflow+0x91

00084fec 00401091 StackOverflow!StackOverflow+0x91

0009d6b0 00401091 StackOverflow!StackOverflow+0x91

000b5d74 00401091 StackOverflow!StackOverflow+0x91

000ce438 00401091 StackOverflow!StackOverflow+0x91

000e6afc 00401091 StackOverflow!StackOverflow+0x91

000ff1c0 00401091 StackOverflow!StackOverflow+0x91

00117884 00401091 StackOverflow!StackOverflow+0x91

0012ff48 004010fa StackOverflow!StackOverflow+0x91

0012ff54 00401803 StackOverflow!main+0xa

0012ffb8 004015cd StackOverflow!__tmainCRTStartup+0x233

0012ffc0 77e6f23b StackOverflow!mainCRTStartup+0xd

0012fff0 00000000 kernel32!BaseProcessStart+0x23

 

같은함수명이recursive하게반복되므로stack overflow라는것을쉽게짐작할있다, stack framerecursive 함수호출을통해grow하다보면stack size초과했을것이다또한_chkstkstack 문제임을나타낸다.

디폴트로threadstack size1MB이다threadstack baselimit어떤가체크하려면thread environment block본다

 

0:000> !teb

TEB at 7ffdd000

    ExceptionList:        0012ffa8

    StackBase:            00130000

    StackLimit:           00031000

    SubSystemTib:         00000000

    FiberData:            00001e00

    ArbitraryUserPointer: 00000000

    Self:                 7ffdd000

    EnvironmentPointer:   00000000

    ClientId:             000018ec . 00001f84

    RpcHandle:            00000000

    Tls Storage:          00000000

    PEB Address:          7ffde000

    LastErrorValue:       0

    LastStatusValue:      c0000034

    Count Owned Locks:    0

    HardErrorMode:        0

 

Frame간의크기를보려면kf사용한다

 

0:000> kfL

  Memory  ChildEBP RetAddr 

          0003bba0 00401091 StackOverflow!_chkstk+0x27

    186c4 00054264 00401091 StackOverflow!StackOverflow+0x91

    186c4 0006c928 00401091 StackOverflow!StackOverflow+0x91

    186c4 00084fec 00401091 StackOverflow!StackOverflow+0x91

    186c4 0009d6b0 00401091 StackOverflow!StackOverflow+0x91

    186c4 000b5d74 00401091 StackOverflow!StackOverflow+0x91

    186c4 000ce438 00401091 StackOverflow!StackOverflow+0x91

    186c4 000e6afc 00401091 StackOverflow!StackOverflow+0x91

    186c4 000ff1c0 00401091 StackOverflow!StackOverflow+0x91

    186c4 00117884 00401091 StackOverflow!StackOverflow+0x91

    186c4 0012ff48 004010fa StackOverflow!StackOverflow+0x91

        c 0012ff54 00401803 StackOverflow!main+0xa

       64 0012ffb8 004015cd StackOverflow!__tmainCRTStartup+0x233

        8 0012ffc0 77e6f23b StackOverflow!mainCRTStartup+0xd

       30 0012fff0 00000000 kernel32!BaseProcessStart+0x23

 

StackOverflow!StackOverflow 한번호출시framedistance186c4, 십진수로100036(100K못미치는)이다. Local vars정도를쓰는것이다이를열번정도호출하면1MB가깝다.

 

Stack overflow인지 확인방법은stack현재어느만큼쓰고있고limit도달했는지확인하는것이다.

이를계산하기전에, 일반적인 stack구조를보자

+------------------------------------------------+   TEB 구조체의DeallocationStack가리키는주소 

                     BOTTOM/RSV

+------------------------------------------------+   < ---------- 근접하게되면Stack Overflow!!

 

                                ………..

 

 

+------------------------------------------------+

                     RESERVE 페이지

+------------------------------------------------+

                       GUARD 페이지

+------------------------------------------------+   StackLimit 

                     TOP/COMMIT 페이지

+------------------------------------------------+    StackBase 

 

아래가주소이고위는작은주소의방향일때이다스택은주소에서작은주소방향으로커간다.

그래서그림상가장하단의주소가StackBase이고실행시처음COMMIT페이지에서작은주소방향으로다음페이지를COMMIT하면서계속커나갈있다. StackLimit현재stack경계선을나타낸다그러므로현재의stack 크기는StackBase에서StackLimit만큼의차이이다(StackBase쪽이주소이므로StackBase에서StackLimit뺀다)

Windows SDKntpsapi.h 파일에정의된TEB 구조체의DeallocationStackStackmaximum size때의주소를가리킨다그러나stack커나가더라도DeallocationStack까지도달할있는것은아니고DeallocationStack마지막페이지에근접하면stack overflow발생하게된다.

 

!teb에서보인StackBaseStackLimit로써stack size계산한다.

    StackBase:            00130000

    StackLimit:           00031000

 

0:000> ?130000-31000

Evaluate expression: 1044480 = 000ff000

거의1MB달한다는것을있다.

 

Stack도달할있는maximum stack size어떻게될까? StackBase에서DeallocationStack차이를보면된다.

DeallocationStack_TEB 구조체를분석하면e0xoffset가진다. (계산방법생략)

 

0:000> dd 7ffdf000+e0c L1

7ffdfe0c  00030000

 

0:000> ?130000-00030000

Evaluate expression: 1048576 = 00100000

예상대로maximum stack size1MB이다.

 

Maximum stack size마지막페이지는31000에서30000이다.

 

0:000> r esp

esp=0003bb98

거의31000근접하였으므로stack overflow발생하였음을있다.

 

해결방법은잘못된recursive function 콜을바로잡거나(recursive function영원히호출되지않도록끝나는조건지정)

Stack디폴트사이즈를늘려준다좋은것은메모리할당에있어서stack보다는heap 영역을쓰는것이다.

 

<><><> 

Stack Overflow디버깅방법은다음MSDN참조하면좋다.

http://msdn.microsoft.com/en-us/library/cc267849.aspx

 

user-mode에서의Stack overflowrecursion 의해주로발생하는reserved stack 영역을경우가아닌다른원인이있는예제를보여준다.

 

stack overflow is an error that user-mode threads can encounter. There are three possible causes for this error:

  • A thread uses the entire stack reserved for it. This is often caused by infinite recursion.
  • A thread cannot extend the stack because the page file is maxed out, and therefore no additional pages can be committed to extend the stack.
  • A thread cannot extend the stack because the system is within the brief period used to extend the page file.