पर्सफोर्स के साथ विजुअल स्टूडियो का स्रोत नियंत्रण एकीकरण कैसे काम करता है?

हम पर्फोर्स और विजुअल स्टूडियो का उपयोग कर रहे हैं। जब भी हम एक शाखा बनाते हैं, तब तक कुछ परियोजनाओं को स्रोत नियंत्रण तक सीमित नहीं किया जाएगा जब तक कि हम "स्रोत नियंत्रण से मुक्त" का उपयोग नहीं करते हैं, लेकिन अन्य परियोजनाएं बिना किसी काम के काम करती हैं। मेरी जांच से, मैं कुछ चीजों को शामिल करता हूं:

हमारी .csproj फ़ाइलों में, ये सेटिंग्स हैं:

कभी-कभी वे सभी "एसएके" पर सेट होते हैं, कभी-कभी नहीं। ऐसा लगता है कि अगर चीजें "एसएके" कहती हैं तो चीजें काम करने की अधिक संभावना होती हैं।

हमारी .sln फ़ाइल में, कई परियोजनाओं के लिए सेटिंग्स हैं:

  • SccLocalPath #
  • SccProjectFilePathRelativizedFromConnection #
  • SccProjectUniqueName #

(# वह संख्या है जो प्रत्येक प्रोजेक्ट की पहचान करती है।) एससीसीएलोकलपथ समाधान फ़ाइल से संबंधित एक पथ है। अक्सर यह "।" होता है, कभी-कभी यह वह फ़ोल्डर होता है जिसमें प्रोजेक्ट होता है, और कभी-कभी यह ".." या ".. \ .." होता है, और इसके लिए एक फ़ोल्डर को इंगित करने के लिए यह बुरा लगता है समाधान फ़ोल्डर। संबंधित एक परियोजना से उस फ़ाइल को प्रोजेक्ट फ़ाइल में पथ है। यदि SccLocalPath प्रोजेक्ट के फ़ोल्डर को इंगित करता है तो यह पूरी तरह गायब हो जाएगा। यदि SccLocalPath में ".." है, तो इस पथ में फ़ोल्डर नाम शामिल हो सकते हैं जो शाखाओं के बीच समान नहीं हैं, जो मुझे लगता है कि समस्याएं होती हैं।

तो, आखिरकार उन विशिष्टताओं को प्राप्त करें जिन्हें मैं जानना चाहता हूं:

  • जब आप "स्रोत नियंत्रण बदलें" करते हैं और परियोजनाओं को बाध्य करते हैं तो क्या होता है? विजुअल स्टूडियो कैसे तय करता है कि परियोजना और समाधान फ़ाइलों में क्या रखा जाए?
  • जब आप "स्रोत नियंत्रण से खोलें" करते हैं तो क्या होता है?
  • यह "कनेक्शन" फ़ोल्डर क्या है जो SccLocalPath और SccProjectFilePathRelativizedFromConnection का संदर्भ देता है? विजुअल स्टूडियो/पर्सफोर्स इसे कैसे चुनता है?
  • क्या आप समाधान की नई शाखा बनाते समय भी स्रोत नियंत्रण बाइंडिंग काम करने के लिए कुछ अनुशंसित तरीका है?

Added June 2012: I don't use Perforce any more, so I can't vouch for it, but have a look at KCD's answer below. Apparently there's a new P4 VS plugin under development. Hopefully it should clear up all this mess!

0

9 उत्तर

बहुत खराब तरह से। मुझे पता है कि आपके प्रश्नों का उत्तर नहीं है जिसे आप ढूंढ रहे थे (भविष्य में, शायद आप फोकस को संकीर्ण कर सकते हैं?), लेकिन विजुअल स्टूडियो के साथ स्रोत नियंत्रण एकीकरण बस बेकार है। इसका कारण यह है कि उन्हें सभी को माइक्रोसॉफ्ट के भयानक एससीसी इंटरफेस का उपयोग करना है। यह दयनीय है! उन्होंने परियोजना फाइलों में स्रोत नियंत्रण जानकारी डाली! वे ऐसा क्यों करेंगे?

बस विजुअल स्टूडियो एकीकरण को छोड़ दें और पर्सफोर्स क्लाइंट का उपयोग करें। यह इतना अतिरिक्त काम नहीं है। आप Perforce क्लाइंट पर स्विच करने के लिए प्रति दिन 30 सेकंड नहीं छोड़ सकते हैं और वहां से फ़ाइलों को चेक आउट/आउट कर सकते हैं?

0
जोड़ा
यह चेकआउट , नाम बदलता है, और यह जानने के लिए कि कौन सी नई फाइलें जोड़ने के लिए एकीकरण उपयोगी है। (अक्सर यह स्पष्ट चुड़ैल नहीं है वीएस फाइलें उत्पन्न होती हैं और चुड़ैल को स्रोत नियंत्रण में जोड़ने की आवश्यकता होती है।) यदि पर्सफोर्स ने संपादन से पहले चेकआउट को मजबूर नहीं किया है तो एकीकरण की आवश्यकता बहुत कम हो जाएगी।
जोड़ा लेखक Ian Ringrose, स्रोत
मैं हमेशा जांच के लिए पर्सफोर्स क्लाइंट का उपयोग करता हूं, लेकिन वीएस के भीतर से फाइलों को जांचने में सक्षम होना उपयोगी होता है। यहां तक ​​कि अगर मैं स्वयं वीएस एकीकरण के बिना जीने के लिए तैयार था, तो भी मैं दूसरों को इसका इस्तेमाल करने से रोकने की स्थिति में नहीं हूं। आदर्श रूप से, मैं अनुभव हर किसी के लिए बेहतर बनाना चाहता हूं।
जोड़ा लेखक Weeble, स्रोत

मैं आखिरी जवाब दे सकता हूं।

जब आप एक नई शाखा बनाते हैं तब भी स्रोत नियंत्रण बाइंडिंग को काम करने के लिए, सख्त पदानुक्रमित संरचना का पालन करें:

/Solution
  /library1
  /library2
  /product1
  /product2
  /subsolution
    /sublibrary1
    /subproduct1

प्रत्येक फ़ाइल बिल्कुल एक .vcproj में होना चाहिए। आप एक ही निर्देशिका में एकाधिक .vcproj प्राप्त कर सकते हैं, लेकिन अगर वे फ़ाइलें साझा करते हैं, तो साझा फ़ाइलों को अपने स्वयं के .vproproj में जाना चाहिए।

यदि आप इसमें निरंतर हैं, तो सभी एससीसी सामान सापेक्ष-पथ होंगे, इसलिए एक नई शाखा काम करेगी (क्योंकि यह केवल शीर्ष निर्देशिका को बदलती है)।

0
जोड़ा
हमारी परियोजनाओं में से कोई भी अपने फ़ोल्डर के बाहर फाइलें नहीं है। ऐसा लगता है कि कुछ परियोजनाएं असेंबली संदर्भित करती हैं जो ब्रांच नहीं होती हैं और इसलिए समाधान फ़ोल्डर के बाहर रहते हैं। यही कारण है कि "कनेक्शन" फ़ोल्डर समाधान फ़ोल्डर के बाहर है?
जोड़ा लेखक Weeble, स्रोत

किसी फ़ाइल को नाम बदलने या इसे किसी नई फ़ोल्डर निर्देशिका में स्थानांतरित करने के लिए समर्थन भयानक और दृश्य स्टूडियो पी 4 प्लग-इन एकीकरण का उपयोग करते हुए दर्दनाक है। कोई अंतर्निहित सुविधा मौजूद नहीं है जो फ़ाइल को नाम बदलने के लिए P4 को अलर्ट करता है या इसे स्थानांतरित कर दिया गया है।

मुद्दा यह है कि किसी फाइल को नाम बदलने के लिए केवल संबंधित वीएस प्रोजेक्ट फ़ाइल को अपडेट करने की आवश्यकता नहीं है, लेकिन अगर आप उचित संशोधन इतिहास को बनाए रखना चाहते हैं तो पर्सफोर्स को भी बदलाव की आवश्यकता है।

वर्तमान में, वीएस एकीकरण का उपयोग करते हुए, मुझे एक ही ऑपरेशन में दोनों करने का कोई तरीका नहीं दिखता है। इसके बजाए, आपको यह करना होगा:

  1. फ़ाइल को Perforce क्लाइंट
  2. के भीतर से बदलें/स्थानांतरित करें
  3. वीएस
  4. के भीतर प्रोजेक्ट फ़ाइल में पुराना फ़ाइल नाम संदर्भ हटाएं
  5. वीएस
  6. के भीतर प्रोजेक्ट फ़ाइल में नया फ़ाइल नाम संदर्भ जोड़ें
  7. अपने परिवर्तन जमा करें

यदि आप निरंतर एकीकरण निर्माण प्रक्रिया का उपयोग करते हैं और आप अंतिम चरण से पहले किसी भी बिंदु पर परिवर्तन जमा करते हैं, तो आपको टूटा हुआ निर्माण करने की गारंटी है।

समस्या महत्वपूर्ण रूप से अधिक फ़ाइलों को बड़ा करती है जिन्हें नाम बदलने या स्थानांतरित करने की आवश्यकता होती है। यह किसी भी चिकनी प्रक्रिया नहीं है।

0
जोड़ा

परिचय

मैं इस दावे से असहमत हूं कि विजुअल स्टूडियो में पर्सफोर्स एकीकरण "भयानक" है। इसके बजाय, मैं इसे परिभाषित करता हूं "बॉक्स अनुभव से बाहर इष्टतम से कम है" :-)। निम्नलिखित खंड परियोजना/समाधान सेटअप के लिए एकीकरण और सिफारिशों की मेरी समझ पर चर्चा करते हैं।

