ವಿತರಿಸಿದ ಮೂಲ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆಯ ಬಿಡುಗಡೆ Git 2.22

ಪರಿಚಯಿಸಿದರು ವಿತರಿಸಿದ ಮೂಲ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆಯ ಬಿಡುಗಡೆ ಗಿಟ್ 2.22.0. Git ಅತ್ಯಂತ ಜನಪ್ರಿಯ, ವಿಶ್ವಾಸಾರ್ಹ ಮತ್ತು ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ಇದು ಶಾಖೆಯ ಮತ್ತು ವಿಲೀನದ ಆಧಾರದ ಮೇಲೆ ಹೊಂದಿಕೊಳ್ಳುವ ರೇಖಾತ್ಮಕವಲ್ಲದ ಅಭಿವೃದ್ಧಿ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇತಿಹಾಸದ ಸಮಗ್ರತೆ ಮತ್ತು ಹಿಂದಿನ ಬದಲಾವಣೆಗಳಿಗೆ ಪ್ರತಿರೋಧವನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ಪ್ರತಿ ಕಮಿಟ್‌ನಲ್ಲಿ ಸಂಪೂರ್ಣ ಹಿಂದಿನ ಇತಿಹಾಸದ ಸೂಚ್ಯ ಹ್ಯಾಶಿಂಗ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಡೆವಲಪರ್‌ಗಳ ಡಿಜಿಟಲ್ ಸಹಿಗಳೊಂದಿಗೆ ವೈಯಕ್ತಿಕ ಟ್ಯಾಗ್‌ಗಳು ಮತ್ತು ಕಮಿಟ್‌ಗಳನ್ನು ಪ್ರಮಾಣೀಕರಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ.

