Git 2.31, ವಿತರಣಾ ಮೂಲ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆ, ಈಗ ಲಭ್ಯವಿದೆ. Git ಅತ್ಯಂತ ಜನಪ್ರಿಯ, ವಿಶ್ವಾಸಾರ್ಹ ಮತ್ತು ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ಇದು ಶಾಖೆ ಮತ್ತು ವಿಲೀನದ ಆಧಾರದ ಮೇಲೆ ಹೊಂದಿಕೊಳ್ಳುವ, ರೇಖಾತ್ಮಕವಲ್ಲದ ಅಭಿವೃದ್ಧಿ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಐತಿಹಾಸಿಕ ಸಮಗ್ರತೆ ಮತ್ತು ಹಿಮ್ಮುಖ ಬದಲಾವಣೆಗಳಿಗೆ ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವವನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ಇದು ಪ್ರತಿ ಕಮಿಟ್ನಲ್ಲಿ ಸಂಪೂರ್ಣ ಹಿಂದಿನ ಇತಿಹಾಸದ ಸೂಚ್ಯ ಹ್ಯಾಶಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ವೈಯಕ್ತಿಕ ಟ್ಯಾಗ್ಗಳು ಮತ್ತು ಕಮಿಟ್ಗಳ ಡಿಜಿಟಲ್ ಸಹಿಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ.
ಹಿಂದಿನ ಬಿಡುಗಡೆಗೆ ಹೋಲಿಸಿದರೆ, ಹೊಸ ಆವೃತ್ತಿಯು 85 ಡೆವಲಪರ್ಗಳ ಭಾಗವಹಿಸುವಿಕೆಯೊಂದಿಗೆ ಸಿದ್ಧಪಡಿಸಲಾದ 679 ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಅವರಲ್ಲಿ 23 ಡೆವಲಪರ್ಗಳು ಮೊದಲ ಬಾರಿಗೆ ಕೊಡುಗೆ ನೀಡಿದ್ದಾರೆ. ಪ್ರಮುಖ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಸೇರಿವೆ:
- "git maintenance" ಆಜ್ಞೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಕ್ರಾನ್ ಅನ್ನು ಬೆಂಬಲಿಸದ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ ಆವರ್ತಕ ಕಾರ್ಯಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಹೊಸ ಆಜ್ಞೆಯನ್ನು ನಿಯತಕಾಲಿಕವಾಗಿ ರೆಪೊಸಿಟರಿ ಪ್ಯಾಕಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಚಲಾಯಿಸಲು ಬಳಸಬಹುದು, ವಿವಿಧ ಆಜ್ಞೆಗಳನ್ನು ಚಲಾಯಿಸುವಾಗ ಸ್ವಯಂಚಾಲಿತ ಪ್ಯಾಕಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಿದಾಗ ರೆಪೊಸಿಟರಿ ಲಾಕ್ ಆಗುವವರೆಗೆ ಕಾಯುವ ಅಗತ್ಯವನ್ನು ನಿವಾರಿಸುತ್ತದೆ. "git maintenance" ಆಜ್ಞೆಯು ಸಂವಾದಾತ್ಮಕ ಅಧಿವೇಶನವನ್ನು ನಿರ್ಬಂಧಿಸದೆ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಆಪ್ಟಿಮೈಸೇಶನ್ ಮತ್ತು ನಿರ್ವಹಣಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಗಂಟೆಗೆ ಒಮ್ಮೆ, ಇದು ಪೂರ್ವಭಾವಿಯಾಗಿ ರಿಮೋಟ್ ರೆಪೊಸಿಟರಿಯಿಂದ ಹೊಸ ವಸ್ತುಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಕಮಿಟ್ ಗ್ರಾಫ್ ಫೈಲ್ ಅನ್ನು ನವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ರಾತ್ರಿಯಿಡೀ ರೆಪೊಸಿಟರಿ ಪ್ಯಾಕಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ರನ್ ಮಾಡುತ್ತದೆ.
- ಪ್ಯಾಕ್ಫೈಲ್ಗಳಿಗಾಗಿ ಆನ್-ಡಿಸ್ಕ್ ರಿವರ್ಸ್ ಇಂಡೆಕ್ಸ್ (ರಿವಿಂಡೆಕ್ಸ್) ಅನ್ನು ನಿರ್ವಹಿಸುವ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಜ್ಞಾಪನೆಯಾಗಿ, Git ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ವಸ್ತುಗಳಾಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಇವುಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಫೈಲ್ಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ರೆಪೊಸಿಟರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು, ವಸ್ತುಗಳನ್ನು ಹೆಚ್ಚುವರಿಯಾಗಿ ಪ್ಯಾಕ್ಫೈಲ್ಗಳಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಅಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು ಒಂದರ ನಂತರ ಒಂದರಂತೆ ವಸ್ತುಗಳ ಸ್ಟ್ರೀಮ್ ಆಗಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗುತ್ತದೆ (git fetch ಮತ್ತು git push ಆಜ್ಞೆಗಳೊಂದಿಗೆ ವಸ್ತುಗಳನ್ನು ವರ್ಗಾಯಿಸುವಾಗ ಇದೇ ರೀತಿಯ ಸ್ವರೂಪವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ). ಪ್ರತಿ ಪ್ಯಾಕ್ಫೈಲ್ಗೆ ಸೂಚ್ಯಂಕ ಫೈಲ್ (.idx) ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ, ಇದು ನಿರ್ದಿಷ್ಟ ವಸ್ತುವನ್ನು ಸಂಗ್ರಹಿಸಲಾದ ಪ್ಯಾಕ್ಫೈಲ್ನಲ್ಲಿ ಆಫ್ಸೆಟ್ ಅನ್ನು ವಸ್ತು ID ಯ ಆಧಾರದ ಮೇಲೆ ತ್ವರಿತವಾಗಿ ನಿರ್ಧರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. Git 2.31 ರಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ರಿವರ್ಸ್ ಇಂಡೆಕ್ಸ್ (.rev), ಪ್ಯಾಕ್ಫೈಲ್ನಲ್ಲಿ ವಸ್ತುವಿನ ಸ್ಥಳವನ್ನು ಆಧರಿಸಿ ವಸ್ತುವಿನ ID ಯನ್ನು ನಿರ್ಧರಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.
ಹಿಂದೆ, ಪ್ಯಾಕ್ ಫೈಲ್ ಪಾರ್ಸಿಂಗ್ ಸಮಯದಲ್ಲಿ ಅಂತಹ ರೂಪಾಂತರವನ್ನು ಫ್ಲೈನಲ್ಲಿ ನಡೆಸಲಾಗುತ್ತಿತ್ತು ಮತ್ತು ಅದನ್ನು ಮೆಮೊರಿಯಲ್ಲಿ ಮಾತ್ರ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತಿತ್ತು, ಇದು ಅಂತಹ ಸೂಚ್ಯಂಕಗಳ ಮರುಬಳಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಬಾರಿಯೂ ಸೂಚ್ಯಂಕವನ್ನು ಉತ್ಪಾದಿಸುವಂತೆ ಒತ್ತಾಯಿಸುತ್ತದೆ. ಸೂಚ್ಯಂಕ ನಿರ್ಮಾಣವು ವಸ್ತು-ಸ್ಥಾನ ಜೋಡಿಗಳ ಶ್ರೇಣಿಯನ್ನು ನಿರ್ಮಿಸುವುದು ಮತ್ತು ಅದನ್ನು ಸ್ಥಾನದ ಮೂಲಕ ವಿಂಗಡಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು ದೊಡ್ಡ ಪ್ಯಾಕ್ ಫೈಲ್ಗಳಿಗೆ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ.
ಉದಾಹರಣೆಗೆ, ಫಾರ್ವರ್ಡ್ ಇಂಡೆಕ್ಸ್ ಬಳಸಿ ಆಬ್ಜೆಕ್ಟ್ ವಿಷಯಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವುದು ಇಂಡೆಕ್ಸ್ ಮಾಡದೆ ಆಬ್ಜೆಕ್ಟ್ ಗಾತ್ರಗಳನ್ನು ಪ್ರದರ್ಶಿಸುವುದಕ್ಕಿಂತ 62 ಪಟ್ಟು ವೇಗವಾಗಿದೆ. ರಿವರ್ಸ್ ಇಂಡೆಕ್ಸ್ ಬಳಸಿದ ನಂತರ, ಈ ಕಾರ್ಯಾಚರಣೆಗಳು ಸರಿಸುಮಾರು ಅದೇ ಸಮಯವನ್ನು ತೆಗೆದುಕೊಂಡವು. ರಿವರ್ಸ್ ಇಂಡೆಕ್ಸ್ಗಳು ಡಿಸ್ಕ್ನಿಂದ ಮೊದಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಡೇಟಾವನ್ನು ನೇರವಾಗಿ ವರ್ಗಾಯಿಸುವ ಮೂಲಕ ಪಡೆಯುವಿಕೆ ಮತ್ತು ಪುಶ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ವೇಗಗೊಳಿಸುತ್ತವೆ. ರಿವರ್ಸ್ ಇಂಡೆಕ್ಸ್ಗಳನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ರಚಿಸಲಾಗುವುದಿಲ್ಲ; ಅವುಗಳನ್ನು ಉತ್ಪಾದಿಸಲು "git config pack.writeReverseIndex true" ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ಅಗತ್ಯವಿದೆ ಮತ್ತು ನಂತರ "git repack -Ad" ನೊಂದಿಗೆ ರೆಪೊಸಿಟರಿಯನ್ನು ಪ್ಯಾಕ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ.
- ಕಮಿಟ್-ಗ್ರಾಫ್ ಫೈಲ್ ಫಾರ್ಮ್ಯಾಟ್ಗೆ ಹೊಸ ಕಮಿಟ್ ಜನರೇಷನ್ ಸಂಖ್ಯೆಯ ಡೇಟಾವನ್ನು ಸೇರಿಸುವುದರ ಆಧಾರದ ಮೇಲೆ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದನ್ನು ಕಮಿಟ್ ಮಾಹಿತಿಗೆ ಪ್ರವೇಶವನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ, ಇದನ್ನು ಹೆಚ್ಚುವರಿ ಕಮಿಟ್ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ವೇಗಗೊಳಿಸಲು ಬಳಸಬಹುದು.
- ಹೊಸ ರೆಪೊಸಿಟರಿಗಳಲ್ಲಿ (init.defaultBranch ಸೆಟ್ಟಿಂಗ್) ಡೀಫಾಲ್ಟ್ ಮುಖ್ಯ ಶಾಖೆಯ ಹೆಸರನ್ನು ಅತಿಕ್ರಮಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ. ಬಾಹ್ಯ ರೆಪೊಸಿಟರಿಗಳನ್ನು ಪ್ರವೇಶಿಸುವಾಗ, git HEAD ನಿಂದ ಸೂಚಿಸಲಾದ ಶಾಖೆಯನ್ನು ಹಿಂಪಡೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ, ಅಂದರೆ, ಬಾಹ್ಯವಾಗಿದ್ದರೆ ಸರ್ವರ್ ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ "main" ಶಾಖೆಯನ್ನು ಬಳಸುತ್ತದೆ, ನಂತರ "git clone" ಕಾರ್ಯಾಚರಣೆಯು ಸ್ಥಳೀಯವಾಗಿ "main" ಅನ್ನು ಪಡೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. Git 2.31 ರಲ್ಲಿ, ಈ ರೀತಿಯ ಪಡೆಯುವಿಕೆಗೆ ಬೆಂಬಲವನ್ನು ಈಗ ಖಾಲಿ ರೆಪೊಸಿಟರಿಗಳಿಗೂ ಅಳವಡಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಹೊಸ ರೆಪೊಸಿಟರಿಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಕ್ಲೋನ್ ಮಾಡುವಾಗ ಅದಕ್ಕೆ ಮೊದಲ ಪ್ಯಾಚ್ಗಳನ್ನು ಸೇರಿಸುವ ಮೊದಲು, ಸ್ಥಳೀಯ ನಕಲು ಈಗ ಬಾಹ್ಯದಲ್ಲಿ ಸ್ಥಾಪಿಸಲಾದ ಆವೃತ್ತಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಸರ್ವರ್ ಡೀಫಾಲ್ಟ್ ಮಾಸ್ಟರ್ ಶಾಖೆಯ ಹೆಸರು.
- 'git rev-list' ಆಜ್ಞೆಯು ಈಗ '--disk-usage' ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿದ್ದು ಅದು ವಸ್ತುಗಳ ಗಾತ್ರದ ಸಾರಾಂಶವನ್ನು ಪ್ರದರ್ಶಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಮುಂಬರುವ ವಿಲೀನ ಬ್ಯಾಕೆಂಡ್ ಬದಲಿ ನಿರೀಕ್ಷೆಯಲ್ಲಿ, ಮರುಹೆಸರು ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಅತ್ಯುತ್ತಮವಾಗಿಸಲಾಗಿದೆ.
- ಲೆಗಸಿ PCRE1 ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿ ಗ್ರಂಥಾಲಯಕ್ಕೆ ಬೆಂಬಲವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ.
- ಹ್ಯಾಶಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ ಏನೇ ಇರಲಿ, ಸಂಕ್ಷಿಪ್ತ URL ಗಳ ಬಲವಂತದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವಿಕೆ ಈಗ ಲಭ್ಯವಿದೆ. core.abbrev ಪ್ಯಾರಾಮೀಟರ್ ಅನ್ನು "ಇಲ್ಲ" ಗೆ ಹೊಂದಿಸುವ ಮೂಲಕ ಈ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ.
- 'git rev-parse' ಆಜ್ಞೆಯು ಈಗ '--path-format=(absolute|relative)' ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿದ್ದು, ಇದು ಸಾಪೇಕ್ಷ ಅಥವಾ ಸಂಪೂರ್ಣ ಮಾರ್ಗಗಳು ಔಟ್ಪುಟ್ ಆಗಿದೆಯೇ ಎಂಬುದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ನಿಯಂತ್ರಿಸುತ್ತದೆ.
- ಬ್ಯಾಷ್ ಇನ್ಪುಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಈಗ ಕಸ್ಟಮ್ ಜಿಟ್ ಉಪ-ಆಜ್ಞೆಗಳಿಗೆ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ನಿಯಮಗಳನ್ನು ಸೇರಿಸುವುದನ್ನು ಸುಲಭಗೊಳಿಸುತ್ತವೆ.
- 'git bundle' ಆಜ್ಞೆಯು ಈಗ ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್ನಿಂದ ಉಲ್ಲೇಖಗಳನ್ನು ಓದಲು '--stdin' ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿದೆ.
- "git log" ಆಜ್ಞೆಗೆ "--diff-merges=" ಎಂಬ ಹೊಸ ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ".
- "git ls-files" ಆಜ್ಞೆಯು ಈಗ ಔಟ್ಪುಟ್ನಿಂದ ನಕಲುಗಳನ್ನು ತೆಗೆದುಹಾಕಲು "--deduplicatecan" ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿದೆ.
- ಹಲವಾರು ಕಮಿಟ್ಗಳನ್ನು ಹೊರಗಿಡಲು ಹೊಸ ಮುಖವಾಡಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ - " ^!» ಮತ್ತು « ^- ".
- 'git range-diff' ಆಜ್ಞೆಯು ಈಗ ಹೋಲಿಸಿದ ಶ್ರೇಣಿಯ ಒಂದು ಬದಿಯನ್ನು ಮಾತ್ರ ತೋರಿಸಲು '--left-only' ಮತ್ತು '--right-only' ಆಯ್ಕೆಗಳನ್ನು ಹೊಂದಿದೆ.
- --skip-to= ಆಯ್ಕೆಗಳನ್ನು git diff ಮತ್ತು git log ಆಜ್ಞೆಗಳಿಗೆ ಸೇರಿಸಲಾಗಿದೆ. " ಮತ್ತು "—ತಿರುಗಿಸು= » ಆರಂಭಿಕ ಮಾರ್ಗಗಳ ಅಂತ್ಯಕ್ಕೆ ಬಿಟ್ಟುಬಿಡಲು ಅಥವಾ ಸರಿಸಲು.
- git difftool ಆಜ್ಞೆಯು ಈಗ "--skip-to=" ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿದೆ. » ಅನಿಯಂತ್ರಿತ ಮಾರ್ಗದಿಂದ ಅಡ್ಡಿಪಡಿಸಿದ ಅಧಿವೇಶನವನ್ನು ಪುನರಾರಂಭಿಸಲು.
- ಡೆವಲಪರ್ಗಳ ನಡುವಿನ ಸಂಘರ್ಷದ ಸಂದರ್ಭಗಳನ್ನು ಪರಿಹರಿಸುವ ಮೂಲ ತತ್ವಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ನೀತಿ ಸಂಹಿತೆಯನ್ನು ಆವೃತ್ತಿ 2.0 ಗೆ ನವೀಕರಿಸಲಾಗಿದೆ (ಹಿಂದೆ ಆವೃತ್ತಿ 1.4 ಅನ್ನು ಬಳಸಲಾಗುತ್ತಿತ್ತು).
ಮೂಲ: opennet.ru