यदि आप स्रोत नियंत्रण एकीकरण के काम के विवरण में रुचि नहीं रखते हैं तो आप इस उत्तर के अंत तक जा सकते हैं जहां मैं वीबल के प्रश्न के उत्तर सारांशित करता हूं।

Disclaimer: The following sections are just educated guesses based on my empirical experience, however I've used the technique over many years in many projects (each project having multiple experimental/trunk/maintenance/release branches, sometimes even multiple solution files, without issues). The disadvantage is that you have to manually update the project files - but the 2 minute investment is amortized over the lifetime of a project pretty nicely IMHO :-).

समाधान बनाम परियोजना

विजुअल स्टूडियो प्रारंभिक समाधान लोडिंग के दौरान दोनों समाधान फ़ाइल और प्रत्येक प्रोजेक्ट फ़ाइल से स्रोत नियंत्रण बाध्यकारी जानकारी का उपयोग करता है। यह बाध्यकारी जानकारी तब name.suo फ़ाइल में संग्रहीत होती है (मान लीजिए कि हम समाधान के रूप में name.sln का उपयोग कर रहे हैं) - ध्यान दें कि suo फ़ाइलें हैं छुपा ध्वज के साथ चिह्नित किया गया है ताकि वे फ़ाइल एक्सप्लोरर में दिखाई न दें (जब तक कि आप "छिपी हुई फ़ाइलें और फ़ोल्डर्स" विकल्प को ओवरराइड नहीं करते)।

