Sha256: fa14ae8b12ce35b5797fc3e47616e8c9909c0c8161a77e4242af9b91bbb50055

Contents?: true

Size: 1.79 KB

Versions: 37

Compression:

Stored size: 1.79 KB

Contents

module OhlohScm::Adapters
	# Some explanation is in order about "chaining."
	#
	# First, realize that a base SvnAdapter only tracks the history of a single
	# subdirectory. If you point an adapter at /trunk, then that adapter is
	# going to ignore eveything in /branches and /tags.
	#
	# The problem with this is that directories often get moved about.  What is
	# called "/trunk" today might have been in a branch directory at some point
	# in the past. But after we completely ignore other directories, we never see
	# that old history.
	#
	# Suppose for example that from revisions 1 to 100, development occured in
	# /branches/beta. Then at revision 101, /trunk was created by copying
	# /branches/beta, and this /trunk lives on to this day.
	#
	# The log for revision 101 is going to look something like this:
	#
	# Changed paths:
	#    D /branches/beta
	#    A /trunk (from /branches/beta:100)
	#
	# A single SvnAdapter pointed at today's /trunk will only see revisions 101
	# through HEAD, because /trunk didn't even exist before revision 101.
	#
	# To capture the prior history, we need to create *another* SvnAdapter
	# which points at /branches/beta, and which considers revisions from 1 to 100.
	#
	# That's what chaining is: when we find that the first commit of an adapter
	# indicates the wholesale renaming or copying of the entire tree from
	# another location, then we generate a new SvnAdapter that points to that
	# prior location, and process that SvnAdapter as well.
	#
	# This behavior recurses ("chains") all the way back to revision 1.
	#
	# It only works if the *entire branch* moves. We don't chain when
	# subdirectories or individual files are copied.
	class SvnChainAdapter < SvnAdapter
	end
end

require_relative 'svn_chain/chain'
require_relative 'svn_chain/commits'
require_relative 'svn_chain/cat_file'

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
ohloh_scm-2.2.13 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.12 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.11 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.10 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.9 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.8 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.7 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.6 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.5 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.4 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.3 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.2 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.1 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.2.0 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.1.0 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.0.1 lib/ohloh_scm/adapters/svn_chain_adapter.rb
ohloh_scm-2.0.0 lib/ohloh_scm/adapters/svn_chain_adapter.rb