बाइट डिफ विथ बियॉन्ड तुलना


111

मैं एक प्रारंभिक उपकरण के रूप में 3 से तुलना शुरू करने में सफल होने में सफल रहा हूं, हालांकि, जब मैं एक अंतर करता हूं, तो मैं जिस फाइल की तुलना कर रहा हूं, वह लोड नहीं हो रही है। केवल फ़ाइल का नवीनतम संस्करण लोड किया गया है और कुछ भी नहीं है, इसलिए बियॉन्ड तुलना के दाहिने फलक में कुछ भी नहीं है।

मैं Cygwin के साथ Beyond तुलना के साथ 1.6.3.1 git चला रहा हूं। 3. मैंने उनकी तुलना में उनकी वेबसाइट के समर्थन भाग में सुझाव देने की तुलना में इस तरह की स्क्रिप्ट के साथ सेट किया है:

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"path_to_bc3_executable" "$2" "$5" | cat

क्या किसी और ने इस समस्या का सामना किया है और इसका कोई समाधान जानता है?

संपादित करें:
मैंने VonC द्वारा सुझावों का पालन किया है, लेकिन मुझे अभी भी पहले जैसी ही समस्या है। मैं जीआईटी के लिए नया हूं इसलिए शायद मैं सही तरीके से फॉर्म का उपयोग नहीं कर रहा हूं।

उदाहरण के लिए, मैं इस तरह के एक कमांड के साथ एक फ़ाइल पर अंतर को देखने की कोशिश कर रहा हूं:
git diff main.css

बियॉन्ड तुलना तब खुलेगी और केवल मेरे वर्तमान main.css को बाएँ फलक में प्रदर्शित करेगी, दाएँ फलक में कुछ भी नहीं है। मैं अपने वर्तमान main.css को बाएं फलक में HEAD की तुलना में देखना चाहूंगा, मूल रूप से जो मैंने आखिरी बार किया है।

मेरा git-diff-wrapper.sh इस तरह दिखता है:

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

मेरा git config डिफ के लिए इस तरह दिखता है:

[diff]  
external = c:/cygwin/bin/git-diff-wrapper.sh

जवाबों:


140

मैं अतिरिक्त रैपर .sh फ़ाइलों का उपयोग नहीं करता। मेरा वातावरण विंडोज़ एक्सपी है, साइबरविन पर 1.7.1 git, और बियॉन्ड तुलना 3. इसके बाद मेरी .git / config फाइल है।

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    #use cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
[merge]
    tool = bc3
[mergetool]
    prompt = false
[mergetool "bc3"]
    #trustExitCode = true
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

फिर, मैं $ git difftool का उपयोग तुलना करने के लिए और $ git mergetool को मर्ज करने के लिए करता हूं

TrustExitCode के बारे में : एक कस्टम मर्ज कमांड के लिए, यह निर्दिष्ट करें कि मर्ज के सफल होने के लिए मर्ज कमांड के निकास कोड का उपयोग किया जा सकता है या नहीं। यदि यह सही पर सेट नहीं है, तो मर्ज लक्ष्य फ़ाइल टाइमस्टैम्प की जाँच की जाती है और माना जाता है कि यदि फ़ाइल अपडेट की गई है, तो मर्ज सफल हुआ है, अन्यथा उपयोगकर्ता को मर्ज की सफलता का संकेत देने के लिए प्रेरित किया जाता है।


12
मैं विंडोज 7 में एक मिंग गिट शेल के साथ चल रहा हूं। मुझे /c/program filesइसके बजाय एक linux स्टाइल पथ का उपयोग करना था c:/program files। इसके अलावा, मैं हटा दिया "$(cygpath -w $LOCAL)"और सिर्फ इस्तेमाल किया "$LOCAL"। वह चाल के समान लग रहा था।
लैंडन पोच

5
जैसा कि @pClass नीचे उल्लेख करता है, "bc3" अब git के नए संस्करणों में एक आंतरिक उपकरण है। आपको एक अनूठे नाम का उपयोग करना चाहिए, जैसे कि "परेकोम्परप 3"
स्कॉट