The easiest way to re-bind to source control provider if anything goes wrong is to delete the appropriate suo file and reopen solution. After suo file has been created, changes to elements have no effect.

यदि प्रारंभिक समाधान खोलने के दौरान समाधान फ़ाइल में संग्रहीत बाध्यकारी जानकारी और प्रोजेक्ट फ़ाइल में संग्रहीत जानकारी के बीच एक विसंगति है, तो विजुअल स्टूडियो इसे ठीक करने का प्रयास करेगा (कभी-कभी यह आपके निर्णय के लिए भी संकेत देगा कि समाधान में जानकारी या विसंगति को हल करने के लिए परियोजना में जानकारी को "मास्टर" के रूप में इस्तेमाल किया जाना चाहिए):

alt text

विजुअल स्टूडियो डीआरवाई का उल्लंघन क्यों कर रहा है (खुद को दोहराएं) सिद्धांत? मुझे पता नहीं है। मुझे लगता है कि इसमें ऐतिहासिक कारण हैं और विजयी स्रोत सुरक्षित :-) नामक उस दुःस्वप्न की जरूरतों के साथ कसकर मिलते हैं।

इसे "सही ढंग से" कैसे सेट करें?

पर्सफोर्स को या तो नए या मौजूदा समाधान/परियोजनाओं को जोड़ते समय, मैं एक खाली समाधान बनाकर हमेशा प्रारंभ करता हूं ("स्रोत-नियंत्रण एक खाली समाधान" अनुभाग देखें)। मैं फिर इस रिक्त समाधान में परियोजनाओं को जोड़ता हूं, एक दूसरे के बाद। इस परियोजना के आधार पर चरण अलग-अलग हैं कि क्या प्रोजेक्ट जोड़ा जा रहा है या नहीं ("स्रोत-नियंत्रण मौजूदा (अनबाउंड) परियोजनाएं" और "स्रोत-नियंत्रण मौजूदा (बाध्य) परियोजनाओं" अनुभाग देखें) या मुझे एक नया निर्माण करने की आवश्यकता है (देखें "स्रोत-नियंत्रण नई परियोजनाओं" खंड)।

एक खाली समाधान स्रोत-नियंत्रित

स्रोत नियंत्रण के लिए एक नया खाली समाधान जोड़ने के लिए, निम्न कार्य करें:

  1. Start Visual Studio, "New" -> "Project..." -> "Other project types" -> "Blank solution"; fill in solution name and location, "OK" button
  2. "File" -> "Source Control" -> "Add Solution to Source Control..."
  3. In the connection dialog enter appropriate P4 server port, client and user (note that view of the selected client must include the location that you picked in step 1)
  4. "View" -> "Pending Checkins" -> "Check In" -> in the submit dialog instead of hitting the "Submit" button, use "Cancel".
    Reason: The "Check In" action will create a new file, "name.vssscc", then add both "name.sln" and "name.vssscc" to Perforce's default changelist; by cancelling the submit dialog we will keep the "add" operation pending and will be able to edit the files before submitting to P4
  5. Close Visual Studio
  6. Open the name.sln file in your favourite editor (notepad, if you're really desperate :-) ) and add two new lines (SccProjectName0 and SccProvider0) - the blank solution file should now have a source control section as follows:

    GlobalSection(SourceCodeControl) = preSolution
        SccNumberOfProjects = 1
        SccLocalPath0 = .
        SccProjectName0 = Tutorial
        SccProvider0 = MSSCCI:Perforce\u0020SCM
    EndGlobalSection
    

    The values should be chosen as follows:

    • SccProjectName0: an arbitrary string that will be displayed in "Change Source Control" dialog as "Server Binding". This name is used to determine what projects/solution files can share the same source control connection. I recommend not using space for this name as escaping rules for spaces are different in solution and project files.
    • SccProvider0: hard-coded value "MSSCCI:Perforce\u0020SCM".
  7. Submit the two pending files using the Perforce client of your choice (p4.exe, P4Win, P4V)

अब आप बाइंडिंग का परीक्षण कर सकते हैं:

  1. Make sure Visual Studio is closed
  2. Delete **all* files except the name.sln (especially the name.suo)
  3. Open Visual Studio and use it to open name.sln
  4. A connection dialog should appear, use appropriate port/client/user and click OK
  5. Solution explorer should now display the solution node with a padlock overlay icon: Source-controlled blank solution
  6. You can now verify source control status of the solution by using "File" -> "Source Control" -> "Change Source Control...": Source control status of blank solution Note: The column "Server Binding" is showing the value we chose for "SccProjectName0".

स्रोत-नियंत्रण नई परियोजनाओं

यदि आप एक नई परियोजना बना रहे हैं और तुरंत इसे पेर्सफोर्स डिपो में ट्रैक करना शुरू करना चाहते हैं, तो इन चरणों का पालन करें:

  1. Open the source-controlled solution in Visual Studio
  2. "File" -> "Add" -> "New Project..." - pick the project type you're adding, name and location (location should be a subdirectory of the directory where the solution file is stored)
  3. "File" -> "Save All" (this will commit all in-memory changes to solution file and the newly created project file to the disk)
  4. Manually edit the project file you just created using an editor of your choice (come on, notepad AGAIN? ;-) ). Add the following property elements into a PropertyGroup (any property group):

    
        ...
        Tutorial
        ..\..
        MSSCCI:Perforce SCM
        ...
    
    

    The values should be chosen as follows:

    • SccProjectName - this is the value that is displayed in "Change Source Control" dialog as "Server Binding"; should be the same as the value you used for SccProjectName0 in blank solution; if not the same, solution and this project won't be able to share the same source control provider connection
    • SccLocalPath - relative path to the reference directory (displayed in "Change Source Control" dialog as "Local binding"); because I recommend using the solution directory as the reference directory, this is in effect relative path from directory containing project file to directory containing solution file (my example is storing projects in "(solutionDir)/Source/ProjectName/projectName.csproj", thus the relative path is "two levels up")
    • SccProvider - hard-coded value "MSSCCI:Perforce SCM"; this is used to determine what SCCAPI provider are the Scc* binding values valid for
  5. Switch back to Visual Studio; it should automatically detect that the project file has been updated externally and offer to reload it (if not, unload and reload the project manually)

  6. "View" -> "Pending Checkins"
  7. "Check In" -> I recommend right-clicking on (solutionName).vssscc file and selecting "Revert if unchanged" (even though Visual Studio opens it for edit, it remains unchanged); provide description and submit the change

यह सत्यापित करने के लिए कि नई जोड़ी गई परियोजना ठीक से बाध्य है, आप इन चरणों का पालन कर सकते हैं:

  1. Make sure Visual Studio is closed
  2. Delete (solutionName).suo file as well as MSSCCPRJ.SCC (in solution directory)
  3. Open Visual Studio and use it to open (solutionName).sln
  4. A connection dialog should appear, use appropriate port/client/user and click OK
  5. Solution explorer should now display the project node with a padlock overlay icon: Source-controlled projects
  6. You can now verify source control status of the solution by using "File" -> "Source Control" -> "Change Source Control...": Status of source-controlled projects

    One thing to note about this status screenshot is that when I selected the solution row, all the remaining rows were "selected" as well (blue highlight). This is because all those entries have the same "Server Binding" + "Local Binding" and thus share the same source-control-provider (P4) connection.

    Also note that "Relative Path" for both projects has two levels, and are relative to the same "Local Binding" - the directory where solution file resides.

मौजूदा (अनबाउंड) परियोजनाओं को स्रोत-नियंत्रित करना

