SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
gitfs
@vtemian
gitfs - Pytim #7
$whoami
gitfs - Pytim #7
gitfs - Pytim #7
the problem
CHAOS!
gitfs - Pytim #7
gitfs - Pytim #7
gitfs - Pytim #7
introducing gitfs
gitfs - Pytim #7
gitfs
what is it?
gitfs - Pytim #7
demo
gitfs - Pytim #7
easy!
as 1,2,3
gitfs - Pytim #7
gitfs - Pytim #7
open-source
gitfs - Pytim #7
how was it made?
gitfs - Pytim #7
research
gitfs - Pytim #7
for git
gitfs - Pytim #7
git=pygit2
gitfs - Pytim #7
from pygit2 import clone_repository, Keypair
gitfs - Pytim #7
from pygit2 import clone_repository, Keypair
credentials = Keypair("git", "/home/wok/.ssh/
unsafe_key.pub","/home/wok/.ssh/unsafe_key", "")
gitfs - Pytim #7
from pygit2 import clone_repository, Keypair
credentials = Keypair("git", "/home/wok/.ssh/
unsafe_key.pub","/home/wok/.ssh/unsafe_key", "")
repository = clone_repository("git@github.
com:vtemian/gitfs-demo","/home/wok/gitfs-demo",
credentials=credentials)
gitfs - Pytim #7
from pygit2 import clone_repository, Keypair
credentials = Keypair("git", "/home/wok/.ssh/
unsafe_key.pub","/home/wok/.ssh/unsafe_key", "")
repository = clone_repository("git@github.
com:vtemian/gitfs-demo","/home/wok/gitfs-demo",
credentials=credentials)
remote = [remote for remote in repo.remotes
if remote.name == "origin"]
remote[0].credentials = credentials
gitfs - Pytim #7
from pygit2 import clone_repository, Keypair
credentials = Keypair("git", "/home/wok/.ssh/
unsafe_key.pub","/home/wok/.ssh/unsafe_key", "")
repository = clone_repository("git@github.
com:vtemian/gitfs-demo","/home/wok/gitfs-demo",
credentials=credentials)
remote = [remote for remote in repo.remotes
if remote.name == "origin"]
remote[0].credentials = credentials
remote[0].push("refs/heads/master")
gitfs - Pytim #7
for the file system
gitfs - Pytim #7
file system=fusepy
gitfs - Pytim #7
class Memory(Operations):
gitfs - Pytim #7
class Memory(Operations):
def open(self, path, flags):
self.fd += 1
return self.fd
gitfs - Pytim #7
class Memory(Operations):
def open(self, path, flags):
self.fd += 1
return self.fd
def read(self, path, size, offset, fh):
return self.data[path][offset:offset + size]
gitfs - Pytim #7
class Memory(Operations):
def open(self, path, flags):
self.fd += 1
return self.fd
def read(self, path, size, offset, fh):
return self.data[path][offset:offset + size]
def rename(self, old, new):
self.files[new] = self.files.pop(old)
gitfs - Pytim #7
class Memory(Operations):
def open(self, path, flags):
self.fd += 1
return self.fd
def read(self, path, size, offset, fh):
return self.data[path][offset:offset + size]
def rename(self, old, new):
self.files[new] = self.files.pop(old)
def rmdir(self, path):
self.files.pop(path)
self.files['/']['st_nlink'] -= 1
gitfs - Pytim #7
class Memory(Operations):
def open(self, path, flags):
self.fd += 1
return self.fd
def read(self, path, size, offset, fh):
return self.data[path][offset:offset + size]
def rename(self, old, new):
self.files[new] = self.files.pop(old)
def rmdir(self, path):
self.files.pop(path)
self.files['/']['st_nlink'] -= 1
def write(self, path, data, offset, fh):
self.data[path] = self.data[path][:offset] +data
				 self.files[path]['st_size'] = len(self.data[path])
return len(data)
gitfs - Pytim #7
first iteration
gitfs - Pytim #7
very dirty
def rename(self, old, new):
if "history" in old or new:
# raise EROFS
elif old == "/" or new == "/":
# raise EROFS
else:
# do the actual rename
gitfs - Pytim #7
second iteration
gitfs - Pytim #7
read()
Router
CurrentView HistoryView CommitView IndexView
gitfs - Pytim #7
read('/history/2014-10-18/14-01-04-fg34asc4/Readme.md')
CommitView
gitfs - Pytim #7
upstream
synchronization
gitfs - Pytim #7
solve conflicts
gitfs - Pytim #7
solve conflicts
1 2 3
7 8
4 5 6
remote
local
gitfs - Pytim #7
solve conflicts
1 2 3 4 5 6
merging_remote
1 2 3 7 8
merging_local
gitfs - Pytim #7
1 2 3 4 5 7'6 8'
local
solve conflicts
gitfs - Pytim #7
third iteration
gitfs - Pytim #7
cache
gitfs - Pytim #7
upstream
synchronization
gitfs - Pytim #7
Fuse threads
gitfs - Pytim #7
commits
Fuse threads
gitfs - Pytim #7
Commit queue
commits
Fuse threads
gitfs - Pytim #7
Sync worker
Commit queue
commits
Fuse threads
gitfs - Pytim #7
want to sync
don't open for write
Commit queue
Sync worker
commits
Fuse threads
gitfs - Pytim #7
commit
want to sync
don't open for write
Commit queue
Sync worker
commits
Fuse threads
gitfs - Pytim #7
commit
sync done
want to sync
don't open for write
Commit queue Fetch worker
Sync worker
fetch
fetch
fetch
commits
Fuse threads
gitfs - Pytim #7
pytest
gitfs - Pytim #7
			 $ sudo add-apt-repository ppa:presslabs/gitfs
			 $ sudo apt-get update
			 $ sudo apt-get install gitfs
gitfs - Pytim #7
	 commits 	 forks
	stars 	releases
868 27
606 11
gitfs - Pytim #7
github.com/PressLabs/gitfs
gitfs - Pytim #7
Q/A?
gitfs - Pytim #7
thank you
gitfs - Pytim #7

Weitere ähnliche Inhalte

Was ist angesagt?

TDC São Paulo 2016 - Become a jedi with php streams
TDC São Paulo 2016 - Become a jedi with php streamsTDC São Paulo 2016 - Become a jedi with php streams
TDC São Paulo 2016 - Become a jedi with php streamsMatheus Marabesi
 
Gitosis on Mac OS X Server
Gitosis on Mac OS X ServerGitosis on Mac OS X Server
Gitosis on Mac OS X ServerYasuhiro Asaka
 
Linux basics by Raj Miraje
Linux basics by Raj MirajeLinux basics by Raj Miraje
Linux basics by Raj MirajeRaj Mirje
 
5 Time Saving Bash Tricks
5 Time Saving Bash Tricks5 Time Saving Bash Tricks
5 Time Saving Bash TricksNikhil Mungel
 
Some Pry Features
Some Pry FeaturesSome Pry Features
Some Pry FeaturesYann VERY
 
Infrastructure as Data - PuppetConf 2013
Infrastructure as Data - PuppetConf 2013Infrastructure as Data - PuppetConf 2013
Infrastructure as Data - PuppetConf 2013Puppet
 
NUMOSS 4th Week - Commandline Tutorial
NUMOSS 4th Week - Commandline TutorialNUMOSS 4th Week - Commandline Tutorial
NUMOSS 4th Week - Commandline TutorialGagah Arifianto
 
Python utan-stodhjul-motorsag
Python utan-stodhjul-motorsagPython utan-stodhjul-motorsag
Python utan-stodhjul-motorsagniklal
 
Bash in theory and in practice - part two
Bash in theory and in practice - part twoBash in theory and in practice - part two
Bash in theory and in practice - part twoValerio Balbi
 
Gdc09 Minimissile
Gdc09 MinimissileGdc09 Minimissile
Gdc09 MinimissileSusan Gold
 
Raspberry pi Part 25
Raspberry pi Part 25Raspberry pi Part 25
Raspberry pi Part 25Techvilla
 
Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In PythonMarwan Osman
 
Augeas
AugeasAugeas
Augeaslutter
 
PSR-7 and PSR-15, why can't you ignore them
PSR-7 and PSR-15, why can't you ignore themPSR-7 and PSR-15, why can't you ignore them
PSR-7 and PSR-15, why can't you ignore themSérgio Rafael Siqueira
 

Was ist angesagt? (19)

TDC São Paulo 2016 - Become a jedi with php streams
TDC São Paulo 2016 - Become a jedi with php streamsTDC São Paulo 2016 - Become a jedi with php streams
TDC São Paulo 2016 - Become a jedi with php streams
 
Linux Basics
Linux BasicsLinux Basics
Linux Basics
 
Bash 4
Bash 4Bash 4
Bash 4
 
01 linux basics
01 linux basics01 linux basics
01 linux basics
 
Gitosis on Mac OS X Server
Gitosis on Mac OS X ServerGitosis on Mac OS X Server
Gitosis on Mac OS X Server
 
Linux basics by Raj Miraje
Linux basics by Raj MirajeLinux basics by Raj Miraje
Linux basics by Raj Miraje
 
5 Time Saving Bash Tricks
5 Time Saving Bash Tricks5 Time Saving Bash Tricks
5 Time Saving Bash Tricks
 
Some Pry Features
Some Pry FeaturesSome Pry Features
Some Pry Features
 
Infrastructure as Data - PuppetConf 2013
Infrastructure as Data - PuppetConf 2013Infrastructure as Data - PuppetConf 2013
Infrastructure as Data - PuppetConf 2013
 
NUMOSS 4th Week - Commandline Tutorial
NUMOSS 4th Week - Commandline TutorialNUMOSS 4th Week - Commandline Tutorial
NUMOSS 4th Week - Commandline Tutorial
 
Python utan-stodhjul-motorsag
Python utan-stodhjul-motorsagPython utan-stodhjul-motorsag
Python utan-stodhjul-motorsag
 
Linux Command Line
Linux Command LineLinux Command Line
Linux Command Line
 
Bash in theory and in practice - part two
Bash in theory and in practice - part twoBash in theory and in practice - part two
Bash in theory and in practice - part two
 
Gdc09 Minimissile
Gdc09 MinimissileGdc09 Minimissile
Gdc09 Minimissile
 
Raspberry pi Part 25
Raspberry pi Part 25Raspberry pi Part 25
Raspberry pi Part 25
 
Programming Under Linux In Python
Programming Under Linux In PythonProgramming Under Linux In Python
Programming Under Linux In Python
 
Assignment6
Assignment6Assignment6
Assignment6
 
Augeas
AugeasAugeas
Augeas
 
PSR-7 and PSR-15, why can't you ignore them
PSR-7 and PSR-15, why can't you ignore themPSR-7 and PSR-15, why can't you ignore them
PSR-7 and PSR-15, why can't you ignore them
 

Andere mochten auch

Presentation1
Presentation1Presentation1
Presentation1el_yusi
 
Presentation1
Presentation1Presentation1
Presentation1el_yusi
 
Presentation1
Presentation1Presentation1
Presentation1el_yusi
 
Presentation1
Presentation1Presentation1
Presentation1el_yusi
 
INFORMATION SOCIATY
INFORMATION SOCIATYINFORMATION SOCIATY
INFORMATION SOCIATYMIRIAMGR96
 
Introducing gitfs
Introducing gitfsIntroducing gitfs
Introducing gitfsTemian Vlad
 
[Python] introduction
[Python] introduction[Python] introduction
[Python] introductionTemian Vlad
 
A python web service
A python web serviceA python web service
A python web serviceTemian Vlad
 
Presentation1
Presentation1Presentation1
Presentation1el_yusi
 

Andere mochten auch (16)

wp-n00b.php
wp-n00b.phpwp-n00b.php
wp-n00b.php
 
Presentacion
PresentacionPresentacion
Presentacion
 
Presentacion
PresentacionPresentacion
Presentacion
 
Töölehed.
Töölehed.Töölehed.
Töölehed.
 
Presentation1
Presentation1Presentation1
Presentation1
 
Presentation1
Presentation1Presentation1
Presentation1
 
Presentation1
Presentation1Presentation1
Presentation1
 
Belgacom
Belgacom Belgacom
Belgacom
 
Presentation1
Presentation1Presentation1
Presentation1
 
INFORMATION SOCIATY
INFORMATION SOCIATYINFORMATION SOCIATY
INFORMATION SOCIATY
 
Introducing gitfs
Introducing gitfsIntroducing gitfs
Introducing gitfs
 
Presentacion
PresentacionPresentacion
Presentacion
 
[Python] introduction
[Python] introduction[Python] introduction
[Python] introduction
 
A python web service
A python web serviceA python web service
A python web service
 
Travel in your time
Travel in your timeTravel in your time
Travel in your time
 
Presentation1
Presentation1Presentation1
Presentation1
 

Ähnlich wie gitfs

PyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and MorePyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and MoreMatt Harrison
 
나도 할 수 있다 오픈소스
나도 할 수 있다 오픈소스나도 할 수 있다 오픈소스
나도 할 수 있다 오픈소스효준 강
 
Rhel 6.2 complete ebook
Rhel 6.2  complete ebookRhel 6.2  complete ebook
Rhel 6.2 complete ebookYash Gulati
 
Rhel 6.2 complete ebook
Rhel 6.2 complete ebookRhel 6.2 complete ebook
Rhel 6.2 complete ebookYash Gulati
 
Git for beginners
Git for beginnersGit for beginners
Git for beginnersVinh Nguyen
 
DPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark WorkshopDPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark WorkshopJeroen Keppens
 
R版Getopt::Longを作ってみた
R版Getopt::Longを作ってみたR版Getopt::Longを作ってみた
R版Getopt::Longを作ってみたTakeshi Arabiki
 
Fun with processes - lightning talk
Fun with processes - lightning talkFun with processes - lightning talk
Fun with processes - lightning talkPaweł Dawczak
 
2015 bioinformatics python_io_wim_vancriekinge
2015 bioinformatics python_io_wim_vancriekinge2015 bioinformatics python_io_wim_vancriekinge
2015 bioinformatics python_io_wim_vancriekingeProf. Wim Van Criekinge
 
Useful linux-commands
Useful linux-commandsUseful linux-commands
Useful linux-commandsHimani Singh
 
Counting on God
Counting on GodCounting on God
Counting on GodJames Gray
 
An introduction to Git with Atlassian Suite
An introduction to Git with Atlassian SuiteAn introduction to Git with Atlassian Suite
An introduction to Git with Atlassian SuiteChetan Khatri
 
Go Web Development
Go Web DevelopmentGo Web Development
Go Web DevelopmentCheng-Yi Yu
 
List command linux fidora
List command linux fidoraList command linux fidora
List command linux fidoraJinyuan Loh
 
autopkgtest lightning talk
autopkgtest lightning talkautopkgtest lightning talk
autopkgtest lightning talkmartin-pitt
 
Git Concepts, Commands and Connectivity
Git Concepts, Commands and ConnectivityGit Concepts, Commands and Connectivity
Git Concepts, Commands and ConnectivityRaja Soundaramourty
 
Keynote 1 - Engineering Software Analytics Studies
Keynote 1 - Engineering Software Analytics StudiesKeynote 1 - Engineering Software Analytics Studies
Keynote 1 - Engineering Software Analytics StudiesESEM 2014
 

Ähnlich wie gitfs (20)

PyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and MorePyCon 2013 : Scripting to PyPi to GitHub and More
PyCon 2013 : Scripting to PyPi to GitHub and More
 
나도 할 수 있다 오픈소스
나도 할 수 있다 오픈소스나도 할 수 있다 오픈소스
나도 할 수 있다 오픈소스
 
Unix 5 en
Unix 5 enUnix 5 en
Unix 5 en
 
git internals
git internalsgit internals
git internals
 
Rhel 6.2 complete ebook
Rhel 6.2  complete ebookRhel 6.2  complete ebook
Rhel 6.2 complete ebook
 
Rhel 6.2 complete ebook
Rhel 6.2 complete ebookRhel 6.2 complete ebook
Rhel 6.2 complete ebook
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
DPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark WorkshopDPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark Workshop
 
R版Getopt::Longを作ってみた
R版Getopt::Longを作ってみたR版Getopt::Longを作ってみた
R版Getopt::Longを作ってみた
 
Fun with processes - lightning talk
Fun with processes - lightning talkFun with processes - lightning talk
Fun with processes - lightning talk
 
2015 bioinformatics python_io_wim_vancriekinge
2015 bioinformatics python_io_wim_vancriekinge2015 bioinformatics python_io_wim_vancriekinge
2015 bioinformatics python_io_wim_vancriekinge
 
C# to python
C# to pythonC# to python
C# to python
 
Useful linux-commands
Useful linux-commandsUseful linux-commands
Useful linux-commands
 
Counting on God
Counting on GodCounting on God
Counting on God
 
An introduction to Git with Atlassian Suite
An introduction to Git with Atlassian SuiteAn introduction to Git with Atlassian Suite
An introduction to Git with Atlassian Suite
 
Go Web Development
Go Web DevelopmentGo Web Development
Go Web Development
 
List command linux fidora
List command linux fidoraList command linux fidora
List command linux fidora
 
autopkgtest lightning talk
autopkgtest lightning talkautopkgtest lightning talk
autopkgtest lightning talk
 
Git Concepts, Commands and Connectivity
Git Concepts, Commands and ConnectivityGit Concepts, Commands and Connectivity
Git Concepts, Commands and Connectivity
 
Keynote 1 - Engineering Software Analytics Studies
Keynote 1 - Engineering Software Analytics StudiesKeynote 1 - Engineering Software Analytics Studies
Keynote 1 - Engineering Software Analytics Studies
 

Kürzlich hochgeladen

data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfJiananWang21
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptDineshKumar4165
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapRishantSharmaFr
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXssuser89054b
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdfEr. Suman Jyoti
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdfKamal Acharya
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringmulugeta48
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTbhaskargani46
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startQuintin Balsdon
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Arindam Chakraborty, Ph.D., P.E. (CA, TX)
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfRagavanV2
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptMsecMca
 

Kürzlich hochgeladen (20)

data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced LoadsFEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
FEA Based Level 3 Assessment of Deformed Tanks with Fluid Induced Loads
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
NFPA 5000 2024 standard .
NFPA 5000 2024 standard                                  .NFPA 5000 2024 standard                                  .
NFPA 5000 2024 standard .
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdf
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 

gitfs

  • 2. gitfs - Pytim #7 $whoami
  • 4. gitfs - Pytim #7 the problem
  • 7. gitfs - Pytim #7 introducing gitfs
  • 8. gitfs - Pytim #7 gitfs what is it?
  • 9. gitfs - Pytim #7 demo
  • 10. gitfs - Pytim #7 easy! as 1,2,3
  • 12. gitfs - Pytim #7 open-source
  • 13. gitfs - Pytim #7 how was it made?
  • 14. gitfs - Pytim #7 research
  • 15. gitfs - Pytim #7 for git
  • 16. gitfs - Pytim #7 git=pygit2
  • 17. gitfs - Pytim #7 from pygit2 import clone_repository, Keypair
  • 18. gitfs - Pytim #7 from pygit2 import clone_repository, Keypair credentials = Keypair("git", "/home/wok/.ssh/ unsafe_key.pub","/home/wok/.ssh/unsafe_key", "")
  • 19. gitfs - Pytim #7 from pygit2 import clone_repository, Keypair credentials = Keypair("git", "/home/wok/.ssh/ unsafe_key.pub","/home/wok/.ssh/unsafe_key", "") repository = clone_repository("git@github. com:vtemian/gitfs-demo","/home/wok/gitfs-demo", credentials=credentials)
  • 20. gitfs - Pytim #7 from pygit2 import clone_repository, Keypair credentials = Keypair("git", "/home/wok/.ssh/ unsafe_key.pub","/home/wok/.ssh/unsafe_key", "") repository = clone_repository("git@github. com:vtemian/gitfs-demo","/home/wok/gitfs-demo", credentials=credentials) remote = [remote for remote in repo.remotes if remote.name == "origin"] remote[0].credentials = credentials
  • 21. gitfs - Pytim #7 from pygit2 import clone_repository, Keypair credentials = Keypair("git", "/home/wok/.ssh/ unsafe_key.pub","/home/wok/.ssh/unsafe_key", "") repository = clone_repository("git@github. com:vtemian/gitfs-demo","/home/wok/gitfs-demo", credentials=credentials) remote = [remote for remote in repo.remotes if remote.name == "origin"] remote[0].credentials = credentials remote[0].push("refs/heads/master")
  • 22. gitfs - Pytim #7 for the file system
  • 23. gitfs - Pytim #7 file system=fusepy
  • 24. gitfs - Pytim #7 class Memory(Operations):
  • 25. gitfs - Pytim #7 class Memory(Operations): def open(self, path, flags): self.fd += 1 return self.fd
  • 26. gitfs - Pytim #7 class Memory(Operations): def open(self, path, flags): self.fd += 1 return self.fd def read(self, path, size, offset, fh): return self.data[path][offset:offset + size]
  • 27. gitfs - Pytim #7 class Memory(Operations): def open(self, path, flags): self.fd += 1 return self.fd def read(self, path, size, offset, fh): return self.data[path][offset:offset + size] def rename(self, old, new): self.files[new] = self.files.pop(old)
  • 28. gitfs - Pytim #7 class Memory(Operations): def open(self, path, flags): self.fd += 1 return self.fd def read(self, path, size, offset, fh): return self.data[path][offset:offset + size] def rename(self, old, new): self.files[new] = self.files.pop(old) def rmdir(self, path): self.files.pop(path) self.files['/']['st_nlink'] -= 1
  • 29. gitfs - Pytim #7 class Memory(Operations): def open(self, path, flags): self.fd += 1 return self.fd def read(self, path, size, offset, fh): return self.data[path][offset:offset + size] def rename(self, old, new): self.files[new] = self.files.pop(old) def rmdir(self, path): self.files.pop(path) self.files['/']['st_nlink'] -= 1 def write(self, path, data, offset, fh): self.data[path] = self.data[path][:offset] +data self.files[path]['st_size'] = len(self.data[path]) return len(data)
  • 30. gitfs - Pytim #7 first iteration
  • 31. gitfs - Pytim #7 very dirty def rename(self, old, new): if "history" in old or new: # raise EROFS elif old == "/" or new == "/": # raise EROFS else: # do the actual rename
  • 32. gitfs - Pytim #7 second iteration
  • 33. gitfs - Pytim #7 read() Router CurrentView HistoryView CommitView IndexView
  • 34. gitfs - Pytim #7 read('/history/2014-10-18/14-01-04-fg34asc4/Readme.md') CommitView
  • 35. gitfs - Pytim #7 upstream synchronization
  • 36. gitfs - Pytim #7 solve conflicts
  • 37. gitfs - Pytim #7 solve conflicts 1 2 3 7 8 4 5 6 remote local
  • 38. gitfs - Pytim #7 solve conflicts 1 2 3 4 5 6 merging_remote 1 2 3 7 8 merging_local
  • 39. gitfs - Pytim #7 1 2 3 4 5 7'6 8' local solve conflicts
  • 40. gitfs - Pytim #7 third iteration
  • 41. gitfs - Pytim #7 cache
  • 42. gitfs - Pytim #7 upstream synchronization
  • 43. gitfs - Pytim #7 Fuse threads
  • 44. gitfs - Pytim #7 commits Fuse threads
  • 45. gitfs - Pytim #7 Commit queue commits Fuse threads
  • 46. gitfs - Pytim #7 Sync worker Commit queue commits Fuse threads
  • 47. gitfs - Pytim #7 want to sync don't open for write Commit queue Sync worker commits Fuse threads
  • 48. gitfs - Pytim #7 commit want to sync don't open for write Commit queue Sync worker commits Fuse threads
  • 49. gitfs - Pytim #7 commit sync done want to sync don't open for write Commit queue Fetch worker Sync worker fetch fetch fetch commits Fuse threads
  • 50. gitfs - Pytim #7 pytest
  • 51. gitfs - Pytim #7 $ sudo add-apt-repository ppa:presslabs/gitfs $ sudo apt-get update $ sudo apt-get install gitfs
  • 52. gitfs - Pytim #7 commits forks stars releases 868 27 606 11
  • 53. gitfs - Pytim #7 github.com/PressLabs/gitfs
  • 54. gitfs - Pytim #7 Q/A?
  • 55. gitfs - Pytim #7 thank you