การเปลี่ยนแปลงล่าสุด | การกำหนดค่า คีย์ฮอต | คำถามที่พบบ่อย การพัฒนา | การสอน


Zulip Terminal เป็นไคลเอนต์เทอร์มินัลอย่างเป็นทางการสำหรับ Zulip โดยให้อินเทอร์เฟซผู้ใช้ที่ใช้ข้อความ (TUI)
จุดมุ่งหมายเฉพาะ ได้แก่ :
เรียนรู้วิธีใช้เทอร์มินัล Zulip ด้วยบทช่วยสอนของเรา
เราพิจารณาลูกค้าให้มอบประสบการณ์ผู้ใช้ในชีวิตประจำวันที่มีความมั่นคงในระดับปานกลาง
การพัฒนาในปัจจุบันมุ่งเน้นไปที่การปรับปรุงแง่มุมของการใช้งานในชีวิตประจำวันซึ่งใช้กันทั่วไป - เพื่อลดความต้องการให้ผู้ใช้เปลี่ยนไปใช้ไคลเอนต์อื่นชั่วคราวสำหรับคุณสมบัติเฉพาะ
ข้อ จำกัด ในปัจจุบันที่เราคาดว่าจะแก้ไขในระยะยาวเท่านั้นรวมถึงการสนับสนุนสำหรับ:
ปัจจุบันไคลเอนต์เทอร์มินัลมีความแตกต่างโดยเจตนาจำนวนมากกับ Zulip Web Client:
สำหรับข้อสงสัยเกี่ยวกับการสนับสนุนคุณสมบัติที่หายไปโปรดดูคำถามที่พบบ่อย (คำถามที่พบบ่อย) ปัญหาเปิดของเราหรือแชทกับผู้ใช้และนักพัฒนาออนไลน์ที่เซิร์ฟเวอร์ชุมชน Zulip!
เราขอแนะนำให้ติดตั้งในสภาพแวดล้อมเสมือนจริงของ Python โดยเฉพาะ (ดูด้านล่าง) หรือใช้ตัวเลือกอัตโนมัติเช่น PIPX
รุ่นที่เสถียร - สิ่งเหล่านี้มีอยู่ใน PYPI เป็นแพ็คเกจ Zulip -term
หากต้องการติดตั้งให้เรียกใช้คำสั่งเช่น: pip3 install zulip-term
เวอร์ชันล่าสุด (GIT) - เวอร์ชันการพัฒนาล่าสุดสามารถติดตั้งได้จากสาขา main ที่เก็บ GIT
หากต้องการติดตั้งให้เรียกใช้คำสั่งเช่น: pip3 install git+https://github.com/zulip/zulip-terminal.git@main
นอกจากนี้เรายังให้ตัวอย่าง Dockerfiles เพื่อสร้างภาพ Docker ใน Docker/
ด้วย Python 3.6+ ที่จำเป็นสำหรับการทำงานสิ่งต่อไปนี้ควรทำงานกับระบบส่วนใหญ่:
python3 -m venv zt_venv (สร้างสภาพแวดล้อมเสมือนจริงชื่อ zt_venv ในไดเรกทอรีปัจจุบัน)source zt_venv/bin/activate (เปิดใช้งานสภาพแวดล้อมเสมือนจริงนี่จะถือว่าเป็นเปลือกที่เหมือนทุบตี) หากคุณเปิดหน้าต่างเทอร์มินัลอื่น (หรือบันทึก/รีสตาร์ทคอมพิวเตอร์ของคุณ) คุณจะต้องเรียกใช้ ขั้นตอนที่ 2 ของรายการด้านบนอีกครั้งก่อนที่จะเรียกใช้ zulip-term เนื่องจากเปิดใช้งานสภาพแวดล้อมเสมือนจริงนั้น คุณสามารถอ่านเพิ่มเติมเกี่ยวกับสภาพแวดล้อมเสมือนจริงในเอกสารประกอบ Library VENV Python 3
โปรดทราบว่าไม่มีระบบอัพเดทอัตโนมัติดังนั้นโปรดติดตามตำแหน่งการอัปเดตที่เกี่ยวข้องกับเวอร์ชันการติดตั้งของคุณ:
รุ่นที่มั่นคง
ก่อนการอัพเกรดเราขอแนะนำให้คุณตรวจสอบการเปลี่ยนแปลงในรุ่นล่าสุดเพื่อให้คุณทราบถึงการเปลี่ยนแปลงที่สำคัญระหว่างรุ่น
ตอนนี้มีการประกาศในหัวข้อ # ประกาศ> Terminal Reasees หัวข้อบนเซิร์ฟเวอร์ชุมชน Zulip (https://chat.zulip.org) ซึ่งสามารถมองเห็นได้โดยไม่ต้องมีบัญชี
หากคุณต้องการรับอีเมลเมื่อมีการประกาศการอัปเดตคุณสามารถลงทะเบียนสำหรับบัญชีบนเซิร์ฟเวอร์นี้ซึ่งจะช่วยให้คุณสามารถเปิดใช้งานการแจ้งเตือนทางอีเมลสำหรับสตรีม #AnneNounce (บทความช่วยเหลือการตั้งค่าการแจ้งเตือนใน chat.zulip.org)
นอกจากนี้คุณยังสามารถปรับแต่งการตั้งค่านาฬิกา GitHub ของคุณในหน้าโครงการเพื่อรวมรุ่น
PYPI ให้บริการฟีด RSS และบริการอื่น ๆ ติดตามข้อมูลนี้
รุ่นล่าสุด (Git)
เวอร์ชันที่ติดตั้งจากสาขา GIT main จะไม่อัปเดตโดยอัตโนมัติ - 'ล่าสุด' หมายถึงสถานะ ณ จุดติดตั้ง
นอกจากนี้ยังใช้กับการติดตั้งแหล่งอื่นหรือการพัฒนาอื่น ๆ (เช่น https://aur.archlinux.org/packages/python-zulip-term-git/)
ดังนั้นอัพเกรดแพ็คเกจของคุณโดยใช้คำสั่งด้านบนหรือที่เกี่ยวข้องกับระบบแพ็คเกจของคุณ (เช่น arch)
ในขณะที่สาขา main มีจุดประสงค์เพื่อให้มีเสถียรภาพหากการอัพเกรดระหว่างสองเวอร์ชัน 'ล่าสุด' โดยพลการโปรดทราบว่า การเปลี่ยนแปลงนั้นไม่ได้ถูกสรุป แม้ว่าบันทึกการกระทำของเราควรอ่านได้มาก
เมื่อเรียกใช้ zulip-term ครั้งแรกจะมองหาไฟล์ zuliprc โดยค่าเริ่มต้นในไดเรกทอรีโฮมไดเรกทอรีของคุณซึ่งมีรายละเอียดเพื่อเข้าสู่ระบบเซิร์ฟเวอร์ Zulip
หากไม่พบไฟล์นี้คุณมีสองตัวเลือก:
zulip-term จะแจ้งให้คุณทราบสำหรับเซิร์ฟเวอร์อีเมลและรหัสผ่านของคุณและสร้างไฟล์ zuliprc สำหรับคุณในตำแหน่งนั้น
หมายเหตุ: หากคุณใช้ Google, GitHub หรือการตรวจสอบภายนอกอื่น ๆ เพื่อเข้าถึงองค์กร Zulip ของคุณคุณอาจจะไม่มีชุดรหัสผ่านและจำเป็นต้องสร้างหนึ่งเพื่อใช้ Zulip-Terminal
<Zulip server URL>/accounts/password/reset/ เพื่อสร้างรหัสผ่านใหม่สำหรับบัญชีของคุณ (เช่น: https://chat.zulip.org/accounts/password/reset/) ทุกครั้งที่คุณเรียกใช้ zulip-term คุณสามารถระบุเส้นทางไปยังไฟล์ zuliprc ทางเลือกโดยใช้ตัวเลือก -c หรือ --config-file เช่น $ zulip-term -c /path/to/zuliprc
ไฟล์ .zuliprc ที่สอดคล้องกับบัญชีของคุณบนเซิร์ฟเวอร์ Zulip เฉพาะสามารถดาวน์โหลดได้ผ่านทางเว็บหรือแอปพลิเคชันเดสก์ท็อปที่เชื่อมต่อกับเซิร์ฟเวอร์นั้น ในเวอร์ชันล่าสุดนี้สามารถพบได้ใน การตั้งค่าส่วนบุคคล ของคุณใน ส่วนบัญชีและความเป็นส่วนตัว ภายใต้ คีย์ API เป็น 'แสดง/เปลี่ยนคีย์ API ของคุณ'
หากนี่เป็นบัญชี Zulip เดียวของคุณคุณอาจต้องการย้ายและเปลี่ยนชื่อไฟล์นี้ไปยังตำแหน่งไฟล์เริ่มต้นด้านบนหรือเปลี่ยนชื่อเป็นสิ่งที่น่าจดจำยิ่งขึ้นซึ่งคุณสามารถส่งผ่านไปยังตัวเลือก ---config-file ไฟล์ .zuliprc นี้ให้สิทธิ์ทั้งหมดที่คุณมีในฐานะผู้ใช้นั้น
.zuliprc files ที่คล้ายกันสามารถดาวน์โหลดได้จากส่วน บ็อต สำหรับบอทใด ๆ ที่คุณตั้งค่าแม้ว่าจะมีสิทธิ์ จำกัด ตามลำดับ
หมายเหตุ: หากเซิร์ฟเวอร์ของคุณใช้ใบรับรองที่ลงนามด้วยตนเองหรือการเชื่อมต่อที่ไม่ปลอดภัยคุณจะต้องเพิ่มตัวเลือกพิเศษให้กับไฟล์ zuliprc ด้วยตนเอง - ดูเอกสารประกอบสำหรับโมดูล Zulip Python
เราขอแนะนำให้เรียกใช้ zulip-term โดยใช้ตัวเลือก -e หรือ --explore (ในโหมดสำรวจ) เมื่อคุณลอง Zulip Terminal เป็นครั้งแรกที่เราตั้งใจจะไม่ทำเครื่องหมายข้อความเป็นอ่าน ลองทำตามด้วยการสอนของเราเพื่อให้ได้สิ่งต่างๆ
ไฟล์ zuliprc มีสองส่วน:
[api] พร้อมข้อมูลที่จำเป็นในการเชื่อมต่อกับเซิร์ฟเวอร์ Zulip ของคุณ[zterm] ที่มีการกำหนดค่าเฉพาะกับ zulip-term ไฟล์ที่มีเฉพาะส่วนแรกสามารถสร้างอัตโนมัติในบางกรณีโดย zulip-term หรือคุณสามารถดาวน์โหลดหนึ่งจากบัญชีของคุณบนเซิร์ฟเวอร์ของคุณ (ดูด้านบน) บางส่วนของส่วนที่สองสามารถเพิ่มและปรับในขั้นตอนเมื่อคุณต้องการปรับแต่งพฤติกรรมของ zulip-term
ตัวอย่างด้านล่างพร้อมเนื้อหาส่วนของ Dummy [api] หมายถึงไฟล์กำหนดค่าการทำงานที่มีค่าเริ่มต้นที่เข้ากันได้ทั้งหมด [zterm]
[api]
[email protected]
key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
site=https://example.zulipchat.com
[zterm]
## Theme: available themes can be found by running `zulip-term --list-themes`, or in docs/FAQ.md
theme=zt_dark
## Autohide: set to 'autohide' to hide the left & right panels except when they're focused
autohide=no_autohide
## Exit Confirmation: set to 'disabled' to exit directly with no warning popup first
exit_confirmation=enabled
## Footlinks: set to 'disabled' to hide footlinks; 'enabled' will show the first 3 per message
## For more flexibility, comment-out this value, and un-comment maximum-footlinks below
footlinks=enabled
## Maximum-footlinks: set to any value 0 or greater, to limit footlinks shown per message
# maximum-footlinks=3
## Notify: set to 'enabled' to display notifications (see elsewhere for configuration notes)
notify=disabled
## Color-depth: set to one of 1 (for monochrome), 16, 256, or 24bit
color-depth=256
## Transparency: set to 'enabled' to allow background transparency
## This is highly dependent on a suitable terminal emulator, and support in the selected theme
## Terminal emulators without this feature may show an arbitrary solid background color
transparency=disabled
## Editor: set external editor command, to edit message content
## If not set, this falls back to the $ZULIP_EDITOR_COMMAND then $EDITOR environment variables
# editor: nano
หมายเหตุ: การตั้งค่าการกำหนดค่าเหล่านี้ส่วนใหญ่อาจระบุไว้ในบรรทัดคำสั่งเมื่อเริ่มต้น
zulip-term;zulip-term -hหรือzulip-term --helpจะให้รายการตัวเลือกทั้งหมด
โปรดทราบว่าการแจ้งเตือนไม่ได้รับการสนับสนุนใน WSL ในปัจจุบัน ดู #767
คำสั่งต่อไปนี้ติดตั้ง notify-send เกี่ยวกับระบบที่ใช้ Debian คำสั่งที่คล้ายกันสามารถพบได้สำหรับระบบ Linux อื่น ๆ เช่นกัน
sudo apt-get install libnotify-bin
ไม่จำเป็นต้องมีแพ็คเกจเพิ่มเติมเพื่อเปิดใช้งานการแจ้งเตือนใน OS X อย่างไรก็ตามมีเสียงการแจ้งเตือนให้ตั้งค่าตัวแปรต่อไปนี้ (ขึ้นอยู่กับประเภทของเชลล์ของคุณ) ค่าเสียง (ที่นี่ ping) สามารถเป็นหนึ่งในไฟล์ .aiff ที่พบที่ /System/Library/Sounds หรือ ~/Library/Sounds
ทุบตี
echo 'export ZT_NOTIFICATION_SOUND=Ping' >> ~/.bash_profile
source ~/.bash_profile
zsh
echo 'export ZT_NOTIFICATION_SOUND=Ping' >> ~/.zshenv
source ~/.zshenv
เทอร์มินัล Zulip อนุญาตให้ผู้ใช้คัดลอกข้อความบางอย่างไปยังคลิปบอร์ดผ่านโมดูล Python, Pyperclip โมดูลนี้ใช้ประโยชน์จากแพ็คเกจระบบต่าง ๆ ซึ่งอาจหรือไม่อาจมาพร้อมกับระบบปฏิบัติการ ฟีเจอร์ "Copy to Clipboard" มีให้เฉพาะสำหรับการคัดลอกอีเมลสตรีมจาก Popup ข้อมูลสตรีม
บน Linux โมดูลนี้ใช้คำสั่ง xclip หรือ xsel ซึ่งควรมาพร้อมกับระบบปฏิบัติการแล้ว หากไม่มีการติดตั้งคำสั่งเหล่านี้ในระบบของคุณให้ติดตั้งใด ๆ โดยใช้:
sudo apt-get install xclip [Recommended]
หรือ
sudo apt-get install xsel
ไม่จำเป็นต้องมีแพ็คเกจเพิ่มเติมเพื่อเปิดใช้งานการคัดลอกไปยังคลิปบอร์ด
ในขณะที่ Zulip Terminal ได้รับการออกแบบมาเพื่อทำงานกับเซิร์ฟเวอร์ Zulip ใด ๆ ผู้ร่วมให้ข้อมูลหลักจะอยู่ในเซิร์ฟเวอร์ชุมชน Zulip ที่ https://chat.zulip.org โดยมีการสนทนาส่วนใหญ่ในสตรีม #Zulip-Terminal
คุณสามารถดูการสนทนาในสตรีมนั้นโดยใช้ลิงก์ด้านบนหรือลงทะเบียนสำหรับบัญชีและแชทกับเราไม่ว่าคุณจะเป็นผู้ใช้หรือนักพัฒนา!
เรามุ่งมั่นที่จะรักษาชุมชน Zulip ให้เป็นมิตรการต้อนรับและมีประสิทธิผลดังนั้นหากเข้าร่วมโปรดเคารพบรรทัดฐานชุมชนของเรา
สิ่งเหล่านี้เป็นชุดย่อยของ บรรทัดฐานชุมชน ที่เชื่อมโยงข้างต้นซึ่งเกี่ยวข้องกับผู้ใช้เทอร์มินัล Zulip: สิ่งเหล่านั้นมีแนวโน้มที่จะอยู่ในสภาพแวดล้อมข้อความ จำกัด ในแถว/คอลัมน์อักขระและนำเสนอในสตรีมขนาดเล็กนี้
ชอบข้อความในบล็อกรหัสแทนที่จะเป็นภาพหน้าจอ
Zulip Terminal รองรับการดาวน์โหลดรูปภาพ แต่ไม่มีการรับประกันว่าผู้ใช้จะสามารถดูได้
ลองใช้ meta + m เพื่อดูการจัดรูปแบบเนื้อหาตัวอย่างรวมถึงบล็อกโค้ด
ชอบการกล่าวถึงเงียบกว่าการกล่าวถึงปกติ - หรือหลีกเลี่ยงการกล่าวถึงทั้งหมด
ด้วยหัวข้อของ Zulip ผู้รับที่ตั้งใจจะชัดเจนอยู่แล้ว สมาชิกที่มีประสบการณ์จะถูกนำเสนอตามเวลาของพวกเขา - ตอบสนองต่อข้อความเมื่อพวกเขากลับมา - และคนอื่น ๆ อาจสามารถช่วยเหลือได้ก่อนหน้านั้น
(บันทึกการกล่าวถึงเป็นประจำสำหรับผู้ที่คุณไม่คาดหวังว่าจะมีอยู่เป็นประจำ)
ลองใช้ Ctrl + F / B เพื่อหมุนเวียนผ่านเนื้อหาข้อความอัตโนมัติหลังจากพิมพ์ @_ เพื่อระบุการกล่าวถึงแบบเงียบ
ชอบตัดใบเสนอราคาและตอบกลับไปยังส่วนที่เกี่ยวข้องของข้อความที่ยาวขึ้น - หรือหลีกเลี่ยงการอ้างถึงทั้งหมด
หัวข้อของ Zulip มักจะทำให้ชัดเจนว่าคุณกำลังตอบข้อความใด ข้อความยาวอาจอ่านได้ยากขึ้นด้วยแถวและคอลัมน์ที่ จำกัด ของข้อความ แต่สิ่งนี้แย่ลงหากอ้างถึงข้อความยาวทั้งหมดพร้อมเนื้อหาเพิ่มเติม
ลอง > เพื่ออ้างอิงข้อความที่เลือกการลบข้อความตามปกติเมื่อเขียนข้อความ
ชอบปฏิกิริยาอิโมจิอย่างรวดเร็วเพื่อแสดงข้อตกลงแทนข้อความสั้น ๆ ที่เรียบง่าย
ปฏิกิริยาใช้พื้นที่น้อยลงรวมถึงในสถานี Zulip โดยเฉพาะอย่างยิ่งเมื่อผู้ใช้หลายคนต้องการตอบสนองด้วยความเชื่อมั่นเดียวกัน
ลอง + เพื่อสลับนิ้วหัวแม่มือ (+1) บนข้อความหรือใช้ : เพื่อค้นหาปฏิกิริยาอื่น ๆ
สถานี Zulip ถูกสร้างขึ้นโดยชุมชน Zulip ที่ยอดเยี่ยม
เพื่อเป็นส่วนหนึ่งของมันและมีส่วนร่วมในรหัสอย่าลังเลที่จะทำงานกับปัญหาใด ๆ หรือเสนอความคิดของคุณเกี่ยวกับ #Zulip-terminal
สำหรับโครงสร้างและสไตล์การกระทำโปรดตรวจสอบส่วนสไตล์การกระทำด้านล่าง
หากคุณยังใหม่กับ git (หรือไม่!) คุณอาจได้รับประโยชน์จากคู่มือ Zulip Git เมื่อมีส่วนร่วมเป็นสิ่งสำคัญที่จะต้องทราบว่าเราใช้ เวิร์กโฟลว์ที่มุ่งเน้นการรีเบส
มีการสอนอย่างง่ายสำหรับการใช้ตัวบ่งชี้ typing ติดตามเพื่อทำความเข้าใจวิธีการใช้คุณสมบัติใหม่สำหรับ Zulip-Terminal
แน่นอนว่าคุณสามารถเรียกดูแหล่งที่มาของ GitHub & ในแผนผังต้นทางที่คุณดาวน์โหลดและตรวจสอบภาพรวมไฟล์ต้นฉบับสำหรับแนวคิดของวิธีการจัดเรียงไฟล์ในปัจจุบัน
Zulip Terminal ใช้ URWID เพื่อแสดงส่วนประกอบ UI ในเทอร์มินัล Urwid เป็นห้องสมุดที่ยอดเยี่ยมซึ่งคุณสามารถแสดงเทอร์มินัล UI ที่ดีเพียงแค่ใช้ Python การสอนของ Urwid เป็นสถานที่ที่ยอดเยี่ยมในการเริ่มต้นสำหรับผู้มีส่วนร่วมใหม่
ขั้นแรกให้แยกที่เก็บ zulip/zulip-terminal บน gitHub (ดูวิธี) จากนั้นโคลนที่เก็บข้อมูลของคุณในพื้นที่แทนที่ our_username ด้วยชื่อผู้ใช้ github ของคุณ:
$ git clone --config pull.rebase [email protected]:YOUR_USERNAME/zulip-terminal.git
สิ่งนี้ควรสร้างไดเรกทอรีใหม่สำหรับที่เก็บในไดเรกทอรีปัจจุบันดังนั้นป้อนไดเรกทอรีที่เก็บด้วย cd zulip-terminal และกำหนดค่าและดึงข้อมูลที่เก็บรีโมตรีโมตสำหรับส้อมโคลนของคุณ
$ git remote add -f upstream https://github.com/zulip/zulip-terminal.git
สำหรับคำอธิบายโดยละเอียดเกี่ยวกับคำสั่งที่ใช้สำหรับการโคลนนิ่งและการตั้งค่าต้นน้ำโปรดดูขั้นตอนที่ 1 ของส่วนรหัส Get Zulip ของคู่มือ GIT ของ Zulip
มีตัวเลือกต่าง ๆ เรากำลังสำรวจประโยชน์ของแต่ละคนและจะชื่นชมความคิดเห็นที่คุณใช้หรือรู้สึกว่าทำงานได้ดีที่สุด
โปรดทราบว่าเครื่องมือที่ใช้ในแต่ละกรณีมักจะเหมือนกัน แต่เรียกว่าในรูปแบบที่แตกต่างกัน
คำสั่งต่อไปนี้ควรเรียกใช้ในไดเรกทอรีที่เก็บซึ่งสร้างขึ้นโดยกระบวนการที่คล้ายกับในส่วนก่อนหน้า
$ pip3 install --user pipenv
--python 3.6 เพื่อเฉพาะเจาะจงมากขึ้น) $ pipenv --three
$ pipenv install --dev
$ pipenv run pip3 install -e '.[dev]'
$ pipenv run gitlint install-hook
สร้างและเปิดใช้งานสภาพแวดล้อมเสมือนจริงด้วยตนเอง วิธีการใด ๆ ควรทำงานเช่นที่ใช้ในการติดตั้งอย่างง่ายข้างต้น
python3 -m venv zt_venv (สร้าง venv ชื่อ zt_venv ในไดเรกทอรีปัจจุบัน)source zt_venv/bin/activate (เปิดใช้งาน venv; นี่ถือว่าเป็นเปลือกที่คล้ายทุบ)ติดตั้ง Zulip-term พร้อมข้อกำหนดการพัฒนา
$ pip3 install -e '.[dev]'
$ gitlint install-hook
นี่เป็นวิธีการใหม่ล่าสุดและง่ายที่สุดหากคุณ make ตั้ง:
make (ตั้งค่าสภาพแวดล้อมเสมือนที่ติดตั้งใน zt_venv ในไดเรกทอรีปัจจุบัน)source zt_venv/bin/activate (เปิดใช้งาน venv; นี่ถือว่าเป็นเปลือกที่คล้ายทุบ)gitlint install-hook (เชื่อมต่อตะขอ Gitlint Commit-Message))เมื่อคุณมีสภาพแวดล้อมการพัฒนาคุณอาจพบว่ามีประโยชน์ต่อไปนี้ขึ้นอยู่กับสภาพแวดล้อมของคุณ:
| งาน | ทำ & pip | PipenV |
|---|---|---|
| วิ่งตามปกติ | zulip-term | pipenv run zulip-term |
| รันในโหมดดีบัก | zulip-term -d | pipenv run zulip-term -d |
| วิ่งด้วยการทำโปรไฟล์ | zulip-term --profile | pipenv run zulip-term --profile |
| เรียกใช้ผ้าลินินทั้งหมด | ./tools/lint-all | pipenv run ./tools/lint-all |
| เรียกใช้การทดสอบทั้งหมด | pytest | pipenv run pytest |
| สร้างรายงานการครอบคลุมการทดสอบ | pytest --cov-report html:cov_html --cov=./ | pipenv run pytest --cov-report html:cov_html --cov=./ |
หากใช้ Make with PIP make ทำงานจะทำให้มั่นใจได้ว่าสภาพแวดล้อมการพัฒนาจะทันสมัยด้วยการพึ่งพาที่ระบุนั้นมีประโยชน์หลังจากดึงข้อมูลจาก GIT และ rebasing
เลือกบรรณาธิการข้อความหรือสภาพแวดล้อมการพัฒนาที่คุณชื่นชอบ!
แหล่งที่มาประกอบด้วยไฟล์ .editorconfig ซึ่งช่วยให้ผู้แก้ไขจำนวนมากสามารถกำหนดค่าตัวเองเพื่อสร้างไฟล์ที่ตรงตามข้อกำหนดขั้นต่ำสำหรับโครงการโดยอัตโนมัติ ดู https://editorconfig.org สำหรับการสนับสนุนบรรณาธิการ โปรดทราบว่าบางคนอาจต้องใช้ปลั๊กอินหากคุณต้องการใช้คุณสมบัตินี้
Linters และการทดสอบอัตโนมัติ (pytest) ทำงานโดยอัตโนมัติใน CI (การกระทำของ GitHub) เมื่อคุณส่งคำขอดึง (PR) หรือผลักดันการเปลี่ยนแปลงไปยังคำขอดึงที่มีอยู่
อย่างไรก็ตามการเรียกใช้การตรวจสอบเหล่านี้บนคอมพิวเตอร์ของคุณสามารถเพิ่มความเร็วในการพัฒนาของคุณโดยหลีกเลี่ยงความจำเป็นในการผลักดันรหัสของคุณไปยัง GitHub ซ้ำ ๆ คำสั่งเพื่อให้ได้สิ่งนี้แสดงอยู่ในตารางการพัฒนางานด้านบน (linters แต่ละตัวอาจเรียกใช้ผ่านสคริปต์ใน tools/ )
นอกจากนี้หากใช้ระบบ make -based:
make lint และ make test รันงานทั้งหมดของแต่ละกลุ่มmake check รันตรวจสอบทั้งหมดซึ่งมีประโยชน์ก่อนที่จะผลักดัน PR (หรือการอัปเดต)tools/check-branch จะดำเนินการ make check แต่ละครั้งในสาขาของคุณหมายเหตุ: ไม่น่าเป็นไปได้อย่างมากที่จะมีการรวมคำขอดึงจนกว่าจะมีการทดสอบและการทดสอบ ทั้งหมด รวมถึงแบบต่อเนื่อง
การแก้ไขข้อผิดพลาดของผ้าสำลีต้องมีการแทรกแซงด้วยตนเองเช่นจาก mypy สำหรับการตรวจสอบประเภท
สำหรับเคล็ดลับในการทดสอบโปรดตรวจสอบส่วนด้านล่างเกี่ยวกับ pytest
อย่างไรก็ตามข้อผิดพลาดอื่น ๆ อาจได้รับการแก้ไขโดยอัตโนมัติตามรายละเอียดด้านล่าง - ซึ่งสามารถประหยัดเวลาได้มากในการปรับรหัสของคุณด้วยตนเองเพื่อผ่านผ้าลินิน!
หากคุณมีปัญหาในการทำความเข้าใจว่าเหตุใดจึงเป็นผ้าลินินหรือ pytest ล้มเหลวโปรดผลักดันรหัสของคุณไปยังสาขา/ประชาสัมพันธ์และเราสามารถพูดคุยเกี่ยวกับปัญหาในการประชาสัมพันธ์หรือบน chat.zulip.org
หากคุณอัปเดตสิ่งเหล่านี้โปรดทราบว่าคุณไม่จำเป็นต้องอัปเดตข้อความในทั้งสองสถานที่ด้วยตนเองเพื่อผ่านผ้าสำลี
แหล่งที่มาของความจริงอยู่ในซอร์สโค้ดดังนั้นเพียงอัปเดตไฟล์ Python และเรียกใช้เครื่องมือที่เกี่ยวข้อง ขณะนี้เรามี:
tools/lint-hotkeys --fix เพื่อสร้างเอกสาร/hotkeys.md จาก config/keys.pytools/lint-docstring --fix เพื่อสร้างเอกสาร/นักพัฒนา-ไฟล์-file-overview.md จากไฟล์เอกสาร(เครื่องมือเหล่านี้ใช้สำหรับกระบวนการผ้าสำลีเพื่อให้แน่ใจว่าไฟล์เหล่านี้ถูกซิงโครไนซ์)
โครงการใช้ black และ isort สำหรับสไตล์รหัสและการนำเข้าการเรียงลำดับตามลำดับ
เครื่องมือเหล่านี้สามารถเรียกใช้เป็น linters ในเครื่อง แต่ยังสามารถจัดรูปแบบรหัสของคุณให้คุณได้ โดยอัตโนมัติ
หากคุณกำลังใช้การตั้งค่าแบบ make การเรียกใช้ make fix จะเรียกใช้ทั้งสอง (และเครื่องมืออื่น ๆ อีกสองสามอย่าง) และฟอร์แมตสถานะปัจจุบันของรหัสของคุณ -ดังนั้นคุณจะต้องกระทำก่อนในกรณีนั้น --amend พิจารณาว่าคุณมีความสุขกับการเปลี่ยนแปลง
คุณยังสามารถใช้เครื่องมือเป็นรายบุคคลบนไฟล์หรือไดเรกทอรีเช่น การทดสอบ black zulipterminal หรือ isort tests/model/test_model.py
ในขณะที่คุณทำงานในพื้นที่การตรวจสอบการเปลี่ยนแปลงที่จะทำมันเป็นเรื่องปกติที่จะสร้างชุดเล็ก ๆ น้อย ๆ เพื่อเก็บความคืบหน้าของคุณ บ่อยครั้งที่สิ่งนี้อาจรวมถึงการกระทำที่แก้ไขปัญหาเกี่ยวกับผ้าสำลีหรือการทดสอบในการกระทำก่อนหน้านี้ สิ่งเหล่านี้เป็น ความมุ่งมั่นในการพัฒนา - และเกือบทุกคนมีแนวโน้มที่จะเขียนความมุ่งมั่นในรูปแบบนี้ในระดับหนึ่ง
การพัฒนารูปแบบการพัฒนาเก็บการเปลี่ยนแปลงที่ดีสำหรับคุณในตอนนี้ อย่างไรก็ตามเมื่อแชร์รหัสของคุณการกระทำข้อความเป็นสถานที่ที่ดีในการสื่อสารกับผู้อื่นในสิ่งที่คุณกำลังเปลี่ยนแปลงและทำไม การจัดระเบียบโครงสร้างสามารถทำให้ง่ายขึ้นและเร็วขึ้นสำหรับผู้อ่านที่จะเข้าใจการเปลี่ยนแปลงและคุณเคารพเวลาของพวกเขา ตัวอย่างหนึ่งคือการกระทำเดียวที่มีขนาดใหญ่มากอาจใช้เวลาในการตรวจสอบมากเมื่อเทียบกับถ้าพวกเขาถูกแยกออก อีกอย่างคือถ้าคุณแก้ไขการทดสอบ/ผ้าสำลีในการกระทำ: การกระทำใด (หรือกระทำ!) จะแก้ไขนี้และถ้ามันอยู่ในสาขา/ประชาสัมพันธ์เดียวกันทำไมการกระทำดั้งเดิมจึงไม่ได้รับการแก้ไขแทน?
ดังนั้นเมื่อสร้างคำขอดึง (PR) โปรดพิจารณาว่ารหัสของคุณมี แนวโน้มที่จะรวมเข้าด้วยกันเร็วขึ้นหากง่ายต่อการอ่านทำความเข้าใจและตรวจสอบ - และส่วนใหญ่ของนั่นคือวิธีที่คุณจัดโครงสร้างการเปลี่ยนแปลงของคุณลงในการกระทำและอธิบายการเปลี่ยนแปลงเหล่านั้นในข้อความ
เพื่อให้มีประสิทธิผลและทำให้ง่ายขึ้นสำหรับการตรวจสอบและปรับปรุง PRS ของคุณง่ายขึ้นเราทำตามวิธีการที่ Zulip และที่อื่น ๆ โดยมีจุดประสงค์เพื่อให้ PRS ประกอบด้วยชุดของการกระทำที่ สอดคล้องกันน้อยที่สุด :
โปรดทราบว่าการรักษาหลักการเหล่านี้สามารถให้ประโยชน์อื่น ๆ ทั้งก่อนระหว่างและหลังการตรวจสอบการประชาสัมพันธ์รวมถึง:
git bisect ในสาขาของคุณหรือบน main ตอนนี้เราบังคับใช้แง่มุมที่ จำกัด ของลักษณะ ที่สอดคล้องกัน ของการกระทำในการประชาสัมพันธ์ในงานเป็นส่วนหนึ่งของการรวมอย่างต่อเนื่องของเรา (CI) ของเราตรวจสอบ ให้แน่ใจว่าการดำเนินการประชาสัมพันธ์ที่แยกได้ ซึ่งดำเนินการ make check แต่ละครั้งในสาขาของคุณ คุณสามารถทำซ้ำในเครื่องก่อนที่จะผลักไปที่ GitHub โดยใช้ tools/check-branch
ในขณะที่ PRS ขนาดเล็กหรือพิสูจน์แนวคิดเริ่มแรกที่จะผลักดันตามที่พวกเขาเป็นพวกเขาจะได้รับการตรวจสอบตามการเปลี่ยนแปลงโดยรวมเท่านั้น โดยทั่วไปหากการกระทำของแต่ละบุคคลดูเหมือนว่าพวกเขามีรูปแบบการพัฒนาผู้ตรวจสอบมีแนวโน้มที่จะให้ข้อเสนอแนะที่เฉพาะเจาะจงน้อยลง
คำสั่งการปรับโครงสร้าง - การปรับโครงสร้างส่วนใหญ่ขึ้นอยู่กับ การรีคืนแบบโต้ตอบ (เช่น git rebase -i upstream/main ) แต่พิจารณาค้นหาออนไลน์สำหรับการกระทำที่เฉพาะเจาะจงรวมถึงการค้นหาหรือถามใน #git Help หรือ #learning บน chat.zulip.org
การตรวจสอบด้วยตนเอง - วิธีการที่มีประโยชน์อีกวิธีหนึ่งคือการตรวจสอบการกระทำของคุณเองทั้งในพื้นที่ (ดูคำแนะนำของ Zulip) และหลังจากที่คุณผลักดันไปยัง GitHub สิ่งนี้ช่วยให้คุณสามารถตรวจสอบและแก้ไขสิ่งที่มองออกไปนอกสถานที่ซึ่งมีใครบางคนมีแนวโน้มที่จะรับในการตรวจสอบของพวกเขาช่วยให้การส่งของคุณดูขัดเงามากขึ้นรวมถึงอีกครั้งระบุว่าคุณเคารพเวลาของผู้ตรวจสอบ
เรามุ่งมั่นที่จะทำตามสไตล์การกระทำมาตรฐานเพื่อให้ git log สอดคล้องและอ่านง่าย
เช่นเดียวกับการทำงานกับรหัสเราขอแนะนำให้คุณอ้างถึงการกระทำล่าสุดในบันทึก GIT สำหรับตัวอย่างของสไตล์ที่เราใช้อย่างแข็งขัน
รูปแบบโดยรวมของเราสำหรับการส่งข้อความในวงกว้างเป็นไปตามแนวทางทั่วไปที่กำหนดไว้สำหรับการส่งข้อความ Zulip ดังนั้นเราขอแนะนำให้อ่านก่อน
ชื่อเรื่องของเรา (บทสรุป) มีรูปแบบเล็กน้อยจากสไตล์ Zulip ทั่วไปกับแต่ละ:
/Tests updated หรือ Tests added ในข้อความ commit)refactor: bugfix: และ requirements: (ดูด้านล่าง)ตัวอย่างบางส่วนของชื่อเรื่อง: (เป็นคำอธิบายเพิ่มเติมในทางปฏิบัติ!)
file3/file1/file2: Improve behavior of something.file1.txt , file2.py และ file3.mdrefactor: file1/file2: Extract some common function.file1.py และ file2.pybugfix: file1: Avoid some noticeable bug.file1.pytests: file1: Improve test for something.file1 เท่านั้นซึ่งมีแนวโน้มใน test_file1.pyrequirements: Upgrade some-dependency from ==9.2 to ==9.3. เพื่อช่วยในการสร้างความพึงพอใจให้กับกฎเหล่านี้คุณสามารถใช้ GitLint ตามที่อธิบายไว้ในส่วนต่อไปนี้
อย่างไรก็ตาม โปรดตรวจสอบการกระทำของคุณด้วยตนเองกับกฎสไตล์เหล่านี้เนื่องจาก Gitlint ไม่สามารถตรวจสอบทุกอย่างได้ - รวมถึงภาษาหรือไวยากรณ์!
เครื่องมือ gitlint ถูกติดตั้งโดยค่าเริ่มต้นในสภาพแวดล้อมการพัฒนาและสามารถช่วยให้มั่นใจได้ว่าการกระทำของคุณเป็นไปตามมาตรฐานที่คาดหวัง
เครื่องมือสามารถตรวจสอบการกระทำที่เฉพาะเจาะจงด้วยตนเองเช่น gitlint สำหรับการกระทำล่าสุดหรือ gitlint --commits main.. สำหรับการกระทำที่นำมาจาก main อย่างไรก็ตามเราขอแนะนำให้เรียกใช้ gitlint install-hook เพื่อติดตั้ง gitlint Commit-Message Hook (หรือ pipenv run gitlint install-hook พร้อมการตั้งค่า PipEnV)
หากติดตั้งตะขอตามที่อธิบายไว้ข้างต้นแล้วหลังจากทำข้อความให้เสร็จสมบูรณ์แล้วจะมีการตรวจสอบโดย Gitlint กับสไตล์ที่เราตั้งไว้และจะให้คำแนะนำหากมีปัญหาใด ๆ หาก Gitlint พบใด ๆ มันจะถามว่าคุณต้องการที่จะกระทำกับข้อความตามที่เป็น ( y สำหรับ 'ใช่') หยุดกระบวนการ commit ( n สำหรับ 'ไม่') หรือแก้ไขข้อความ commit ( e สำหรับ 'แก้ไข')
ในขณะที่เนื้อหายังคงขึ้นอยู่กับทักษะการเขียนของคุณสิ่งนี้ทำให้มั่นใจได้ว่าโครงสร้างการจัดรูปแบบที่สอดคล้องกันมากขึ้นระหว่างการกระทำรวมถึงผู้เขียนที่แตกต่างกัน
การทดสอบสำหรับ Zulip-Terminal เขียนขึ้นโดยใช้ pytest คุณสามารถอ่านการทดสอบในโฟลเดอร์ /tests เพื่อเรียนรู้เกี่ยวกับการทดสอบการทดสอบสำหรับคลาส /ฟังก์ชั่นใหม่ หากคุณยังใหม่กับ pytest ขอแนะนำให้อ่านเอกสารของมันอย่างแน่นอน
ขณะนี้เรามีการทดสอบหลายพันครั้งที่ได้รับการตรวจสอบเมื่อรัน pytest ในขณะที่มันขึ้นอยู่กับความสามารถของระบบของคุณโดยทั่วไปควรใช้เวลาน้อยกว่าหนึ่งนาทีในการทำงาน อย่างไรก็ตามในระหว่างการดีบักคุณอาจยังต้องการ จำกัด ขอบเขตการทดสอบของคุณเพื่อปรับปรุงเวลาตอบสนอง:
หากการทดสอบจำนวนมากล้มเหลวในลักษณะที่ผิดปกติมากคุณอาจลองตัวเลือก -x (เช่น pytest -x ) เพื่อหยุดการทดสอบหลังจากความล้มเหลวครั้งแรก; เนื่องจาก parametrization ของการทดสอบและการแข่งขันทดสอบข้อผิดพลาด/ความล้มเหลวที่ชัดเจนจำนวนมากสามารถแก้ไขได้ด้วยการแก้ไขเพียงครั้งเดียว! (ลองเช่น pytest --maxfail 3 สำหรับรุ่นนี้น้อยกว่า)
เพื่อหลีกเลี่ยงการทดสอบที่ประสบความสำเร็จทั้งหมดในแต่ละครั้งพร้อมกับความล้มเหลวคุณสามารถทำงานได้ด้วย --lf (เช่น --failed-first pytest --lf ) สั้นสำหรับ --last-failed --new-first -x
เนื่องจาก PyTest 3.10 มี --sw ( --stepwise --stepwise-skip ซึ่งทำงานผ่านความล้มเหลวที่รู้จักในลักษณะเดียวกับ --lf และ -x สามารถใช้งานได้
หากคุณรู้ชื่อของการทดสอบที่ล้มเหลวและ/หรือในตำแหน่งที่เฉพาะเจาะจงคุณอาจ จำกัด การทดสอบไปยังสถานที่เฉพาะ (เช่น pytest tests/model ) หรือใช้คำหลักที่เลือก (เช่น pytest -k __handle )
เมื่อมีเพียงชุดย่อยของการทดสอบที่กำลังทำงานอยู่มันจะกลายเป็นจริงและมีประโยชน์มากขึ้นในการใช้ตัวเลือก -v ( --verbose ); แทนที่จะ . (หรือ F , E , x , ฯลฯ ) สำหรับผลการทดสอบแต่ละครั้งจะให้ชื่อ (พร้อมพารามิเตอร์) ของการทดสอบแต่ละครั้งที่เรียกใช้ (เช่น pytest -v -k __handle ) ตัวเลือกนี้ยังแสดงรายละเอียดเพิ่มเติมในการทดสอบและสามารถให้ได้หลายครั้ง (เช่น pytest -vv )
สำหรับความช่วยเหลือเพิ่มเติมเกี่ยวกับตัวเลือก pytest โปรดดู pytest -h หรือตรวจสอบเอกสาร pytest เต็มรูปแบบ
print stdout (เอาต์พุตมาตรฐาน) สำหรับ Zulip-terminal ถูกเปลี่ยนเส้นทางไปยัง ./debug.log หากเปิดใช้งานการดีบักในเวลาทำงานโดยใช้ -d หรือ --debug
ซึ่งหมายความว่าหากคุณต้องการตรวจสอบค่าของตัวแปรหรืออาจระบุถึงจุดหนึ่งในรหัสคุณสามารถใช้ print() เช่น
print ( f"Just about to do something with { variable } " ) และเมื่อทำงานด้วยตัวเลือกการดีบักสตริงจะถูกพิมพ์ไปที่ ./debug.log
ด้วยเทอร์มินัลเหมือนทุบตีคุณสามารถเรียกใช้บางอย่างเช่น tail -f debug.log ในเทอร์มินัลอื่นเพื่อดูผลลัพธ์จาก print ตามที่มันเกิดขึ้น
หากคุณต้องการดีบัก Zulip-Terminal ในขณะที่กำลังทำงานอยู่หรืออยู่ในสถานะเฉพาะคุณสามารถแทรก
from pudb . remote import set_trace
set_trace () ในส่วนของรหัสที่คุณต้องการแก้ไขข้อบกพร่อง สิ่งนี้จะเริ่มการเชื่อมต่อ Telnet สำหรับคุณ คุณสามารถค้นหาที่อยู่ IP และพอร์ตของการเชื่อมต่อ telnet ได้ใน ./debug.log จากนั้นก็วิ่ง
$ telnet 127.0.0.1 6899
ในเทอร์มินัลอื่นที่ 127.0.0.1 เป็นที่อยู่ IP และ 6899 คือพอร์ตที่คุณพบใน ./debug.log
นี่อาจหมายความว่าคุณได้ติดตั้งทั้ง Zulip-Terminal รุ่นปกติและการพัฒนา
เพื่อให้แน่ใจว่าคุณเรียกใช้เวอร์ชันการพัฒนา:
หากใช้ pipenv โทรไปที่ pipenv run zulip-term จากไดเรกทอรี zulip-terminal ที่ถูกโคลน/ดาวน์โหลด
หากใช้ PIP (PIP3) ให้แน่ใจว่าคุณได้เปิดใช้งานสภาพแวดล้อมเสมือนจริงที่ถูกต้อง (VENV); ขึ้นอยู่กับวิธีการกำหนดค่าเชลล์ของคุณชื่อของ VENV อาจปรากฏในพรอมต์คำสั่ง โปรดทราบว่าการไม่รวม -e ในคำสั่ง PIP3 จะทำให้เกิดปัญหานี้ด้วย