यदि आपके पास ऐसी मौजूदा परियोजनाएं हैं जिनका उपयोग अभी तक किसी अन्य पर्सफोर्स समाधान में नहीं किया गया है, तो उन्हें इन चरणों का पालन करें ताकि उन्हें पर्सफोर्स में जोड़ा जा सके (यानी उन परियोजनाओं को आयात करना जो पहले (इंटरनेट डाउनलोड इत्यादि) स्रोत-नियंत्रित नहीं हैं या एक अलग स्रोत नियंत्रण का उपयोग कर रहे थे प्रदाता (दृश्य स्रोत सुरक्षित, आदि)।

  1. Copy the project into appropriate location
  2. Clean-up existing source control bindings (if any):
    • Remove existing project-file bindings, i.e. all properties starting with "Scc"
    • Delete file (projectName).vspscc in the same directory as the project file (if any)
  3. Open the source-controlled solution in Visual Studio
  4. "File" -> "Add" -> "Existing project..." - browse to the project (the copy you created in step 1)
  5. "File" -> "Save All" (this will commit all in-memory changes to solution file)
  6. Follow the steps 4-7 from "स्रोत-नियंत्रण नई परियोजनाओं" (i.e. you will now add "Scc*" property elements into a PropertyGroup)

Verification steps are exactly the same as in "स्रोत-नियंत्रण नई परियोजनाओं" section.

मौजूदा (बाध्य) परियोजनाओं को स्रोत-नियंत्रित करना

यदि आपके पास ऐसी परियोजनाएं हैं जो यहां चर्चा की गई तकनीक का उपयोग करके पहले से ही बलफोर्स से बंधी हुई हैं और आप उन्हें एक अलग समाधान (नई शाखा, परियोजना का पुन: उपयोग करने का वैकल्पिक समाधान इत्यादि) में उपयोग करना चाहते हैं, तो निम्न चरणों का उपयोग करें:

  1. Integrate the project into desired location
  2. Open the source-controlled solution in Visual Studio
  3. "File" -> "Add" -> "Existing project..." - browse to the project created in step 1 via integration
  4. "View" -> "Pending Checkins" -> "Check In" - add description and submit

सारांश

  • Source control binding information is stored in both solution and projects, must be in sync (if not, Visual Studio will attempt to fix any discrepancies)
  • I always treat project files as the primary source of binding information and solution files as throwaway files that can be recreated easily by first एक खाली समाधान स्रोत-नियंत्रित and then adding desired projects
  • Solution file should always have valid SccProvider0
    0
    जोड़ा
    विजुअल स्टूडियो का कौन सा संस्करण इस उत्तर पर लागू होता है?
    जोड़ा लेखक M. Dudley, स्रोत
    महान जवाब, अच्छी तरह से शोध! मेरे प्रयोगों में मैं कुछ ऐसा करने की कोशिश कर रहा हूं। प्राथमिक अंतर यह है कि मुझे अपनी परियोजनाओं में सभी एससीसी सेटिंग्स के लिए "एसएके" मिला है। जब तक मैंने आपके समाधान निर्देशों में चरण 6 का पालन किया है, तो यह MSSCCPRJ.SCC के बिना खुश प्रतीत होता है। मुझे कुछ भी देखना चाहिए?
    जोड़ा लेखक Weeble, स्रोत
    अधिक अच्छी सलाह। मैं पूरी तरह से "बड़े-बैंग चेक" पर सहमत हूं। जब भी मैं एक नई शाखा सिंक करता हूं और पता लगाता हूं कि यह "बस काम नहीं करता" तो यह मुझे परेशान करता है। और यहां तक ​​कि जब आप इसे काम करते हैं, तो आपको ध्यान देना होगा, क्योंकि किसी के लिए गलती से खराब विलय के साथ सेटिंग्स पर स्टॉप करना आसान है।
    जोड़ा लेखक Weeble, स्रोत
    असल में, मुझे आश्चर्य है कि क्या मैं इनमें से कुछ या सभी चरणों को स्वचालित करने के लिए एक स्क्रिप्ट लिख सकता हूं ...
    जोड़ा लेखक Weeble, स्रोत
    मैं सब कुछ के साथ 100% सहमत नहीं है, लेकिन यह पोस्ट खूबसूरती से लिखा गया था!
    जोड़ा लेखक code4life, स्रोत
    अच्छी जानकारी के अपने समुद्र में एक बेहद उपयोगी टिडबिट .suo फ़ाइल को हटा रहा है। इससे मुझे कई मौकों पर मदद मिली है।
    जोड़ा लेखक Ray Vega, स्रोत
    मेरे दिमाग को पढ़ना, क्या आप ...? ;-)
    जोड़ा लेखक Milan Gardian, स्रोत
    उपर्युक्त "बिग-बैंग चेक" यह सुनिश्चित करता है कि नई टीम के सदस्य एक परियोजना में शामिल हो सकें और चीजें सिंक करने के बाद उनके लिए "बस काम करेंगी" - यह मुझे सबसे बड़ी समस्या है - आंशिक बाइंडिंग जो लोग कभी नहीं देखते हैं क्योंकि "यह मेरी मशीन पर काम करता है" (यह केवल इसलिए काम करता है क्योंकि .suo फ़ाइल पहले से मौजूद है)।
    जोड़ा लेखक Milan Gardian, स्रोत
    साथ ही, मेरे पास पी 4 में "ठीक से" बाध्य और सबमिट की गई सभी परियोजनाओं के साथ समाधान होने के बाद, मैं "बिग-बैंग चेक" करता हूं: वर्कस्पेस (पी 4 सिंक //...#none) से सभी समाधान फ़ाइलों को हटाएं, हटाएं समाधान डीआईआर, दृश्य स्टूडियो में नए सिंक किए गए समाधान को खोलने और खोलने के लिए सिंक।
    जोड़ा लेखक Milan Gardian, स्रोत
    @emddudley: मैंने Visual Studio .NET के बाद से इस उत्तर में वर्णित सिद्धांतों का उपयोग किया है (उन्हें समय के साथ विकसित करना)। इस समय (2011 के अंत) मुझे पता है कि वे पीएसएससीसी 2010.2+ के साथ वीएस 2008+ में समस्याओं के बिना काम करते हैं (मैं पी 4 एससीसी 2011.1 के साथ वीएस 2010 का उपयोग कर रहा हूं)।
    जोड़ा लेखक Milan Gardian, स्रोत
    मैं ज्यादातर सुनिश्चित करता हूं कि "चेंज सोर्स कंट्रोल" मेरे आखिरी स्क्रीनशॉट की तरह दिखता है। यदि सर्वर और स्थानीय बाइंडिंग समान हैं और सभी परियोजनाएं एक साथ हाइलाइट हो जाती हैं, तो चीजें ठीक काम कर रही हैं।
    जोड़ा लेखक Milan Gardian, स्रोत
    काश मैं इसे एक से अधिक बार वोट दे सकता हूं
    जोड़ा लेखक John, स्रोत

बस इस चालू रखने के लिए - पी 4 वीएस प्लगइन 2012 के आसपास फिर से लिखा गया है

अब आप अपने सभी दैनिक प्रदर्शन कर सकते हैं   स्वाभाविक रूप से पर्सफोर्स के साथ बातचीत, कोड में जांच और फ़ाइल इतिहास देखने की तरह,   सीधे आईडीई से।

     

यदि आप एक पावर उपयोगकर्ता हैं जो थोड़ी अधिक खोज रहे हैं, तो पी 4 वीएस निराश नहीं होगा।   पी 4 वी एस पर्सफोर्स स्ट्रीम और स्ट्रीम ग्राफ के साथ पूरी तरह से संगत है   समय-व्यतीत दृश्य और संशोधन के साथ आईडीई से सुलभ है   ग्राफ़। यदि आप शाखा प्रबंधन के लिए ज़िम्मेदार हैं, तो आप विलय कर सकते हैं   पी 4 वीएस से भी।

     

और, यदि आप दूरस्थ रूप से काम करते हैं या थोड़ा निजी ब्रांचिंग करना चाहते हैं,   P4Sandbox को P4VS के माध्यम से कॉन्फ़िगर किया जा सकता है।

0
जोड़ा

Milan's post is well-researched and well-written, but its length demonstrates beyond a shadow of a doubt that the P4SCC model is broken. Storing source control binding info inside the project & solution files is ridiculous. Enforcing (via sccprojectname) that a project be part of only one solution is equally ridiculous.

Additionally, P4SCC has a tremendous performance cost in a large solution, as it retrieves info from source control for each file at startup, and maintains that state in memory throughout the development session. It creates extra cruft in the form of information-free .vsscc & vssscc files to support some SCC feature that (AFAICT) Perforce does not use.

आदर्श पर्सफोर्स एकीकरण इस तरह दिखता है:

  • यदि मैं कोई नया समाधान, प्रोजेक्ट, या प्रोजेक्ट आइटम बनाता हूं, तो 'p4 add' चलाएं।
  • अगर मैं कोई फ़ाइल बदलता हूं, तो 'p4 संपादित करें' चलाएं।
  • संशोधन इतिहास, संशोधन ग्राफ, timelapse/दोष, और 'पी 4 gui में दिखाएं' के लिए कुछ टूलबार/संदर्भ मेनू एकीकरण।
  • (अच्छा है) अगर मैं डिपो में मौजूद एक फ़ाइल का नाम बदलता हूं, तो 'p4 integrate' और 'p4 delete' चलाएं। अगर मैं जोड़ने के लिए खोला गया फ़ाइल का नाम बदलता हूं, तो 'पी 4 रिवर्ट' और 'पी 4 एड' चलाएं।
  • यह सब
  • है

We have moved completely away from P4SCC and its bizarre requirements and burdens. Instead we use NiftyPerforce. There are some bugs, but we find working around these bugs to be much less frustrating than working around the design defects in the Perforce<->VSSCC model.

0
जोड़ा
यह निश्चित रूप से अच्छा लग रहा है। मैं इसे अपने सहयोगियों को दिखाऊंगा। मैं मानता हूं कि पी 4 एससीसी बहुत टूटा हुआ है, हालांकि मैं मदद नहीं कर सकता लेकिन महसूस करता हूं कि काफी बिना बड़े समाधानों के बिना इसकी सुविधाओं (जैसे फ़ाइलों के लिए स्थिति आइकन दिखाना) प्रदान करना संभव होना चाहिए। चेक-इन फाइलों में सभी "स्रोत नियंत्रण जानकारी" बकवास। मुझे आश्चर्य है कि क्यों बलफोर्स बेहतर प्लगइन नहीं बनाते हैं - निश्चित रूप से उनके कई ग्राहकों को विजुअल स्टूडियो का उपयोग करना चाहिए?
जोड़ा लेखक Weeble, स्रोत
@Weeble, @Timbo - मैं मानता हूं कि पी 4 एससीसी दुनिया में सॉफ्टवेयर का सबसे बड़ा टुकड़ा नहीं है और मैंने बड़ी परियोजनाओं में मंदी देखी है। हालांकि, मैं तर्क दूंगा कि समाधान और परियोजनाओं दोनों में पी 4 बाइंडिंग स्थापित करने की जटिलता एक बार "कर" है जिसे आप भुगतान करते हैं और कभी भी भुगतान नहीं करना पड़ता है। चीजें बाद में "बस काम"। मुझे लगता है कि सेटअप की विशेषताओं और जटिलता दोनों को मूल रूप से सुधार किया जा सकता था, जो कि पी 4 एससीसी के स्रोत को जारी करने के लिए पर्सफोर्स थे। कोई हमेशा सपना देख सकता है :-)।
जोड़ा लेखक Milan Gardian, स्रोत
सहमत हुए, मुझे नफरत है कि इसने टीम पर हर किसी को प्लगइन स्थापित करने के लिए मजबूर किया ... कई इसके खिलाफ बहुत थे और हम वापस पी 4विन पर वापस आ गए :(
जोड़ा लेखक felickz, स्रोत
मेरी समझ यह है कि क्रुफ्ट और परफ मुद्दे विजुअल स्टूडियो के स्रोत नियंत्रण प्लग-इन इंटरफ़ेस के लिए स्थानिक हैं; वहां एक आर्किटेक्चर विसंगति मौजूद है जैसे कि पी 4 को वीएसएस की तरह कार्य करने का नाटक करना है। मार्च 2008 में पर्सफोर्स सपोर्ट से: "यह संभावना नहीं है कि हम विजुअल स्टूडियो के लिए गैर-एमएसएससीसीआई पैकेज तैयार करेंगे। विजुअल स्टूडियो में बहुत से इंटरफेस हैं जो तब गायब होंगे और लंबे समय तक उपयोगकर्ता को कोई लाभ नहीं देंगे। " मुझे नहीं पता कि वे अभी भी इस कथन के पीछे खड़े हैं; वे बाधाएं हैं। मैंने उस समय से पी 4 एससीसी की भी कोशिश नहीं की है; perf अब बेहतर हो सकता है।
जोड़ा लेखक Timbo, स्रोत
@ मिलन - यह एक बार कर प्रति परियोजना है, और शायद अधिकांश समाधानों में यह ठीक काम करता है। लेकिन जब भी हम एक परियोजना को जोड़ते थे, तब हम एससीसीएलोकलपैथ और एससीसीप्रोजेक्टफाइलरेटाइविज्ड फ्रॉमकनेक्शन से जूझ रहे थे, जो कि जब हम स्विच करते थे तो अपेक्षाकृत अक्सर होता था। कई समाधानों के बीच परियोजनाओं को साझा करने की कोशिश करना एक बड़ा दर्द था।
जोड़ा लेखक Timbo, स्रोत
मेरे नए गग में हम वीएस 2012 पर नए पी 4 वीएस का उपयोग कर रहे हैं। आईएमओ यह पी 4 एससीसी और निफ्टीपर्सफोर्स से बेहतर है।
जोड़ा लेखक Timbo, स्रोत
पी 4 वीएस भी एक विशाल संसाधन हॉग होने के समाप्त हो गया है और हमने इसे निफ्टीपेरफोर्स की तरह एक कस्टम इन-हाउस प्लगइन के पक्ष में फिर से गिरा दिया है। मुझे नहीं पता कि पी 4 उत्पाद प्रबंधक क्यों सोचते हैं कि उन्हें वीएस के अंदर पी 4 यूआई को फिर से लागू करने की आवश्यकता है।
जोड़ा लेखक Timbo, स्रोत

मिलान गार्डियन के बहुत ही जानकारीपूर्ण उत्तर के साथ प्रयोग करने के बाद, मुझे लगता है कि मैं इसे अच्छी तरह से काम करने के लिए एक आसान समाधान प्रदान कर सकता हूं।

जैसा कि वीबल ने उल्लेख किया है, एसएके मान ठीक काम करते हैं जब सब कुछ ठीक से स्थापित होता है, और वे अक्सर डिफ़ॉल्ट मान होते हैं (लेकिन मुझे लगता है कि यह इस परियोजना प्रकार पर निर्भर करता है)। अगर वे आपकी परियोजना में दिखाई नहीं देते हैं, तो बस इस संपत्ति समूह में पेस्ट करें।


    SAK
    SAK
    SAK
    SAK

SourceCodeControl GlobalSection में इन दो पंक्तियों को * .sln में जोड़ें। जब तक परियोजना फ़ाइलों में एसएके मूल्य होते हैं, उन्हें समाधान से नामों का उत्तराधिकारी होना चाहिए।

SccProjectName0 = Perforce\u0020Project
SccProvider0 = MSSCCI:Perforce\u0020SCM

नहीं * .vssscc, * .vspscc, या * .SCC फ़ाइलों को जांचने की आवश्यकता है (हालांकि समाधान खोले जाने पर उन्हें उत्पन्न किया जाएगा)।

0
जोड़ा

विजुअल स्टूडियो के साथ पर्सफोर्स का उपयोग P4CONFIG पर्यावरण चर का उपयोग कर सरलीकृत किया जा सकता है।

Basically you go into Visual Studio, Tools -> Options -> Source Control -> Plug-in Settings, Advanced button. This will bring up a Perforce configuration dialog specific to the SCC integration. Switch to the Connection tab, and check the radio button titled 'Bind the workspace that matches your Perforce environment settings'. This will tell perforce to prefer using P4CONFIG environment variable for determining the environment you are under. This same dialog exists in P4V under Edit -> Preferences, but only affects p4v's behavior.

आप P4CONFIG पर्यावरण परिवर्तक को कैसे सेट करते हैं, यह कुछ डिग्री तक आपके ऊपर है। मुझे उन्हें हर जगह एक ही नाम दिया जाना पसंद है, इसलिए मैंने p4config.cfg नाम की फ़ाइल देखने के लिए एक सिस्टम-व्यापी पर्यावरण परिवर्तनीय P4CONFIG सेट किया है। यह फ़ाइल सिर्फ एक आईएनआई स्टाइल फ़ाइल है, जहां आप अन्य चर जैसे P4USER, P4CLIENT, P4HOST इत्यादि असाइन कर सकते हैं। Perforce इस फ़ाइल को वर्तमान निर्देशिका में और सभी मूल निर्देशिकाओं में तब तक खोजेगा जब तक कि यह किसी से मुकाबला न करे। असल में आप इस फ़ाइल को मूल रूप से अपनी निर्देशिका में डालते हैं जहां आपके क्लाइंटपेक को आपके हार्ड ड्राइव पर मैप किया गया है, और इसे अकेला छोड़ दें।

यह दृष्टिकोण कार्य करने के क्रम में दृश्य स्टूडियो में एससीसी कॉन्फ़िगरेशन की आवश्यकता वाले 'शुद्धता' की मात्रा को बहुत कम करता है। (एसएके बाइंडिंग ठीक काम करते हैं आदि)

यदि पहली बार या पूरी तरह से स्वच्छ निर्देशिका संरचना के लिए अपने कोड को समन्वयित करने के बाद, और अस्थायी रूप से ऑफ़लाइन काम करने या बाइंडिंग को हटाने के लिए एक बल प्राप्त करने के बारे में शिकायत प्राप्त करने के बाद, अभी भी कुछ संपादन करने की आवश्यकता है। मुख्य रूप से। एसएलएन फ़ाइल को स्वयं संशोधित करने की आवश्यकता होती है, इसलिए यह जानता है कि एसएलएन के पास स्वयं के लिए एससीसी बाइंडिंग है। यह सुनिश्चित करके किया जाता है कि निम्नलिखित फ़ील्ड्स SsNumberOfProjects के बाद .sln फ़ाइल में रखे गए हैं।

SccProjectName0 = Perforce\u0020Project
SccProvider0 = MSSCCI:Perforce\u0020SCM

सभी व्यक्तिगत परियोजनाओं को डिफ़ॉल्ट 'एसएके बाइंडिंग' के साथ ठीक काम करना चाहिए बशर्ते आप पी 4 कॉनफिग दृष्टिकोण का उपयोग कर रहे हों। इसे ठीक करने से पर्सफोर्स को एक साफ सिंक से पूरी तरह से काम करने की अनुमति मिलनी चाहिए, और प्रत्येक परियोजना निर्देशिका में एमएसएससीसीपीआरजेएससीसी क्रूफ्ट की पीढ़ी को भी खत्म करना चाहिए।

0
जोड़ा

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

सरल जवाब 'विजुअल स्टूडियो स्रोत नियंत्रण एकीकरण का उपयोग करना बंद करें'। यह सिर्फ सादा बेकार है। यहां तक ​​कि टीएफएस के साथ यह सिर्फ सादा बेकार है।

यदि आप विजुअल स्टूडियो के भीतर से चेक आउट करने में सक्षम होना चाहते हैं, तो बस एक कस्टम टूल बनाएं। उचित वीएस वैरिएबल के साथ 'पी 4 एडिट' के लिए एक सरल कॉल आपको चाहिए। एक फाइल वापस करना चाहते हैं? वही विचार ... उपयुक्त चर के साथ पी 4 वापस लाओ। किया हुआ।

स्रोत स्रोत संपादक के रूप में अपनी स्रोत नियंत्रण आवश्यकताओं (सबमिशन, इतिहास, diffs, आदि) को प्रबंधित करने के लिए p4v का उपयोग करें। यह एक एससीएम इंटरफ़ेस के रूप में बेकार है।

0
जोड़ा
भयानक जवाब। बनाम एकीकरण ठीक है अगर आपका वीसीएस इसका सही ढंग से समर्थन करता है। मुझे वॉल्ट या एसवीएन का उपयोग करने में कोई परेशानी नहीं है जो बनाम 'नए वीसीएस एकीकरण को लागू करता है।
जोड़ा लेखक Andy, स्रोत