ಹಿಂದಿನ ಬಿಡುಗಡೆಗೆ ಹೋಲಿಸಿದರೆ, ಹೊಸ ಆವೃತ್ತಿಯಲ್ಲಿ 745 ಬದಲಾವಣೆಗಳನ್ನು ಸ್ವೀಕರಿಸಲಾಗಿದೆ, 74 ಡೆವಲಪರ್‌ಗಳ ಭಾಗವಹಿಸುವಿಕೆಯೊಂದಿಗೆ ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ, ಅದರಲ್ಲಿ 18 ಮೊದಲ ಬಾರಿಗೆ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಭಾಗವಹಿಸಿದವು. ಮುಖ್ಯ ನಾವೀನ್ಯತೆಗಳು:

  • ಬಿಡುಗಡೆ 1.18 ರಿಂದ ಲಭ್ಯವಿದೆ, ಹೊಸ ಕಮಿಟ್ ರಿಬೇಸ್ ಮೋಡ್ "git rebase --rebase-merges" ಹಳೆಯ "--preserve-merges" ಆಯ್ಕೆಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ, ಅದನ್ನು ಈಗ ಅಸಮ್ಮತಿಸಲಾಗಿದೆ. "git rebase" ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಹೊಸ ಬೇಸ್ ಕಮಿಟ್‌ನೊಂದಿಗೆ ಕಮಿಟ್‌ಗಳ ಸರಣಿಯನ್ನು ಬದಲಾಯಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ಕೆಲವು ಹೊಸ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿರುವ ಪ್ರತ್ಯೇಕ ಶಾಖೆಯನ್ನು ಮಾಸ್ಟರ್ ಶಾಖೆಯ ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಗೆ ಸರಿಸಲು, ಇದು ಶಾಖೆಯ ನಂತರ ಸೇರಿಸಲಾದ ಪರಿಹಾರಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. :

    o - o - o (ನನ್ನ ವೈಶಿಷ್ಟ್ಯ)

    /

    o - o - o - o - o (ಮಾಸ್ಟರ್)

    o - o - o (ನನ್ನ ವೈಶಿಷ್ಟ್ಯ)

    /

    o - o - o - o - o (ಮಾಸ್ಟರ್)

    ವಲಸೆ ಬಂದ ಶಾಖೆಯಲ್ಲಿ ಶಾಖೆಯ ರಚನೆಯನ್ನು ಸಂರಕ್ಷಿಸಲು, "--ಪ್ರಿಸರ್ವ್-ಮರ್ಜ್ಸ್" ಆಯ್ಕೆಯನ್ನು ಹಿಂದೆ ಬಳಸಬಹುದಾಗಿತ್ತು, ಇದು ಸಂವಾದಾತ್ಮಕ ಮೋಡ್‌ನಲ್ಲಿ (git rebase -i --preserv-merges) ರನ್ ಮಾಡಿದಾಗ, ಕಮಿಟ್ ಇತಿಹಾಸವನ್ನು ಸಂಪಾದಿಸಲು ಅವಕಾಶ ನೀಡುತ್ತದೆ, ಆದರೆ ರೆಪೊಸಿಟರಿ ರಚನೆಯ ಸಂಪೂರ್ಣ ಸಂರಕ್ಷಣೆಗೆ ಖಾತರಿ ನೀಡಲಿಲ್ಲ. ಹೊಸ “--rebase-merges” ಮೋಡ್, ಕಮಿಟ್‌ಗಳನ್ನು ಅಳಿಸುವುದು, ಮರುಸಂಘಟಿಸುವುದು ಮತ್ತು ಮರುಹೆಸರಿಸುವುದು ಸೇರಿದಂತೆ ಸಂಪೂರ್ಣ ಶ್ರೇಣಿಯ ಸಂವಾದಾತ್ಮಕ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಒದಗಿಸುವಾಗ, ವರ್ಗಾವಣೆಗೊಂಡ ಶಾಖೆಯಲ್ಲಿನ ಬದಲಾವಣೆಗಳ ರಚನೆಯನ್ನು ಸಂರಕ್ಷಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

    ಉದಾಹರಣೆಗೆ, "--rebase-merges" ಅನುಮತಿಸುತ್ತದೆ ಪ್ರತ್ಯೇಕ ಶಾಖೆಯಿಂದ ಹೊಸ ಮಾಸ್ಟರ್ ಶಾಖೆಗೆ ಕಮಿಟ್‌ಗಳನ್ನು ಮರು-ಅಪ್‌ಲೋಡ್ ಮಾಡಿ, ವಲಸೆ ಶಾಖೆಯಲ್ಲಿ ಶಾಖೆಯ ರಚನೆಯನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಮತ್ತು ಫ್ಲೈನಲ್ಲಿ ಬದ್ಧತೆಯ ಟಿಪ್ಪಣಿಗಳಿಗೆ ಕೆಲವು ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಿ.

  • "git branch new A...B" ಮತ್ತು "git checkout -b new" ಅನ್ನು ಬಳಸಿಕೊಂಡು ಇತರ ಎರಡು ಶಾಖೆಗಳ ವಿಲೀನ ನೆಲೆಯನ್ನು ನಿರ್ಧರಿಸುವ ಫಲಿತಾಂಶದ ಆಧಾರದ ಮೇಲೆ ಹೊಸ ಶಾಖೆಯನ್ನು ರಚಿಸಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. A...B", ಇದರಲ್ಲಿ "A ...B" ಎರಡು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕಮಿಟ್‌ಗಳ ನಡುವೆ ವಿಲೀನ ಬೇಸ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, "git ಚೆಕ್‌ಔಟ್ A...B" ಹೇಗೆ HEAD ಅನ್ನು ಬೇಸ್ ಕಮಿಟ್‌ಗೆ ಬದಲಾಯಿಸುತ್ತದೆ ಮತ್ತು "diff A. ..B" ಕಮಿಟ್ "ಬಿ" ಮತ್ತು ಅದೇ ಕಮಿಟ್ "ಎ" "ಆನ್ಸೆಸ್ಟರ್ ನಡುವಿನ ಬದಲಾವಣೆಗಳನ್ನು ತೋರಿಸುತ್ತದೆ.

    ಉದಾಹರಣೆಗೆ, ಪ್ರತ್ಯೇಕ ಮೈ-ಫೀಚರ್ ಶಾಖೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡುವಾಗ, ನೀವು ಬೇರೆ ಶಾಖೆಯಿಂದ ಪ್ರಾರಂಭಿಸಲು ಬಯಸಿದಾಗ ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಬಹುದು, ಉದಾಹರಣೆಗೆ, ಮೈ-ಫೀಚರ್ ಶಾಖೆಯನ್ನು ಪರಿಶೀಲಿಸಿದ ಮಾಸ್ಟರ್ ಶಾಖೆಯಲ್ಲಿ ಅದೇ ಸ್ಥಳದಿಂದ. ಹಿಂದೆ, ಇದು ಬದಲಾವಣೆಯ ಲಾಗ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿದೆ, ನೀವು ಬದಲಾವಣೆಗಳ ದೊಡ್ಡ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿದ್ದರೆ ಅನಾನುಕೂಲವಾಗಿತ್ತು, ನಂತರ ಮಾಸ್ಟರ್ ಮತ್ತು ಮೈ-ಫೀಚರ್ ಶಾಖೆಗಳ ನಡುವಿನ ವಿಲೀನ ಬೇಸ್‌ನ ಹ್ಯಾಶ್ ಅನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು "git merge-base master my-feature" ಅನ್ನು ಚಾಲನೆ ಮಾಡುತ್ತದೆ. ಮತ್ತು ಸಾಮಾನ್ಯ ಪೂರ್ವಜರಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ ಹೊಸ ಶಾಖೆಯನ್ನು ರಚಿಸುವುದು “ git ಶಾಖೆ ಮೈ-ಅದರ್-ಫೀಚರ್ ಹ್ಯಾಶ್." Git 2.22 ರಲ್ಲಿ, ನೀವು ಸಿಂಟ್ಯಾಕ್ಸ್ "git ಬ್ರಾಂಚ್ ಮೈ-ಅದರ್-ಫೀಚರ್ A...B" ಅನ್ನು ಬಳಸಬಹುದು, ಎರಡು ಇತರ ಶಾಖೆಗಳ ವಿಲೀನ ತಳಕ್ಕೆ ಸಂಬಂಧಿಸಿದಂತೆ ಶಾಖೆಯನ್ನು ರಚಿಸಲು;

  • ಚೆಕ್ಔಟ್ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ಪಡೆದ ಶಾಖೆಯ ಹೆಸರನ್ನು ಪ್ರದರ್ಶಿಸಲು "git branch --show-current" ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ;
  • "git checkout —no-overlay — dir" ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಚೆಕ್ಔಟ್ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸುವಾಗ, dir ಡೈರೆಕ್ಟರಿಯ ವಿಷಯಗಳನ್ನು ಮಾಸ್ಟರ್ ಶಾಖೆಯ ಸ್ಥಿತಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಅನುಗುಣವಾದ ಫಾರ್ಮ್ಗೆ ತರಲು ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡೈರೆಕ್ಟರಿಯ ಸ್ಥಳೀಯ ನಕಲಿನಲ್ಲಿ ಮಾಸ್ಟರ್ ಶಾಖೆಯಲ್ಲಿ ಇಲ್ಲದ ಫೈಲ್ ಇದ್ದರೆ, ನಂತರ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ "git Checkout master - dir" ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಅದು ಬಿಡಲಾಗುತ್ತದೆ ಮತ್ತು "--no-overlay ಆಗಿದ್ದರೆ ” ಆಯ್ಕೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ, ಅದನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ;
  • "git diff" ಆಜ್ಞೆಯು ಪಾರ್ಸಿಂಗ್ ಆಯ್ಕೆಗಳಿಗಾಗಿ ಸಾರ್ವತ್ರಿಕ API ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಇತರ git ಉಪಯುಕ್ತತೆಗಳೊಂದಿಗೆ ಆಯ್ಕೆಯ ನಿರ್ವಹಣೆಯನ್ನು ಏಕೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, "ಜಿಟ್ ಡಿಫ್" ನಲ್ಲಿ, ಎಲ್ಲಾ ಆಯ್ಕೆಗಳು ಈಗ ತಮ್ಮ ವಿರೋಧಿಗಳನ್ನು ಹೊಂದಿವೆ ("--ಫಂಕ್ಷನ್-ಸಂದರ್ಭ" ಮತ್ತು "--ನೋ-ಫಂಕ್ಷನ್-ಸಂದರ್ಭ");
  • "ಗಿಟ್ ಲಾಗ್" ಔಟ್‌ಪುಟ್‌ನಲ್ಲಿ ಕಮಿಟ್‌ಗಳಿಗೆ ಲಗತ್ತಿಸಲಾದ ವಿಸ್ತೃತ ಟ್ಯಾಗ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ("ಟ್ರೇಲರ್" - ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿ ಫ್ಲ್ಯಾಗ್‌ಗಳು, ಉದಾಹರಣೆಗೆ ಸೈನ್-ಆಫ್-ಬೈ ಮತ್ತು ಸಹ-ಲೇಖಕರಿಂದ). ಕೀ ಮತ್ತು ಮೌಲ್ಯ ಎರಡರಿಂದಲೂ ಲೇಬಲ್‌ಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಲು ಸಾಧ್ಯವಿದೆ, ಉದಾಹರಣೆಗೆ:
    "git log --pretty="%(ಟ್ರೇಲರ್‌ಗಳು:ಕೀ=ಪರಿಶೀಲಿಸಲಾಗಿದೆ-ಮೌಲ್ಯಮಾತ್ರ)";

  • ಹೊಸ ಟ್ರೇಸಿಂಗ್ ಎಂಜಿನ್, ಟ್ರೇಸ್2 ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಹೆಚ್ಚು ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ರಚನಾತ್ಮಕ ಔಟ್‌ಪುಟ್ ಸ್ವರೂಪವನ್ನು ನೀಡುತ್ತದೆ. ಹೆಚ್ಚು ವಿವರವಾದ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಡೀಬಗ್ ಮಾಡುವಿಕೆಗಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಿದ ಕಾರ್ಯಾಚರಣೆಗಳು ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ಡೇಟಾವನ್ನು ಕುರಿತು ಟೆಲಿಮೆಟ್ರಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು Trace2 ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ (ಹ್ಯಾಂಡ್ಲರ್ ಅನ್ನು ಬಳಕೆದಾರರಿಂದ ನಿಯೋಜಿಸಲಾಗಿದೆ, ಯಾವುದೇ ಡೇಟಾವನ್ನು ಬಾಹ್ಯವಾಗಿ ಕಳುಹಿಸಲಾಗುವುದಿಲ್ಲ);
  • "git bisect" ವರದಿಯನ್ನು ಹೆಚ್ಚು ಓದುವಂತೆ ಮಾಡಲಾಗಿದೆ, ಇದರಲ್ಲಿ ಸಮಸ್ಯಾತ್ಮಕ ಕಮಿಟ್‌ಗಳನ್ನು ಈಗ ಹೆಚ್ಚು ಸ್ಪಷ್ಟವಾಗಿ ಹೈಲೈಟ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಪ್ರತಿ ಫೈಲ್‌ಗೆ ಬದಲಾವಣೆಗಳ ಸಾರಾಂಶ ಅಂಕಿಅಂಶಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ (ಬದಲಾದ ಸಾಲುಗಳ ಸಂಖ್ಯೆಯ ಮಟ್ಟದಲ್ಲಿ);
  • ಮರುಹೆಸರಿಸುವ ಲೇಬಲ್‌ಗಳ ತಪ್ಪು ಸ್ಥಾಪನೆಯನ್ನು ತೊಡೆದುಹಾಕಲು ಡೈರೆಕ್ಟರಿ ಮರುನಾಮಕರಣಗಳನ್ನು ನಿರ್ಧರಿಸುವ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಅನ್ನು ಮರುಸೃಷ್ಟಿಸಲಾಗಿದೆ. ಸಂದೇಹವಿದ್ದಲ್ಲಿ, ಅಂತಹ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಈಗ ಸಂಘರ್ಷ ಎಂದು ಗುರುತಿಸಲಾಗಿದೆ;
  • ನೀವು ಇನ್ನೊಂದು ಟ್ಯಾಗ್‌ನಲ್ಲಿ ಟ್ಯಾಗ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಎಚ್ಚರಿಕೆಯನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ತಪ್ಪಾಗಿ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಟ್ಯಾಗ್ ಅನ್ನು ತಪ್ಪು ಬದ್ಧತೆಯ ಮೇಲೆ ಹೊಂದಿಸಲು ಕಾರಣವಾಗಬಹುದು (ಉದಾಹರಣೆಗೆ, "git tag -f -m "ನವೀಕರಿಸಿದ ಸಂದೇಶ" ನಂತಹ ನಿರ್ಮಾಣ my-tag1 my- tag2″ ಹಳೆಯ ಟ್ಯಾಗ್‌ನಲ್ಲಿ ಟ್ಯಾಗ್ ಅನ್ನು ರಚಿಸುವಲ್ಲಿ ಕಾರಣವಾಗುತ್ತದೆ, ಆದರೆ ಡೆವಲಪರ್ ಹಳೆಯ ಟ್ಯಾಗ್‌ನಿಂದ ಸೂಚಿಸಲಾದ ಕಮಿಟ್‌ನಲ್ಲಿ ಹೊಸ ಟ್ಯಾಗ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸಿದ್ದರು);
  • ಬಿಟ್‌ಮ್ಯಾಪ್ ರೆಪೊಸಿಟರಿಗಳಿಗೆ (ಡಿಸ್ಕ್-ಆಧಾರಿತ "ರೀಚಬಿಲಿಟಿ ಬಿಟ್‌ಮ್ಯಾಪ್‌ಗಳು" ರಚನೆ) ಜನರೇಷನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಪ್ರತಿ ಕಮಿಟ್‌ಗೆ ಲಭ್ಯವಿರುವ ವಸ್ತುಗಳ ಸೆಟ್‌ಗಳ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಮೂಲ ವಸ್ತುವಿನ ಉಪಸ್ಥಿತಿಯನ್ನು ತ್ವರಿತವಾಗಿ ನಿರ್ಧರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ರಚನೆಯು ದತ್ತಾಂಶ ಮರುಪಡೆಯುವಿಕೆ ಕಾರ್ಯಾಚರಣೆಗಳ (ಜಿಟ್ ಫೆಚ್) ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯವನ್ನು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