모든 상가 명령 전에git 검사
묘사
#25를 끝내기 위해 git와 관련된 향수 명령을 실행하기 전에 작은 방법을 추가했습니다. 이 방법은 @technicalpicklesoriginally suggested에서 제공합니다.나는 원래git특정함수(
git_clone
,git_diff
,git status
등등을 삽입하려고 했지만, 그것은 더욱 비싸다in scenarios that have multiple git commands, 그리고 함수가 끝날 때까지git의 장면을 호출할 것이다(이것은 각종 부작용이 발생할 수 있다).토론 #1
문제는system
함수에 표준 오차가 나타나지 않았다는 것이다.모든 명령 실행에서 표준 오류를 처리하는 것을 어떻게 보십니까? 예를 들어 이상을 일으키거나 표준 오류 메시지를 표시하는 것입니다.토론 #2
@muratayusuke는 언제든지2>&1
stdout의 stderr를 가져와서 통화할 수 있습니다.which
실제적으로 유용한 표준 출력이 없기 때문에 출력을 검사하기 어렵다.실제적으로 더 좋은 방법은 종료 코드를 검사하고
%x{}
하는 것이다. 그러면 기본적으로 표준 출력이 나타나지 않는다. 예를 들어 다음과 같다.%x{which #{command}}
installed = $?.success?
토론 #셋
나는 이 계획이 실시되는 것을 매우 보고 싶다.고향을 그리워하는 구조 함수에서Git검사를 할 방법이 있습니까?이렇게 하면git를 설치하지 않으면 우리는 즉시 이상을 일으킬 수 있다.나에게 있어서 이것은 아주 좋은 방법인 것 같다. 왜냐하면 Git는 집을 그리워하는 데 매우 중요하기 때문이다.무슨 생각 있어요?토론 #4
@JCook21 좋은 생각인 것 같아요.비록 일부 향수 명령이git를 필요로 하지 않더라도, 만약 그것이 없다면, 모든 도구는 여전히 매우 유용하지 않을 것이다.git를 검사하는 것은 매우 간단해야 한다. Homesick#initialize 의 시작 부분에서 하나의 방법을 호출하기만 하면 git를 찾지 못하면 이상을 일으킬 수 있다.
토론 #5
git가 설치되어 있으면 버전을 얻을 수 있습니까?RHEL6의 버전은 모든 git 명령을 지원하지 않습니다. 찾거나 사용하는git에 따라 전문화할 수 있습니다.토론 #6
모든git 명령이지원?나는 원래 이상을 던지고 물러나려고 했다
그런데 저희가 버전을 체크하고 경고를 출력해야 한다고 생각하세요?
버전이 필요한 버전보다 낮습니까?
2014년 4월 2일 09:13, "피터 피터슨"[email protected]쓰기:
Can you also get the version of git if it is installed? The version on RHEL6 doesn't support all of the git commands you use and I can specialize them based on which git is found/used.
Reply to this email directly or view it on GitHubhttps://github.com/technicalpickles/homesick/pull/61#issuecomment-39327985 .
토론 #7
최초의 성 복제 과정에서 내가 겪은 주요 문제는 시스템이 지원되지 않는다는 것이다--config
.나는 단지 같은 효과가 있는 명령을 찾고 싶을 뿐이다.git가 새것이 부족하면 그것을 전환해라.누구에게도 경고할 필요가 없다.나의 현재 해결 방법은git로 그것을 복제한 다음에 홈릭이 다른 일을 정확하게 하는 것이다.토론 #8
@peterfterson 추천하는 최저Git버전을 상수로 저장하면?그리고 Git가 설치되어 있지 않으면 즉시 오류가 발생하고 Git가 최저 버전보다 낮으면 경고가 출력됩니다.이게 좋은 방법으로 들리나요?토론 #9
여러 버전의git가 서로 다른 수준의 지원을 제공할 수 있다면 홈스ick의 구조 함수에서 전역적인git버전 검사를 하지 않고 적절한git명령의 존재를 검사하는 것이 좋다고 생각합니다.이렇게 하면, 사용자가 대부분의 집을 생각하는 명령을 지원하는 비교적 오래된 버전의git를 가지고 있다면, 그들은 여전히 홈릭의 대부분 기능에 접근할 수 있다.그것의 효율은 좀 낮을 수 있지만, 우리는 하나의 가상 실행 기간에 기존git 명령에 대한 정보를 캐시해서 이를 실현할 수 있다.토론 #10
버전을 알아야 하는 모든 명령(내 경험은git clone)은 같은 정보를 필요로 한다.DRY와 일치하기 위해서는 홈릭 클래스의 단일 방법으로 사용할 수 있고 다른 명령은 무시할 수 있습니다.토론 #11
@nicolasmccurd가 필요할 때 하나의 명령을 검사하는 문제는 곧 혼란스러워질 수 있다는 것입니다.나는 차라리 구조 함수에서 Git의 버전을 검사하고 사용자에게 Git 버전이 완전한 기능을 제공하지 못할 수도 있다고 경고하기를 원한다.다른 분들은 어떻게 생각하세요?아마도 이것은 모든 Git 기능을 조수 라이브러리로 추출하는 또 다른 이유일 것입니다.피터슨: 나는 우리가 가능한 한 건조함을 유지하는 데 있어서 많든 적든 일치한다고 생각한다.
토론 #12
사용rugged같은 건 어때요?이것은 일을 시원시원하게 유지하고 본기git에 대한 의존을 없앨 수 있다.토론 #13
저는 그냥 몸을 처리하는 방법을 생각하고 있었어요.version = `git version`
version = version[/\d+\.\d+(\.\d+)+/]
루비gitthis file의 715행 근처 코드의 수정 버전입니다.간단한 시스템 호출이면 충분할 것 같습니다.토론 #14
견고형 등 제품의 선택을 탐색하고 싶습니다.나는 관심사를 분리함으로써 전체 응용 프로그램의 책임을 청산하는 데 도움을 줄 수 있다고 생각한다.나는 우리가 이전에 이 문제를 토론한 적이 있다는 것을 알고 있지만, 나는 찬성과 반대의 관점을 매우 듣고 싶다.토론 #15
@christianbundy@JCook21 거칠고 거칠음이 유용하다. 비록 내가 different issue에서 내가 전에 토론한 문제를 만났지만:... a lot of our tests expect certain output to result from git-related commands, because homesick can use part of git's command line interface for convenience. This means that homesick's output depends on the git shell, but libraries like Grit aren't meant to reimplement git's porcelain command output.
토론 #16
Git 서명의 간단한 실현을 시도했습니다. #127은 이미 유행이 지난 것 같기 때문입니다.만약 어떤 의견이 있으면, 나는 감격을 금할 수 없을 것이다.토론 #17
나는 이것을 닫을 것이다. 왜냐하면 나는 #127이 이 문제를 처리할 것이라고 생각하기 때문이다.Reference
이 문제에 관하여(모든 상가 명령 전에git 검사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/technicalpickles/homesick/issues/61텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)