Visual Studio ნელია VPN-ის საერთო საქაღალდეზე: რატომ იქცევა შენახვა ორმხრივ მოგზაურობად
საერთო საქაღალდეზე რედაქტირება შენახვას, მენიუებსა და ცვლილებების თვალყურის დევნას ორმხრივ მოგზაურობად აქცევს. გადაიტანეთ სამუშაო ასლი ლოკალურად და ისტორია ერთ ობიექტად გადაგზავნეთ, ნაცვლად მისი გავლისა.
გადაწყვეტა, რომელიც ლოკალური დისკიდან წამში იხსნება, გვირაბით მისაწვდომი საერთო საქაღალდიდან ოცდაათ წამში იხსნება. გვირაბი თავისთავად იშვიათად არის მიზეზი. იცვლება ის, რომ ოპერაციები, რომლებიც ლოკალური გამოძახებები იყო, სინქრონულ ორმხრივ მოგზაურობად იქცევა, და რედაქტორი რამდენიმეს ასრულებს სანამ ფანჯარა გამოჩნდება. ქვემოთ მოცემული მექანიზმი ხსნის, რატომ არის თითოეული ძვირი და რომელი შეგიძლიათ წაშალოთ.
რას აკეთებს რედაქტორი სანამ ფაილი ღიაა
ცვლილებების თვალყურის მქონე რედაქტორი ყოველ ღია ფაილზე გამოწერას ინახავს. ლოკალური ტომი ამ გამოწერას ფაილური სისტემიდან ემსახურება ქსელის გარეშე. საერთო საქაღალდის გავლით იგივე თვისება შეიძლება გადაგვარდეს მეტამონაცემების განმეორებით კითხვად, რადგან შეტყობინების მოდელი SMB-ის გავლით ერთნაირად არ იქცევა. ცვლილებების თვალყურის გამორთვა სამართლიანი პირველი ცდაა, რადგან ის გვირაბზე ხელის შეუხებლად მოთხოვნების მთელ კლასს აშორებს.
პროექტის სისტემა საკუთარ ტრაფიკს ამატებს. გადაწყვეტის ჩატვირთვა კატალოგებს ჩამოთვლის, პროექტის ფაილებს კითხულობს და შეიძლება SDK-ები ან პაკეტები შეამოწმოს, და ყოველი შემოწმება ორმხრივი მოგზაურობაა, როცა გზა შორეულია. ბევრი პროექტის მქონე გადაწყვეტა ამ რიცხვს ამრავლებს, ამიტომ გახსნის დრო უფრო სწრაფად იზრდება, ვიდრე ფაილების ზომები მიანიშნებდა.
ჭურვის ძიებები, რომლებიც მენიუს გამოჩენამდე იწურება
Windows ამატებს შეჩერების მეორე წყაროს, რომელსაც IDE-სთან არაფერი აქვს საერთო. Explorer და მისი ჭურვის გაფართოებები ყოველ ჯერზე კონტექსტური მენიუს გახსნისას თავიდან ხსნიან ადრე გამოყენებულ პრინტერებს, დამაგრებულ დისკებსა და მალსახებს. როცა ეს სამიზნეები ისეთ ქსელშია, სადაც გვირაბი ვერ აღწევს, ყოველი ამოხსნა იბლოკება ვადის გასვლამდე, და მხოლოდ ამის შემდეგ იხატება მენიუ. ამიტომ მარჯვენა დაწკაპუნება შეიძლება წამობით ჩამოკიდდეს, სანამ თავად ფაილი ჩვეულებრივ იხსნება.
წაშალეთ მკვდარი დამაგრებები და პრინტერების რიგები, ან დატოვეთ მხოლოდ ის, რაც არსებობს იმ ქსელში, რომელშიც რეალურად ხართ. იგივე მსჯელობა ფარავს ყველაფერს, რაც ფონზე ხსნის გზას, მათ შორის ბოლო ფაილების სიებსა და დამაგრებულ საქაღალდეებს.
net use
Get-Printer | Select-Object Name, PortName
Measure-Command { Get-ChildItem \files\proj | Out-Null }
რატომ იმარჯვებს ლოკალური სამუშაო ასლი
საერთო საქაღალდეზე უშუალოდ მუშაობა რედაქტირება-აწყობა-ტესტი ციკლისთვის ყველაზე ცუდი წყობაა, რადგან რედაქტორი, კომპილატორი და ვერსიების კონტროლის კლიენტი თითოეული ცალ-ცალკე კითხულობს იმ შორეულ ფაილებს. თითოეული თავის ორმხრივ მოგზაურობას იხდის, ხოლო აწყობა თითო ფაილზე ერთხელ იხდის. ლოკალური ასლი საცავის გავლით გაგზავნით ცვლის პატარა გადასვლების წალეკვას ერთი განზრახ გადასვლით. ხაზი არ გაუმჯობესებულა; გადასვლების რაოდენობა ჩამოინგრა.
ეს სტრუქტურული ცვლილებაა და არა მორგების ვარჯიში, და სწორედ ამიტომ მუშაობს მაშინ, როცა გვირაბის პარამეტრები არ მუშაობს. ის ასევე თვალსაჩინოს ხდის მარცხის რეჟიმს: თუ აწყობა ლოკალური ასლით კვლავ ნელია, საერთო საქაღალდე არასოდეს ყოფილა პრობლემა.
გადაიტანეთ ისტორია როგორც ერთი ობიექტი
როცა თავად საცავმა უნდა გადაკვეთოს გვირაბი, გაგზავნეთ ისტორია ერთ ობიექტში და არა მისი გავლით. პაკეტი ერთი ფაილია და ამიტომ ერთი გადაცემა, მაშინ როცა ათასობით თავისუფალ ობიექტს გამვლელი checkout ათასობით გადასვლა ღირს. Mercurial და Git ორივე მხარს უჭერს ამ ფორმას.
hg bundle --base 9f2c1a7e outgoing.hg
hg unbundle outgoing.hg
git bundle create repo.bundle main
git clone repo.bundle repo
საბაზო რევიზია ის ნაწილია, რომელიც სწორად უნდა მოხვდეს, რადგან ის წყვეტს, რამდენი ისტორია მოგზაურობს. ყველაფრის შეკვრა მუშაობს და ხაზს ფლანგავს, მაშინ როცა ბოლო საერთო ცვლილებიდან შეკვრა მხოლოდ იმას გადააქვს, რაც მეორე მხარეს აკლია.
გაზომეთ სამი ოპერაცია, სანამ გამტარობას დაადანაშაულებთ
გაზომეთ სამი რამ ცალ-ცალკე: ერთი პატარა ფაილი გახსნილი, ერთი კატალოგი ჩამოთვლილი, ერთი შენახვა დასრულებული. თუ სამივე ნელია ფაილების რაოდენობის პროპორციულად, ღირებულება ორმხრივი მოგზაურობებია. თუ ერთი ჩერდება და დანარჩენები რიგზეა, ეჭვი იქონიეთ მიუწვდომელი რესურსის მიმართ ვადის გასვლაზე და არა გამტარობაზე. ჩაწერეთ, რომელ ქსელში იყო მანქანა ყოველ გაშვებაზე, რადგან სხვა პროფილზე ხელახლა დაკავშირებულმა ნოუთბუქმა შეიძლება პასუხი შეცვალოს ცდებს შორის.
შემდეგ გაიმეორეთ იგივე სამი პროექტის ლოკალური ასლის წინააღმდეგ. განსხვავება საერთო საქაღალდის ფასია და სწორედ ეს რიცხვი უნდა მოიყვანოთ, როცა ვიღაც უფრო სწრაფ ხაზს გვთავაზობს გადაწყვეტად.