Mercurial > kallithea
diff rhodecode/tests/fixtures/git_diff_binary_and_normal.diff @ 2995:32471bd1f4ee beta
Implemented generation of changesets based
on whole diff instead of per file diff. That
can give a big speed improvement for large changesets in
repositories with large history.
- improved handling of binary files
- show renames of binary files
- implemented new diff limit functionality
- unify diff generation between hg and git
- Added binary indicators for changed files,
- added diff lib tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 05 Nov 2012 19:57:29 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/tests/fixtures/git_diff_binary_and_normal.diff Mon Nov 05 19:57:29 2012 +0100 @@ -0,0 +1,570 @@ +diff --git a/img/baseline-10px.png b/img/baseline-10px.png +new file mode 100644 +index 0000000000000000000000000000000000000000..16095dcbf5c9ea41caeb1e3e41d647d425222ed1 +GIT binary patch +literal 152 +zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0lw^r(L`iUdT1k0gQ7VIDN`6wR +zf@f}GdTLN=VoGJ<$y6JlA}dc9$B>F!Nx%O8w`Ue+77%bXFxq5j_~-xsZV_1~1zCBH +y)y@U((_~Lrb!=|_@`K?vV_&A58+!u-Gs6x+MGjBnI|qTLFnGH9xvX<aXaWHBd@WW0 + +literal 0 +HcmV?d00001 + +diff --git a/img/baseline-20px.png b/img/baseline-20px.png +deleted file mode 100644 +index 6894c4c8289e8600b595caf70d481324e640b8bd..0000000000000000000000000000000000000000 +GIT binary patch +literal 0 +HcmV?d00001 + +literal 127 +zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0lw^r(L`iUdT1k0gQ7VIDN`6wR +zf@f}GdTLN=VoGJ<$y6JlB1KOZ$B>F!Nk9Jow`XSN<z!=HoHesY!R@WWAwG@Mj0y)B +YKKcpQXiYX%0xD+kboFyt=akR{0IF0Y6aWAK + +diff --git a/index.html b/index.html +index 9aa2355b0d5f3dd324c8191637703c944ca14fca..654d5cc338e5cb27b41e09739363b025242d8acf 100644 +--- a/index.html ++++ b/index.html +@@ -2,7 +2,7 @@ + <html lang="en"> + <head> + <meta charset="utf-8"> +- <title>Baseline</title> ++ <title>Twitter Baseline</title> + + <!-- // Less.js at the ready! --> + <link rel="stylesheet/less" type="text/css" media="all" href="less/baseline.less" /> +@@ -11,6 +11,7 @@ + <!-- // jQuery! --> + <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script> + <script type="text/javascript" src="http://tablesorter.com/jquery.tablesorter.min.js"></script> ++ <script type="text/javascript" src="js/jquery/hashgrid.js"></script> + <script type="text/javascript"> + $(document).ready(function(){ + // Active state in top nav +@@ -36,7 +37,7 @@ + <!-- + <style> + body { +- background: url(img/baseline-20px.png) repeat 0 0, url(img/grid-940px.png) repeat-y top center; ++ background: url(img/baseline-10px.png) repeat 0 0, url(img/grid-940px.png) repeat-y top center; + background-color: #fff; + } + </style> +diff --git a/js/global.js b/js/global.js +deleted file mode 100644 +index a934a3360ef6bdf340a036e6f3475daa7a54103c..0000000000000000000000000000000000000000 +--- a/js/global.js ++++ /dev/null +@@ -1,75 +0,0 @@ +-$(document).ready(function(){ +- // Get Heights +- windowHeight = $(window).height(); +- documentHeight = $(document).height(); +- sidebarHeight = windowHeight - 40; +- containerHeight = windowHeight - 40; +- +- // Get Widths +- windowWidth = $(window).width(); +- containerWidth = windowWidth - 200; +- +- if (windowHeight < containerHeight) { +- +- // Set Dimensions for default state (before resize) +- $('div#sidebar').css({ +- height: sidebarHeight +- }); +- $('div#container').css({ +- width: containerWidth, +- height: containerHeight +- }); +- +- } else { +- +- // During resize, set widths +- $(window).resize(function() { +- console.log('Window Height: ' + $(window).height() + ', Sidebar Height:' + ($(window).height() - 40)); +- +- // Get Heights +- windowHeight = $(window).height(); +- sidebarHeight = windowHeight - 40; +- containerHeight = windowHeight - 40; +- +- // Get Widths +- windowWidth = $(window).width(); +- containerWidth = windowWidth - 200; +- +- // Set Dimensions for default state (before resize) +- $('div#sidebar').css({ +- height: sidebarHeight +- }); +- $('div#container').css({ +- width: containerWidth, +- height: containerHeight +- }); +- }); +- // console.log('omgz window is less than container so... fuck.'); +- $('div#sidebar').css({ +- height: documentHeight - 40 +- }); +- +- } +- +- +- +-/* +- // Toggle Calendars +- $('div#sidebar ul li a').click(function() { +- if ($(this).is('#toggleMonthView')) { +- console.log('toggle month'); +- $(this).addClass('active'); +- $('#toggleListView').removeClass('active'); +- $('table#monthView').show(); +- $('table#listView').hide(); +- } else { +- console.log('toggle list'); +- $(this).addClass('active'); +- $('#toggleMonthView').removeClass('active'); +- $('table#listView').show(); +- $('table#monthView').hide(); +- } +- return false; +- }); +-*/ +-}); +diff --git a/js/jquery/hashgrid.js b/js/jquery/hashgrid.js +new file mode 100755 +index 0000000000000000000000000000000000000000..db7af7989499dd359737a880828f8d1b08571f81 +--- /dev/null ++++ b/js/jquery/hashgrid.js +@@ -0,0 +1,340 @@ ++/** ++ * hashgrid (jQuery version) ++ * http://github.com/dotjay/hashgrid ++ * Version 5, 3 Nov 2010 ++ * Written by Jon Gibbins, dotjay.co.uk, accessibility.co.uk ++ * Contibutors: ++ * Sean Coates, seancoates.com ++ * Phil Dokas, jetless.org ++ * ++ * // Using a basic #grid setup ++ * var grid = new hashgrid(); ++ * ++ * // Using #grid with a custom id (e.g. #mygrid) ++ * var grid = new hashgrid("mygrid"); ++ * ++ * // Using #grid with additional options ++ * var grid = new hashgrid({ ++ * id: 'mygrid', // id for the grid container ++ * modifierKey: 'alt', // optional 'ctrl', 'alt' or 'shift' ++ * showGridKey: 's', // key to show the grid ++ * holdGridKey: 'enter', // key to hold the grid in place ++ * foregroundKey: 'f', // key to toggle foreground/background ++ * jumpGridsKey: 'd', // key to cycle through the grid classes ++ * numberOfGrids: 2, // number of grid classes used ++ * classPrefix: 'class', // prefix for the grid classes ++ * cookiePrefix: 'mygrid' // prefix for the cookie name ++ * }); ++ */ ++if (typeof jQuery == "undefined") { ++ alert("Hashgrid: jQuery not loaded. Make sure it's linked to your pages."); ++} ++ ++ ++/** ++ * hashgrid overlay ++ */ ++var hashgrid = function(set) { ++ ++ var options = { ++ id: 'grid', // id for the grid container ++ modifierKey: null, // optional 'ctrl', 'alt' or 'shift' ++ showGridKey: 'g', // key to show the grid ++ holdGridKey: 'h', // key to hold the grid in place ++ foregroundKey: 'f', // key to toggle foreground/background ++ jumpGridsKey: 'j', // key to cycle through the grid classes ++ numberOfGrids: 1, // number of grid classes used ++ classPrefix: 'grid-', // prefix for the grid classes ++ cookiePrefix: 'hashgrid'// prefix for the cookie name ++ }; ++ var overlayOn = false, ++ sticky = false, ++ overlayZState = 'B', ++ overlayZBackground = -1, ++ overlayZForeground = 9999, ++ classNumber = 1; ++ ++ // Apply options ++ if (typeof set == 'object') { ++ var k; ++ for (k in set) options[k] = set[k]; ++ } ++ else if (typeof set == 'string') { ++ options.id = set; ++ } ++ ++ // Remove any conflicting overlay ++ if ($('#' + options.id).length > 0) { ++ $('#' + options.id).remove(); ++ } ++ ++ // Create overlay, hidden before adding to DOM ++ var overlayEl = $('<div></div>'); ++ overlayEl ++ .attr('id', options.id) ++ .css({ ++ display: 'none', ++ 'pointer-events': 'none' ++ }); ++ $("body").prepend(overlayEl); ++ var overlay = $('#' + options.id); ++ ++ // Unless a custom z-index is set, ensure the overlay will be behind everything ++ if (overlay.css('z-index') == 'auto') overlay.css('z-index', overlayZBackground); ++ ++ // Override the default overlay height with the actual page height ++ var pageHeight = parseFloat($(document).height()); ++ overlay.height(pageHeight); ++ ++ // Add the first grid line so that we can measure it ++ overlay.append('<div id="' + options.id + '-horiz" class="horiz first-line">'); ++ ++ // Position off-screen and display to calculate height ++ var top = overlay.css("top"); ++ overlay.css({ ++ top: "-999px", ++ display: "block" ++ }); ++ ++ // Calculate the number of grid lines needed ++ var line = $('#' + options.id + '-horiz'), ++ lineHeight = line.outerHeight(); ++ ++ // Hide and reset top ++ overlay.css({ ++ display: "none", ++ top: top ++ }); ++ ++ // Break on zero line height ++ if (lineHeight <= 0) return true; ++ ++ // Add the remaining grid lines ++ var i, numGridLines = Math.floor(pageHeight / lineHeight); ++ for (i = numGridLines - 1; i >= 1; i--) { ++ overlay.append('<div class="horiz"></div>'); ++ } ++ ++ // vertical grid ++ overlay.append($('<div class="vert-container"></div>')); ++ var overlayVert = overlay.children('.vert-container'); ++ var gridWidth = overlay.width(); ++ overlayVert.css({width: gridWidth, position: 'absolute', top: 0}); ++ overlayVert.append('<div class="vert first-line"> </div>'); ++ ++ // 30 is an arbitrarily large number... ++ // can't calculate the margin width properly ++ for (i = 0; i < 30; i++) { ++ overlayVert.append('<div class="vert"> </div>'); ++ } ++ ++ overlayVert.children() ++ .height(pageHeight) ++ .css({display: 'inline-block'}); ++ ++ // Check for saved state ++ var overlayCookie = readCookie(options.cookiePrefix + options.id); ++ if (typeof overlayCookie == 'string') { ++ var state = overlayCookie.split(','); ++ state[2] = Number(state[2]); ++ if ((typeof state[2] == 'number') && !isNaN(state[2])) { ++ classNumber = state[2].toFixed(0); ++ overlay.addClass(options.classPrefix + classNumber); ++ } ++ if (state[1] == 'F') { ++ overlayZState = 'F'; ++ overlay.css('z-index', overlayZForeground); ++ } ++ if (state[0] == '1') { ++ overlayOn = true; ++ sticky = true; ++ showOverlay(); ++ } ++ } ++ else { ++ overlay.addClass(options.classPrefix + classNumber); ++ } ++ ++ // Keyboard controls ++ $(document).bind('keydown', keydownHandler); ++ $(document).bind('keyup', keyupHandler); ++ ++ /** ++ * Helpers ++ */ ++ ++ function getModifier(e) { ++ if (options.modifierKey == null) return true; // Bypass by default ++ var m = true; ++ switch(options.modifierKey) { ++ case 'ctrl': ++ m = (e.ctrlKey ? e.ctrlKey : false); ++ break; ++ ++ case 'alt': ++ m = (e.altKey ? e.altKey : false); ++ break; ++ ++ case 'shift': ++ m = (e.shiftKey ? e.shiftKey : false); ++ break; ++ } ++ return m; ++ } ++ ++ function getKey(e) { ++ var k = false, c = (e.keyCode ? e.keyCode : e.which); ++ // Handle keywords ++ if (c == 13) k = 'enter'; ++ // Handle letters ++ else k = String.fromCharCode(c).toLowerCase(); ++ return k; ++ } ++ ++ function saveState() { ++ createCookie(options.cookiePrefix + options.id, (sticky ? '1' : '0') + ',' + overlayZState + ',' + classNumber, 1); ++ } ++ ++ function showOverlay() { ++ overlay.show(); ++ overlayVert.css({width: overlay.width()}); ++ // hide any vertical blocks that aren't at the top of the viewport ++ overlayVert.children('.vert').each(function () { ++ $(this).css('display','inline-block'); ++ if ($(this).offset().top > 0) { ++ $(this).hide(); ++ } ++ }); ++ } ++ ++ /** ++ * Event handlers ++ */ ++ ++ function keydownHandler(e) { ++ var source = e.target.tagName.toLowerCase(); ++ if ((source == 'input') || (source == 'textarea') || (source == 'select')) return true; ++ var m = getModifier(e); ++ if (!m) return true; ++ var k = getKey(e); ++ if (!k) return true; ++ switch(k) { ++ case options.showGridKey: ++ if (!overlayOn) { ++ showOverlay(); ++ overlayOn = true; ++ } ++ else if (sticky) { ++ overlay.hide(); ++ overlayOn = false; ++ sticky = false; ++ saveState(); ++ } ++ break; ++ case options.holdGridKey: ++ if (overlayOn && !sticky) { ++ // Turn sticky overlay on ++ sticky = true; ++ saveState(); ++ } ++ break; ++ case options.foregroundKey: ++ if (overlayOn) { ++ // Toggle sticky overlay z-index ++ if (overlay.css('z-index') == overlayZForeground) { ++ overlay.css('z-index', overlayZBackground); ++ overlayZState = 'B'; ++ } ++ else { ++ overlay.css('z-index', overlayZForeground); ++ overlayZState = 'F'; ++ } ++ saveState(); ++ } ++ break; ++ case options.jumpGridsKey: ++ if (overlayOn && (options.numberOfGrids > 1)) { ++ // Cycle through the available grids ++ overlay.removeClass(options.classPrefix + classNumber); ++ classNumber++; ++ if (classNumber > options.numberOfGrids) classNumber = 1; ++ overlay.addClass(options.classPrefix + classNumber); ++ showOverlay(); ++ if (/webkit/.test( navigator.userAgent.toLowerCase() )) { ++ forceRepaint(); ++ } ++ saveState(); ++ } ++ break; ++ } ++ } ++ ++ function keyupHandler(e) { ++ var m = getModifier(e); ++ if (!m) return true; ++ var k = getKey(e); ++ if (!k) return true; ++ if ((k == options.showGridKey) && !sticky) { ++ overlay.hide(); ++ overlayOn = false; ++ } ++ } ++ ++ /** ++ * Cookie functions ++ * ++ * By Peter-Paul Koch: ++ * http://www.quirksmode.org/js/cookies.html ++ */ ++ function createCookie(name,value,days) { ++ if (days) { ++ var date = new Date(); ++ date.setTime(date.getTime()+(days*24*60*60*1000)); ++ var expires = "; expires="+date.toGMTString(); ++ } ++ else var expires = ""; ++ document.cookie = name+"="+value+expires+"; path=/"; ++ } ++ ++ function readCookie(name) { ++ var nameEQ = name + "="; ++ var ca = document.cookie.split(';'); ++ for(var i=0;i < ca.length;i++) { ++ var c = ca[i]; ++ while (c.charAt(0)==' ') c = c.substring(1,c.length); ++ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); ++ } ++ return null; ++ } ++ ++ function eraseCookie(name) { ++ createCookie(name,"",-1); ++ } ++ ++ /** ++ * Forces a repaint (because WebKit has issues) ++ * http://www.sitepoint.com/forums/showthread.php?p=4538763 ++ * http://www.phpied.com/the-new-game-show-will-it-reflow/ ++ */ ++ function forceRepaint() { ++ var ss = document.styleSheets[0]; ++ try { ++ ss.addRule('.xxxxxx', 'position: relative'); ++ ss.removeRule(ss.rules.length - 1); ++ } catch(e){} ++ } ++ ++} ++ ++ ++/** ++ * You can call hashgrid from your own code, but it's loaded here as ++ * an example for your convenience. ++ */ ++$(document).ready(function() { ++ ++ var grid = new hashgrid({ ++ numberOfGrids: 2 ++ }); ++ ++}); +diff --git a/less/docs.less b/less/docs.less +index 165ddb142019d6ec45aae1fa3fdbb3cbcea3bfdb..30b561118c290925a213d987691dfcbeafeb8f44 100644 +--- a/less/docs.less ++++ b/less/docs.less +@@ -1,3 +1,10 @@ ++body { ++ #gradient > .vertical-three-colors(#eee, #fff, 0.15, #fff); ++ background-attachment: fixed; ++ background-position: 0 40px; ++ position: relative; ++} ++ + // Give us some love + header, + section, +@@ -77,3 +84,30 @@ aside { + section { + margin-bottom: 40px; + } ++ ++// Hashgrid grid ++/** ++ * Grid ++ */ ++#grid { ++ width: 980px; ++ position: absolute; ++ top: 0; ++ left: 50%; ++ margin-left: -490px; ++} ++#grid div.vert { ++ width: 39px; ++ border: solid darkturquoise; ++ border-width: 0 1px; ++ margin-right: 19px; ++} ++#grid div.vert.first-line { ++ margin-left: 19px; ++} ++#grid div.horiz { ++ height: 19px; ++ border-bottom: 1px dotted rgba(255,0,0,.25); ++ margin: 0; ++ padding: 0; ++} +diff --git a/less/scaffolding.less b/less/scaffolding.less +index 2191d98b3f3f805b62eb3b60f1cb4f0be5bf1aa8..88bcf714a9f075cd7ba60033022f21ff95efc776 100644 +--- a/less/scaffolding.less ++++ b/less/scaffolding.less +@@ -7,7 +7,7 @@ + -------------------------------------------------- */ + + div.row { +- .clearfix; ++ .clearfix(); + div.span1 { .columns(1); } + div.span2 { .columns(2); } + div.span3 { .columns(3); } +@@ -34,8 +34,6 @@ html, body { + background-color: #fff; + } + body { +- #gradient > .vertical-three-colors(#eee, #fff, 0.25, #fff); +- background-attachment: fixed; + margin: 0; + .sans-serif(normal,14px,20px); + color: @gray; +diff --git a/readme.markdown b/readme.markdown +index 36b357b31afdee5fffbeddeba3144ffbd98d9778..41966346963824f2ce5497b8275c3a15c2044ac9 100644 +--- a/readme.markdown ++++ b/readme.markdown +@@ -1,13 +1,4 @@ + TODOS + +-* Write "Using Twitter BP" section +-** Two ways to use: LESS.js or compiled +-** Not meant to be 100% bulletproof, but is 90% bulletproof (stats?) +-** Advanced framework for fast prototyping, internal app development, bootstraping new websites +-** Can be easily modified to provide more legacy support +- +-* Add grid examples back in + * Cross browser checks? Show this anywhere? +-* Add layouts section back in +- +-* Point JS libraries to public library links instead of within the repo +\ No newline at end of file ++* Add layouts section back in +\ No newline at end of file