ಫೈಲ್ಗಳನ್ನು ಡೂಪ್ಲಿಕೇಟ್ ಮಾಡದೆಯೇ ದಕ್ಷ ವರ್ಷನ್ ಕಂಟ್ರೋಲ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು
ಪ್ರತಿ ವರ್ಷನ್ ಅಥವಾ ಫೋರ್ಕ್ (fork) ಗಾಗಿ ಫೈಲ್ಗಳ ಪೂರ್ಣ ಪ್ರತಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು ಸ್ಥಳವನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ. ಹತ್ತು ಫೈಲ್ಗಳಿರುವ ಪ್ರಾಜೆಕ್ಟ್ನಲ್ಲಿ ನೀವು ಕೇವಲ ಒಂದು ಸಾಲನ್ನು ಬದಲಾಯಿಸಿದರೆ, ನೀವು ಮತ್ತೆ ಹತ್ತು ಫೈಲ್ಗಳನ್ನೇ ಉಳಿಸಬೇಕಾಗಿಲ್ಲ.
ನನ್ನ LaTeX Writer ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ನಿರ್ಮಿಸುವಾಗ ನಾನು ಈ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸಿದೆ. ಹೆಚ್ಚಿನ ಸ್ಟೋರೇಜ್ ವೆಚ್ಚವಿಲ್ಲದೆ ವರ್ಷನ್ ಕಂಟ್ರೋಲ್ ಮತ್ತು ಪ್ರಾಜೆಕ್ಟ್ ಫೋರ್ಕಿಂಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ನನಗೆ ಒಂದು ಮಾರ್ಗ ಬೇಕಾಗಿತ್ತು.
GitHub ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ನಾನು ಗಮನಿಸಿದೆ. ನೀವು ಪ್ರತಿ ಬಾರಿ ಬದಲಾವಣೆ ಮಾಡಿದಾಗಲೂ GitHub ಪೂರ್ಣ ರೆಪೊಸಿಟರಿಯನ್ನು (repository) ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ. ಇದು ಕಂಟೆಂಟ್ ಅನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಫೈಲ್ಗಳು ಹಾಗೂ ಕಮಿಟ್ಗಳನ್ನು (commits) ಜೋಡಿಸಲು ರೆಫರೆನ್ಸ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ.
ನಾನು ಮೂರು ಮುಖ್ಯ ಘಟಕಗಳನ್ನು ಬಳಸಿ ನನ್ನ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಿದೆ:
- ಮೆಟಾಡೇಟಾ (Metadata): ಇದು ಪ್ರಾಜೆಕ್ಟ್ಗಳು, ಮಾಲೀಕರು ಮತ್ತು ಫೋಲ್ಡರ್ಗಳ ಐಡಿಗಳನ್ನು (IDs) ಸಂಗ್ರಹಿಸುತ್ತದೆ.
- ಫೈಲ್ ರೆಕಾರ್ಡ್ಗಳು (File Records): ಇವು ಫೈಲ್ ಹೆಸರುಗಳನ್ನು ಮತ್ತು ಕಂಟೆಂಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಲಿಂಕ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತವೆ.
- ಬ್ಲೋಬ್ಗಳು (Blobs): ಇಲ್ಲಿ ನಿಜವಾದ ಕಂಟೆಂಟ್ ಇರುತ್ತದೆ.
ಈ ವ್ಯವಸ್ಥೆಯು ಕಂಟೆಂಟ್ ಹ್ಯಾಶಿಂಗ್ (content hashing) ಮೂಲಕ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನೀವು ಫೈಲ್ ಅನ್ನು ಉಳಿಸಿದಾಗ, ವ್ಯವಸ್ಥೆಯು ಕಂಟೆಂಟ್ ಆಧಾರದ ಮೇಲೆ ವಿಶಿಷ್ಟವಾದ ಐಡಿಯನ್ನು (unique ID) ಸೃಷ್ಟಿಸುತ್ತದೆ. ಒಂದು ವೇಳೆ ಆ ಕಂಟೆಂಟ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ, ವ್ಯವಸ್ಥೆಯು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಬ್ಲೋಬ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ. ಇದು ಹೊಸದನ್ನು ಸೃಷ್ಟಿಸುವುದಿಲ್ಲ.
ಈ ವಿಧಾನವು ಫೋರ್ಕಿಂಗ್ ಅನ್ನು ಸುಲಭ ಮತ್ತು ಅಗ್ಗವಾಗಿಸುತ್ತದೆ. ನೀವು ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಫೋರ್ಕ್ ಮಾಡಿದಾಗ:
- ವ್ಯವಸ್ಥೆಯು ಹೊಸ ಪ್ರಾಜೆಕ್ಟ್ ಐಡಿಯನ್ನು (Project ID) ಸೃಷ್ಟಿಸುತ್ತದೆ.
- ಇದು ಫೈಲ್ಗಳು ಮತ್ತು ಫೋಲ್ಡರ್ಗಳಿಗಾಗಿ ಹೊಸ ಮೆಟಾಡೇಟಾವನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ.
- ಇದು ಹೊಸ ಮೆಟಾಡೇಟಾವನ್ನು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಬ್ಲೋಬ್ಗಳಿಗೆ ಲಿಂಕ್ ಮಾಡುತ್ತದೆ.
ಫೋರ್ಕ್ ಮಾಡುವಾಗ ಯಾವುದೇ ನಿಜವಾದ ಫೈಲ್ ಕಂಟೆಂಟ್ ಅನ್ನು ಕಾಪಿ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ನೀವು ಕೇವಲ ಸಣ್ಣ ಮೆಟಾಡೇಟಾ ರೆಕಾರ್ಡ್ಗಳನ್ನು ಮಾತ್ರ ಡೂಪ್ಲಿಕೇಟ್ ಮಾಡುತ್ತೀರಿ.
ನೀವು ಫೋರ್ಕ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿದಾಗಲೂ, ಪ್ರಕ್ರಿಯೆಯು ದಕ್ಷವಾಗಿರುತ್ತದೆ:
- ನೀವು ಕಂಟೆಂಟ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತೀರಿ.
- ವ್ಯವಸ್ಥೆಯು ಹೊಸ ಕಂಟೆಂಟ್ ಅನ್ನು ಹ್ಯಾಶ್ ಮಾಡುತ್ತದೆ.
- ಆ ನಿಖರವಾದ ಕಂಟೆಂಟ್ ಇಲ್ಲದಿದ್ದಾಗ ಮಾತ್ರ ಇದು ಹೊಸ ಬ್ಲೋಬ್ ಅನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ.
- ನಿಮ್ಮ ಫೋರ್ಕ್ನ ಮೆಟಾಡೇಟಾ ಹೊಸ ಬ್ಲೋಬ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ.
- ಮೂಲ ಪ್ರಾಜೆಕ್ಟ್ ಇನ್ನೂ ಹಳೆಯ ಬ್ಲೋಬ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ.
ಈ ವಿಧಾನವು ಹಲವಾರು ಪ್ರಯೋಜನಗಳನ್ನು ನೀಡುತ್ತದೆ:
- ಕಂಟೆಂಟ್ ಡ್ಯೂಪ್ಲಿಕೇಶನ್ (Content deduplication) ದೊಡ್ಡ ಪ್ರಮಾಣದ ಸ್ಥಳವನ್ನು ಉಳಿಸುತ್ತದೆ.
- ಫೋರ್ಕಿಂಗ್ ತಕ್ಷಣವೇ ನಡೆಯುತ್ತದೆ.
- ವರ್ಷನ್ ನಿರ್ವಹಣೆಯು ವ್ಯವಸ್ಥಿತವಾಗಿರುತ್ತದೆ.
- ಡೇಟಾಬೇಸ್ ಬೆಳವಣಿಗೆಯು ನಿಧಾನವಾಗಿರುತ್ತದೆ.
ಹೆಚ್ಚಿನ ಸ್ಟೋರೇಜ್ ಹೊರೆಯಿಲ್ಲದೆ ನೀವು GitHub ನಂತಹ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪಡೆಯಬಹುದು.