গোপথের বাইরে কোনও গো প্রকল্পের সোর্স কোড রাখার একটি খারাপ ধারণা


32

আমি গো ব্যবহার করে একটি নতুন প্রকল্পে কাজ করছি, এবং আমরা সবাই গোতে নতুন। আমরা স্ট্যান্ডার্ড গো ডিরেক্টরি কাঠামো অনুসরণ করছি এবং সমস্ত কোড এর অধীনে

$ GOPATH / src / github.com / CompanyName / projectname

এটি একটি গিট সংগ্রহস্থলের মূলও

স্ট্যান্ডার্ড প্রস্তাবিত পাথ লেআউটটি কিছুটা অদ্ভুত বলে মনে হচ্ছে, বিশেষত যদি আমরা একটি বহু-ভাষা প্রকল্পে কাজ করি, যেমন একটি গো-ভিত্তিক বিশ্রাম / HTTP ব্যাকএন্ড এবং একটি এইচটিএমএল / জাভাস্ক্রিপ্টের ফ্রন্ট-এন্ড। সেক্ষেত্রে আমি সম্ভবত আমার প্রকল্প কাঠামোটি দেখতে চাই:

/
  doc/
  src/
    server/
      main.go
      module1/
        module.go
    client/
      index.html
  Makefile

তবে কোডটি গোপ্যাথের ভিতরে রাখা কি আসলেই দরকার?

প্রয়াস হিসাবে আমি একটি ছোট প্রোগ্রাম তৈরি করেছি যেখানে উত্স কোডটি গোপ্যাথের বাইরে ছিল। আমি প্রকল্পটি সহজেই প্যাকেজগুলিতে ভাগ করতে পারি, সুতরাং প্যাকেজটি কোনও ফোল্ডারে mainকোনও fooপ্যাকেজ foo/ব্যবহার করে রেফারেন্স করতে পারে import "./foo"

আমি যতদূর দেখতে পাচ্ছি, দুটি জিনিস এগুলি আমাকে অস্বীকার করে:

  • অন্যান্য কোড এই কোডটি আমদানি করতে পারে না। এটি কোনও সমস্যা নয় কারণ আমরা বিশেষত সংস্থার জন্য একটি পরিষেবা তৈরি করছি।
  • আমি go installএটি ইনস্টল করতে ব্যবহার করতে পারি না । এটিও কোনও সমস্যা নয়। বিল্ড পাইপলাইনটি সরঞ্জামটি ইনস্টল করে।

তবে এটি বিল্ড সার্ভারকে এর কর্মক্ষেত্রটি GOPATH এর মধ্যে না থাকতে দেয়

এই জাতীয় দৃষ্টিভঙ্গি কি নিরুৎসাহিত? যদি তাই হয় তবে কেন?

আমি তালিকাভুক্ত দুটি ছাড়াও কি অন্য নেতিবাচক পার্শ্ব প্রতিক্রিয়া রয়েছে?

মনে রাখবেন যে এটি কোনও সংস্থার জন্য ব্যক্তিগত প্রকল্প, পাবলিক ওপেন সোর্স কোড নয়।

গোপথ থেকে আসল প্রকল্পটি বিচ্ছিন্ন করা লোভনীয় বলে মনে হচ্ছে, তবে আপনি যখন শু মঞ্চে থাকবেন তখন নিয়ম ভাঙার ক্ষেত্রে আমাদের অবশ্যই যত্নবান হওয়া উচিত

উত্তর:


12

আপনাকে গোপ্যাথ ব্যবহার করার দরকার নেই, তবে আপনি goকমান্ডটি থেকে পাওয়া সমস্ত দুর্দান্ত সরঞ্জামাদি বাদ দিয়েছেন । তারা সকলেই কোডটি স্ট্যান্ডার্ড GOPATH শ্রেণিবিন্যাসে প্রত্যাশা করে।

আপনি উল্লেখ করেছেন go install, তবে এটিও go test(এবং দুর্দান্ত go test -coverকভারেজ টুল) কাজ করবে না go get, যা আপনাকে রিমোট কোড ডাউনলোড করতে দেয় যা গোপথকে সবকিছু লিখবে, সুতরাং আপনাকে জিনিসগুলি অনুলিপি করতে হবে।

অবশ্যই, আপনি এগুলি মেক / স্কোনস / সিএমকে / যা কিছু দিয়ে তৈরি করতে পারেন এবং জিনিসগুলি সম্পন্ন করতে পারেন এবং এটি সম্ভবত আপনার পরিবেশের জন্য কাজ করবে, তবে এটির অতিরিক্ত কাজ যা goসরঞ্জামটি দ্বারা সম্পন্ন হতে পারে ।


9

(অস্বীকৃতি: আমি এই জাতীয় স্টাফ ডিজাইন করতে পছন্দ করি তবে আমি গোতে নতুন, আমি বাস্তবে এটি চেষ্টা করে দেখিনি)

আইডিয়া: দুজনে কেন?

আপনি যদি সিলেকিং অ্যাকাউন্টটি গ্রহণ করেন তবে দুটি পোলার বিকল্প উপলব্ধ রয়েছে:

(ক) এসআরসি-তে কোড, কর্মক্ষেত্রের সাথে সংযুক্ত

/
  doc/
  src/
    server/
      projectname/
    client/
      index.html
  go_workspace/
    src/
      companyname/
        projectname -> ../../../src/server/projectname
      github.com/
        someone/
          library/
    bin/
    pkg/
  Makefile

(খ) ওয়ার্কস্পেসের কোড, এসআরসি-তে সংযুক্ত

/
  doc/
  src/
    server/
      projectname -> ../../go_workspace/src/companyname/projectname
    client/
      index.html
  go_workspace/
    src/
      companyname/
        projectname/
      github.com/
        someone/
          somelib/
    bin/
    pkg/
  Makefile

আমি "এ" এর দিকে ঝুঁকতাম কারণ:

  • আপনার সমস্ত উত্স শারীরিকভাবে একত্রে বসবাস,
  • projectname সহজেই এর নিজস্ব রেপো থাকতে পারে বা আপনার পুরো প্রকল্পের জন্য একটি রেপো রাখতে পারেন,
  • আপনি সম্পূর্ণ go_workspaceরূপান্তরিত রাখতে পারেন এবং একটি মেক স্টেপের মাধ্যমে এটিকে সূচনা করতে পারেন ( godepতারপরে প্রকল্পটি সিমলিংক ব্যবহার করে )

1
এটি "এ" হতে হবে, যেহেতু "বি" গোয়ের সাথে "গো ইনস্টল: গোপথের বাইরে ডিরেক্টরি directory দির directory" ডিরেক্টরি থাকার জন্য কোনও ইনস্টলনের জায়গা নেই বলে অভিযোগ করবে।
ওজেফোর্ড

2

2019 আপডেট

আপনাকে GOPATHআর আপনার প্রকল্পের অধীনে সঞ্চয় করার দরকার নেই।

এর বাইরে যে কোনও ডিরেক্টরিতে রেখে দিন GOPATH। তারপরে টাইপ করুন:

go mod init github.com/youruser/yourproject

আপনি যেতে ভাল হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.