4
GitHub Shell (विंडोज 8 पर) ने मुझसे कहा bcompare: command not found- जब तक मैंने टूल के NAME bc3को किसी अन्य चीज़ (जैसे abc3) से नहीं बदला । मुझे लगता है कि कुछ आंतरिक गितुब सेटिंग ने हस्तक्षेप किया। इसके अलावा, मैंने उस "$(cygpath -w $LOCAL)"हिस्से को हटा दिया और उसे बदल दिया "$LOCAL"। अब यह ठीक काम करता है। धन्यवाद!
फेलिक्स अलकाला

1
दो कमिट के बीच अंतर देखने पर यह मेरे लिए छोटा था। यहाँ एक बेहतर उपाय है: blog.kifaru.be/2011/07/…
balajimc55

2
मुझे यह लेख भी मिला: Scootersoftware.com/support.php?zz=kb_vcs
लड़के अवराम

28

पॉश-गिट के लेखक @dahlbyk को उनके विन्यास को एक जिस्ट के रूप में पोस्ट करने के लिए धन्यवाद । इसने मेरी कॉन्फ़िगरेशन समस्या को हल करने में मेरी मदद की।

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = bc3
[mergetool]
    prompt = false
    keepBackup = false
[mergetool "bc3"]
    cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = true
[alias]
    dt = difftool
    mt = mergetool

मैंने इस उत्तर की कोशिश की और अलग होने में असमर्थ था, शायद मैं इसे गलत कर रहा हूं।
एपु

1
@ क्या आपने पुष्टि की है कि आपके रास्ते आपकी मशीन पर समान हैं? और यह परे है 3 की तुलना करें, पुराने v2 या कुछ और नहीं?
निक जोसव्स्की

मैंने पुष्टि की कि पथ समान हैं, और यह bc3 है।
एपु

1
मजेदार बात है, 'git difftool file.txt' और 'git mergetool file.txt' ठीक काम कर रहे हैं, इसलिए मैंने उन पर स्विच किया। लेकिन 'git diff file.txt' का अब पर्दाफाश हो गया है (इससे पहले कि यह मुझे डिफ़ॉल्ट कंसोल को दिखाता था)। अब यह मुझे 'त्रुटि देता है: bc3 को स्पॉन नहीं कर सकता: ऐसी कोई फ़ाइल या निर्देशिका \ nexternal भिन्न नहीं हुई, जो फ़ाइल में बंद रही हो।'
एपु

बस अगर किसी को भी वही समस्या आती है जो मैंने की थी (अपरिचित। इसे संपादित करने के बाद .conconfig) मुझे इस तरह से रास्ता जोड़ना था:cmd = 'C:\\Program Files\\Beyond Compare 4\\BCompare.exe' \"$LOCAL\" \"$REMOTE\"
sebagomez

20

2 की तुलना में परे इन आदेशों को चलाएं:

git config --global diff.tool bc2
git config --global difftool.bc2.cmd "\"c:/program files (x86)/beyond compare 2/bc2.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

3 की तुलना में परे इन आदेशों को चलाएं:

git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

फिर उपयोग करें git difftool


1
4 से परे है समर्थित?
दानीजेल

2
@ डैनियल ऑफिशियल डॉक में कहा गया है @ डैनियल मैगन्सन जवाब स्टेट्सNote: Use bc3 on the command line for both BC version 3 and 4
BNT


6

यहाँ मेरी विन्यास फाइल है। कुछ कुश्ती हुई लेकिन अब यह काम कर रही है। मैं विंडोज़ सर्वर का उपयोग कर रहा हूँ, msysgit और तुलना 3 से परे (जाहिरा तौर पर एक x86 संस्करण)। Youll ध्यान दें कि मुझे कोई तर्क निर्दिष्ट करने की आवश्यकता नहीं है, और मैं "cmd" के बजाय "पथ" का उपयोग करता हूं।

[user]
        name = PeteW
        email = petew@petew.com
[diff]
        tool = bc3
[difftool]
        prompt = false
[difftool "bc3"]
        path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
[merge]
        tool = bc3
[mergetool]
        prompt = false
        keepBackup = false
