Skip to content
Chris78 edited this page Sep 13, 2010 · 19 revisions

Welcome to the tgit wiki!

Abstract

What tgit is not about:

  • tgit - Thank Goodness It’s Thursday
  • tgit - Thank God It’s Today (’Don’t Sweat the Small Stuff At Work’ by Richard Carlson)
  • tgit - Thank God It’s Tuesday
  • tgit - Technology Graduate in Training
  • tgit - The Gospel Is True

It’s a concept!

tgit (pronounced “tag it”) is a concept motivated by the sha2 keys used in git. It’s about tagging the sha2 key of a file rather than a filename or a path to the file. More exactly there is a fileinfo-model (id, sha2, filesize) that is associated with your tags. So if you have duplicates of your file tgit will recognize them and know which tags belong to it.
Since a fileinfo has_many :file_locations, tgit can determine where the associated physical files can be found.
A file_location belongs_to a location. Any kind of location: A harddisk, CD-ROM, DVD, flashdrive or website…

Browse your tags and tgit will tell you where it has ‘seen’ physical files that correspond to the tagged fileinfo objects.

Assume you rename your harddisk, rename folders, change the structure of your files, rename your files and whatever… What will not change is the filesize and the sha2 key of the file contents. So you will still find the fileinfo-objects via your tags. Only the associated file_locations are “dead links” now.
But, in one “full scan” of your harddisks tgit can recognize all files that are already known to the tgit-database and it can rebuild the file_locations.

tgit has a tgit_thumbs database. Once populated with the thumbs (tgit→flippr can do this for you!) you can view (thumbs of) your fotos everywhere at any time. I have a thumbs-db with about 5000 images in it and it’s <20 MB. Even if a file is not accessible (because the CD-ROM it’s actually on is not in the drive or you’re on a different computer) you can view all thumbs.

Update

Have a look at the flippr branch. It’s a fast Delphi Application that frontends the same databases as the Rails (master-) tgit project.

And now I have plans to write a third version of tgit in ruby/GTK+. But since I have never used the GTK libs before it’s gonna be kind of an adventure… we’ll see ;)


To do

As long as I’m not sure wether I want to use some project managment software for this, I’m gonna use the Wiki here to track my ideas and to-dos.

  • on some PCs tgit cannot read directories containing german umlauts (ä,ö,ü,ß), File.directory?(‘c:\…\…äöü’) however recognizes the path
  • The standalone app seems to leave it’s tmp-files in the temp folder. There should be an automatic clean up at app termination.
  • check if (or implement that) it’s possible to add a single file (not only whole folders)
  • Show all files that have no tags yet
  • “only untagged files”-option for random_tag-Controller
  • add created_at to the fileinfo Model and show latest files (= files added to the system lately)
  • Show files by location
  • (optionally) tag files with their file extension initially
  • is it possible to rotate an image within the Browser via Javascript/CSS?
    • not possible with css!
    • have a look at SVG: http://dev.opera.com/articles/view/svg-evolution-2-our-first-steps-into-sv/?page=all
    • rotate images on serverside; interpret tags like L, R, V for rotation (90° left, 90° right, 180°)
  • find a way to tag multiple files (→ define filters and tag the result set after filtering)
  • Read something about SQLite3 performance: any known issues?
  • create indexes on fileinfos and file_locations tables
  • Make the standalone app customizable; use a dynamically chosen SQLite database file
  • let the user set the CD-ROM/DVD Drives letters manually for viewing (here it’s d:\ somewhere else it’s e:\) and replace it in file_location.path when viewing
  • make the image preview nicer (fixed height probably isn’t the best way ;) )
  • prepare previews for more file types
  • insert tooltips on every Ajax-Link
  • Preview Images as real thumbnails (can ImageMagick be put into the standalone app too?!)
    • => better store thumbnails in a thumbs.db for faster viewing and portability (done, see above)
  • optionally allow storage of single “very important files” in the tgit-database
  • store “small” files (up to some user-defined size) completely in the database (textfiles, email-files, midi-files,…)