sparse-checkout 실제로 사용가능할까?

어제 올린 글 ( 2020/07/17 - Git에서 디렉토리 일부분만 가져오려면 어떻게 해야되요? )에서 sparse-checkout으로 특정 폴더만 받아올 수 있다는 것을 알았습니다. 그렇다면 그렇게 일부만 받아온 폴더를 실제 활용이 가능할까 궁금했습니다. 다시 말해, "SVN에서 처럼 특정 폴더만 받아왔을 때처럼, 이력관리를 할 수 있을까?" 가 궁금했습니다. 만약 가능하다고 하면, Git에서도 SVN처럼 하나의 리파지토리를 만들어두고, 업무별로 폴더를 나누어 사용할 수도 있을 테니, 수십개의 리파지토리를 사용하지 않아도 될것 같습니다. 가정 일단 제 생각은, "Git의 이력을 저장하는 방식은 스냅샷이나, SVN의 증분을 저장하는 방식 처럼 그렇게 하지 못할 것이다" 입니다만, 해보지 않으면 알 수가..

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..