[mergetool "bc3"]
        path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
        trustExitCode = true
[alias]
        dt = difftool
        mt = mergetool

4

तुलना से परे सहायता पृष्ठ थोड़ा संक्षिप्त है।

मेरे diff.external जवाब की जाँच करेंअधिक (सटीक वाक्य रचना के बारे में) के लिए

निकालें:

$ git config --global diff.external <path_to_wrapper_script>

कमांड प्रॉम्प्ट पर, " git-diff-wrapper.sh" के लिए पथ के साथ प्रतिस्थापित किया जा रहा है , ताकि आपका ~/.gitconfigसम्‍मिलित हो

-->8-(snip)--
[diff]
    external = <path_to_wrapper_script>
--8<-(snap)--

रैपर स्क्रिप्ट और डिफरेंट टूल के रास्तों को निर्दिष्ट करने के लिए सही सिंटैक्स का उपयोग करना सुनिश्चित करें, अर्थात बैकलैश के स्थान पर आगे स्लैस्ड का उपयोग करें। मेरे मामले में, मेरे पास है

[diff]
    external = c:/Documents and Settings/sschuber/git-diff-wrapper.sh

में .gitconfigऔर

"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

आवरण लिपि में।


नोट: आप भी उपयोग कर सकते हैं git difftool



3

कृपया ध्यान दें कि आप $ 2 का गलत रास्ता बनाते हैं। क्योंकि आप साइग्विन के अधीन हैं, लेकिन बीसी 3 नहीं, इसलिए आपको इसके लिए एक पूर्ण पथ निर्दिष्ट करना चाहिए। जैसे "d: / cygwin $ 2"

कृपया मेरे git-diff-wrapper.sh को देखें:

$ cat ~/git-diff-wrapper.sh
#!/bin/sh
echo $2
echo $5
/cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "d:/programs/cygwin$2" "$5"

सौभाग्य।


3
आपको वास्तव में इसके लिए cygpath का उपयोग करना चाहिए; उदा bcompare.exe $(cygpath -w $2)। चीयर्स।
दान मोल्डिंग

3

यदि आप विंडोज 7 (पेशेवर) और Git for Windows (v 2.15 या इसके बाद के संस्करण) चला रहे हैं, तो आप बस यह पता लगाने के लिए नीचे कमांड चला सकते हैं कि विंडोज के लिए आपके Git द्वारा समर्थित अलग-अलग उपकरण क्या हैं।

git difftool --tool-help

आपको इसके समान आउटपुट दिखाई देगा

git difftool --tool = 'को निम्न में से एक पर सेट किया जा सकता है:
vimdiff vimdiff2 viddiff3

इसका मतलब यह है कि आपके गिट अभी समर्थन नहीं कर सकते हैं (अभी नहीं मिल सकता है) की तुलना में मल्टिफ्टूल से तुलना करें।

Git को मान्य difftool के रूप में तुलना करने से परे खोजने के लिए, आपको अपने सिस्टम पथ वातावरण चर में संस्थापन निर्देशिका से परे होना चाहिए । आप इसे शेल (cmd, git bash या पावरशेल से bcompare चलाकर देख सकते हैं। मैं Git Bash का उपयोग कर रहा हूं)। यदि बियॉन्ड तुलना लॉन्च नहीं होती है, तो अपने इंस्टालेशन वेरिएबल में इसकी इंस्टॉलेशन डायरेक्टरी (मेरे मामले में, C: \ Program Files \ Beyond तुलना 4) जोड़ें। इसके बाद, अपने शेल को पुनरारंभ करें। Git, Beyond Comparison को संभव से अधिक विकल्प दिखाएगा। आप किसी भी अन्य शाखा के साथ किसी भी स्थानीय फ़ाइल की तुलना करने के लिए difftool (उदाहरण के लिए, की तुलना में लॉन्च करने के लिए नीचे दिए गए आदेशों में से किसी का उपयोग कर सकते हैं)

git difftool -t bc branchnametocomparewith -- path-to-file
or 
git difftool --tool=bc branchnametocomparewith -- path-to-file

आप नीचे दिए गए आदेशों का उपयोग करके डिफ़ॉल्ट डिफ़ाल्टूल के रूप में तुलना से परे कॉन्फ़िगर कर सकते हैं

   git config --global diff.tool bc

पीएस ध्यान रखें कि उपरोक्त कमांड में bc3 या bc हो सकता है जो आपके पथ सिस्टम वैरिएबल से प्राप्त करने में सक्षम था।


2

BC4 64bit के लिए अद्यतन: यह विंडोज v.2.16.2 के लिए Git के लिए काम करता है और 4 से तुलना करें - v.4.2.4 (64% संस्करण)

मैंने अपने यूजर रूट "C: \ Users \ MyUserName" में स्थित .gitconfig फ़ाइल को मैन्युअल रूप से संपादित किया और उसके साथ diff / difftool और merge / mergetool टैग को बदल दिया

[diff]
  tool = bc
[difftool "bc"]
  path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[difftool "bc"]
  cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$LOCAL\" \"$REMOTE\"
[difftool]
  prompt = false
[merge]
  tool = bc
[mergetool "bc"]
  path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[mergetool "bc"]
  cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"


1

अंतर एक्स कहा जा रहा है: इसे bcomp.exe कॉल करने के लिए सेट करें और यह ठीक काम करेगा। अपने वातावरण को bcompare.exe पर कॉल करने के लिए कॉन्फ़िगर करें और आप अपने रिविजन सिस्टम के खाली होने से ली गई तुलना के साथ समाप्त हो जाएंगे।


1

बियॉन्ड तुलना 3 के लिए ये कमांड चलाएं (यदि आपके सिस्टम में BCompare.exe पथ अलग है, तो कृपया इसे अपने अनुसार बदलें):

git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/BCompare.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

फिर उपयोग करें git difftool


1

विंडोज 10, जीआईटी v2.13.2

मेरी .itconfig याद रखें कि '' और '' '' के लिए एस्केप चरित्र जोड़ें।

[diff]
    tool = bc4
[difftool]
    prompt = false
[difftool "bc4"]
    cmd = \"C:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = bc4
[mergetool "bc4"]
    path = C:\\Program Files\\Beyond Compare 4\\BCompare.exe

आप इसे कॉन्फ़िगर करने के लिए git कमांड का उपयोग करने के लिए difftool के रूप में तुलना करने से परे संदर्भ स्थापित कर सकते हैं ।


नमस्ते, मेरे पास एक समान स्क्रिप्ट थी और जब तक मैं C: \\ Program Files \\ से 4 \\ BComP.exe की तुलना में स्विच नहीं कर पाया, तब तक यह विफल रही। BCompare.exe के साथ तुलना करने से पहले अस्थायी फ़ाइल हटा दी गई थी, इसलिए मैंने केवल नवीनतम फ़ाइल देखी, कोई चेक-इन संस्करण नहीं।
गबरील

0

जो भी कारण के लिए, मेरे लिए, git द्वारा बनाई गई tmp फ़ाइल को तुलना में खोलने से पहले हटा दिया जा रहा था। मुझे पहले इसे दूसरे स्थान पर कॉपी करना था।

cp -r $2 "/cygdrive/c/temp$2"
cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp$2" "$5"

0

मैक के लिए बहुत शोध करने के बाद इसने मेरे लिए काम किया ..! 1. परे तुलना स्थापित करें और यह नीचे स्थान पर स्थापित किया जाएगा

/ एप्लीकेशन / बियॉन्ड \ तुलना .app / कॉन्टेंट्स / मैक / बीकंप

Git http://www.scootersoftware.com/support.php?zz=kb/mac में भिन्न / मर्ज टूल के रूप में bc बनाने के लिए कृपया इन चरणों का पालन करें


0

बीसी 2 के साथ जीआईटी संस्करण 2.15.1.windows.2 के लिए।

नीचे दिया गया विन्यास आखिरकार मेरी मशीन पर काम करता है।

[difftool "bc2"] cmd = \"c:/program files/beyond compare 2/bc2.exe\" ${LOCAL} ${REMOTE}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.