Git에서 디렉토리 일부분만 가져오려면 어떻게 해야되요?

SVN을 쓰시던 분들이 Git을 처음 접할때, 종종 하시는 질문이 있습니다. "디렉토리(=폴더) 중 일부만 가져오려면 어떻게 해야되요?" 이런 질문을 받게 되면 "Git에서는 안되요."라고 답변을 해왔습니다. 이 대답이 그때는 맞았고, 이제는 틀렸습니다. (꽤 오래전부터)가능해졌습니다. 그래서 이제는 "최신버전을 쓰시면 할 수 있어요."라고 대답해야 겠습니다. sparse checkout이라는 기법인데, 버전에 따라서 할 수 있는 방법이 좀 다르네요. sparse chckeout(git 1.7.0~), sparse-checkout(git 2.25~) React 리파지토리의 디렉토리 중 scripts 폴더만 가져오는 것을 예제로 각각 어떻게 하는지 알아보겠습니다. ( 아래 예제는 windows10 wsl ..

[번역글] init functions in Go

원문 : https://medium.com/golangspec/init-functions-in-go-eac191b3860a init functions in Go Identifier main is ubiquitous. Every Go program starts in a package main by calling identically named function. When this function returns… medium.com 전체 내용은 원문에서 확인하실 수 있으며, 또 내용 중 일부 오역이 포함되어 있을 수 있으니, 가능하면 원문을 참조하시는 걸 추천드립니다. main은 어디에나 있습니다. 모든 Go 프로그램은 패키지에서 main이라 불리는 함수에서 시작합니다. 이 main 함수가 리턴할 때, 프로그..

GitHub CLI

Git을 처음 배울 때, 커맨드 라인에서 배워서 익숙해져있는 것도 있기도 하고, intelliJ를 쓰다보니, 내장된 Git 도구를 사용하기 때문에 UI 툴은 따로 설치하여 사용하지 않았습니다. 아 intelliJ를 사용하기 이전에는 sourceTree를 쓰기도 했었네요. GitHub 데스크탑이라는 GitHub에서 만든 툴도 있지만, 몇번 써보고는 사용하지 않았습니다. 기능이 좋고 나쁘고를 떠나서, 커맨드 라인에서 쓰는 게 딱히 불편하지 않았고, 개발하다가 다른 툴과 계속 왔다갔다하면서 작업하는게 귀찮았습니다. 그래서 intelliJ의 내장된 툴을 쓰거나, 터미널을 실행해서 커맨드 라인에서 Git을 사용하는게 편했습니다. 그런데 이런 제 마음을 GitHub에서 읽었는지, GitHub CLI( https:/..

Special value #ZgotmplZ

Go에서는 HTML을 출력하기 위해서 html/template 패키지를 사용합니다. html/template 패키지의 소개에 보면 맨 첫줄에 "Package template (html/template) implements data-driven templates for generating HTML output safe against code injection."라고 적혀 있습니다. 즉, html/template 패키지를 이용하여 데이터를 포함한 HTML코드를 만들 때, 데이터의 특수 문자를 escaping하여, 출력된 화면에서 원치 않는 코드가 실행되는 것을 막을 수 있다는 의미입니다. 예시를 보면 더 잘 이해할 수 있습니다. import "html/template" ... t, err := templat..

GitHub OAuth 구현하기 (3)

2020/07/04 - GitHub OAuth 구현하기 (1) 2020/07/07 - GitHub OAuth 구현하기 (2) 에서 이어집니다. GitHub OAuth 구현을 실제 소스코드를 통해서 설명하려고 합니다. ( 사용한 언어는 Golang 이지만, 다른 언어를 사용하더라도 비슷한 방식으로 구현할 수 있습니다. ) 먼저 init() 함수에서 OAuth관련 설정을 해 줍니다. 여기서 만든 설정은 전체 앱에서 사용합니다. var OAuthConf *oauth2.Config func init() { OAuthConf = &oauth2.Config{ ClientID: "{{ oauth app client id }}", ClientSecret: "{{ oauth app client secret }}", Re..