remove shit, add matplotlib
This commit is contained in:
633
.matplotlib/matplotlibrc
Normal file
633
.matplotlib/matplotlibrc
Normal file
@@ -0,0 +1,633 @@
|
||||
### MATPLOTLIBRC FORMAT
|
||||
|
||||
# This is a sample matplotlib configuration file - you can find a copy
|
||||
# of it on your system in
|
||||
# site-packages/matplotlib/mpl-data/matplotlibrc. If you edit it
|
||||
# there, please note that it will be overwritten in your next install.
|
||||
# If you want to keep a permanent local copy that will not be
|
||||
# overwritten, place it in the following location:
|
||||
# unix/linux:
|
||||
# $HOME/.config/matplotlib/matplotlibrc or
|
||||
# $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
|
||||
# other platforms:
|
||||
# $HOME/.matplotlib/matplotlibrc
|
||||
#
|
||||
# See http://matplotlib.org/users/customizing.html#the-matplotlibrc-file for
|
||||
# more details on the paths which are checked for the configuration file.
|
||||
#
|
||||
# This file is best viewed in a editor which supports python mode
|
||||
# syntax highlighting. Blank lines, or lines starting with a comment
|
||||
# symbol, are ignored, as are trailing comments. Other lines must
|
||||
# have the format
|
||||
# key : val # optional comment
|
||||
#
|
||||
# Colors: for the color values below, you can either use - a
|
||||
# matplotlib color string, such as r, k, or b - an rgb tuple, such as
|
||||
# (1.0, 0.5, 0.0) - a hex string, such as ff00ff - a scalar
|
||||
# grayscale intensity such as 0.75 - a legal html color name, e.g., red,
|
||||
# blue, darkslategray
|
||||
|
||||
#### CONFIGURATION BEGINS HERE
|
||||
|
||||
# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
|
||||
# MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
|
||||
# Template.
|
||||
# You can also deploy your own backend outside of matplotlib by
|
||||
# referring to the module name (which must be in the PYTHONPATH) as
|
||||
# 'module://my_backend'.
|
||||
backend : macosx
|
||||
|
||||
# If you are using the Qt4Agg backend, you can choose here
|
||||
# to use the PyQt4 bindings or the newer PySide bindings to
|
||||
# the underlying Qt4 toolkit.
|
||||
#backend.qt4 : PyQt4 # PyQt4 | PySide
|
||||
|
||||
# Note that this can be overridden by the environment variable
|
||||
# QT_API used by Enthought Tool Suite (ETS); valid values are
|
||||
# "pyqt" and "pyside". The "pyqt" setting has the side effect of
|
||||
# forcing the use of Version 2 API for QString and QVariant.
|
||||
|
||||
# The port to use for the web server in the WebAgg backend.
|
||||
# webagg.port : 8888
|
||||
|
||||
# If webagg.port is unavailable, a number of other random ports will
|
||||
# be tried until one that is available is found.
|
||||
# webagg.port_retries : 50
|
||||
|
||||
# When True, open the webbrowser to the plot that is shown
|
||||
# webagg.open_in_browser : True
|
||||
|
||||
# When True, the figures rendered in the nbagg backend are created with
|
||||
# a transparent background.
|
||||
# nbagg.transparent : False
|
||||
|
||||
# if you are running pyplot inside a GUI and your backend choice
|
||||
# conflicts, we will automatically try to find a compatible one for
|
||||
# you if backend_fallback is True
|
||||
#backend_fallback: True
|
||||
|
||||
#interactive : False
|
||||
#toolbar : toolbar2 # None | toolbar2 ("classic" is deprecated)
|
||||
#timezone : UTC # a pytz timezone string, e.g., US/Central or Europe/Paris
|
||||
|
||||
# Where your matplotlib data lives if you installed to a non-default
|
||||
# location. This is where the matplotlib fonts, bitmaps, etc reside
|
||||
#datapath : /home/jdhunter/mpldata
|
||||
|
||||
|
||||
### LINES
|
||||
# See http://matplotlib.org/api/artist_api.html#module-matplotlib.lines for more
|
||||
# information on line properties.
|
||||
#lines.linewidth : 1.5 # line width in points
|
||||
#lines.linestyle : - # solid line
|
||||
#lines.color : C0 # has no affect on plot(); see axes.prop_cycle
|
||||
#lines.marker : None # the default marker
|
||||
#lines.markeredgewidth : 1.0 # the line width around the marker symbol
|
||||
#lines.markersize : 6 # markersize, in points
|
||||
#lines.dash_joinstyle : miter # miter|round|bevel
|
||||
#lines.dash_capstyle : butt # butt|round|projecting
|
||||
#lines.solid_joinstyle : miter # miter|round|bevel
|
||||
#lines.solid_capstyle : projecting # butt|round|projecting
|
||||
#lines.antialiased : True # render lines in antialiased (no jaggies)
|
||||
|
||||
# The three standard dash patterns. These are scaled by the linewidth.
|
||||
#lines.dashed_pattern : 2.8, 1.2
|
||||
#lines.dashdot_pattern : 4.8, 1.2, 0.8, 1.2
|
||||
#lines.dotted_pattern : 1.1, 1.1
|
||||
#lines.scale_dashes : True
|
||||
|
||||
#markers.fillstyle: full # full|left|right|bottom|top|none
|
||||
|
||||
### PATCHES
|
||||
# Patches are graphical objects that fill 2D space, like polygons or
|
||||
# circles. See
|
||||
# http://matplotlib.org/api/artist_api.html#module-matplotlib.patches
|
||||
# information on patch properties
|
||||
#patch.linewidth : 1 # edge width in points.
|
||||
#patch.facecolor : C0
|
||||
#patch.edgecolor : black # if forced, or patch is not filled
|
||||
#patch.force_edgecolor : False # True to always use edgecolor
|
||||
#patch.antialiased : True # render patches in antialiased (no jaggies)
|
||||
|
||||
### HATCHES
|
||||
#hatch.color : k
|
||||
#hatch.linewidth : 1.0
|
||||
|
||||
### Boxplot
|
||||
#boxplot.notch : False
|
||||
#boxplot.vertical : True
|
||||
#boxplot.whiskers : 1.5
|
||||
#boxplot.bootstrap : None
|
||||
#boxplot.patchartist : False
|
||||
#boxplot.showmeans : False
|
||||
#boxplot.showcaps : True
|
||||
#boxplot.showbox : True
|
||||
#boxplot.showfliers : True
|
||||
#boxplot.meanline : False
|
||||
|
||||
#boxplot.flierprops.color : 'k'
|
||||
#boxplot.flierprops.marker : 'o'
|
||||
#boxplot.flierprops.markerfacecolor : 'none'
|
||||
#boxplot.flierprops.markeredgecolor : 'k'
|
||||
#boxplot.flierprops.markersize : 6
|
||||
#boxplot.flierprops.linestyle : 'none'
|
||||
#boxplot.flierprops.linewidth : 1.0
|
||||
|
||||
#boxplot.boxprops.color : 'k'
|
||||
#boxplot.boxprops.linewidth : 1.0
|
||||
#boxplot.boxprops.linestyle : '-'
|
||||
|
||||
#boxplot.whiskerprops.color : 'k'
|
||||
#boxplot.whiskerprops.linewidth : 1.0
|
||||
#boxplot.whiskerprops.linestyle : '-'
|
||||
|
||||
#boxplot.capprops.color : 'k'
|
||||
#boxplot.capprops.linewidth : 1.0
|
||||
#boxplot.capprops.linestyle : '-'
|
||||
|
||||
#boxplot.medianprops.color : 'C1'
|
||||
#boxplot.medianprops.linewidth : 1.0
|
||||
#boxplot.medianprops.linestyle : '-'
|
||||
|
||||
#boxplot.meanprops.color : 'C2'
|
||||
#boxplot.meanprops.marker : '^'
|
||||
#boxplot.meanprops.markerfacecolor : 'C2'
|
||||
#boxplot.meanprops.markeredgecolor : 'C2'
|
||||
#boxplot.meanprops.markersize : 6
|
||||
#boxplot.meanprops.linestyle : 'none'
|
||||
#boxplot.meanprops.linewidth : 1.0
|
||||
|
||||
### FONT
|
||||
#
|
||||
# font properties used by text.Text. See
|
||||
# http://matplotlib.org/api/font_manager_api.html for more
|
||||
# information on font properties. The 6 font properties used for font
|
||||
# matching are given below with their default values.
|
||||
#
|
||||
# The font.family property has five values: 'serif' (e.g., Times),
|
||||
# 'sans-serif' (e.g., Helvetica), 'cursive' (e.g., Zapf-Chancery),
|
||||
# 'fantasy' (e.g., Western), and 'monospace' (e.g., Courier). Each of
|
||||
# these font families has a default list of font names in decreasing
|
||||
# order of priority associated with them. When text.usetex is False,
|
||||
# font.family may also be one or more concrete font names.
|
||||
#
|
||||
# The font.style property has three values: normal (or roman), italic
|
||||
# or oblique. The oblique style will be used for italic, if it is not
|
||||
# present.
|
||||
#
|
||||
# The font.variant property has two values: normal or small-caps. For
|
||||
# TrueType fonts, which are scalable fonts, small-caps is equivalent
|
||||
# to using a font size of 'smaller', or about 83%% of the current font
|
||||
# size.
|
||||
#
|
||||
# The font.weight property has effectively 13 values: normal, bold,
|
||||
# bolder, lighter, 100, 200, 300, ..., 900. Normal is the same as
|
||||
# 400, and bold is 700. bolder and lighter are relative values with
|
||||
# respect to the current weight.
|
||||
#
|
||||
# The font.stretch property has 11 values: ultra-condensed,
|
||||
# extra-condensed, condensed, semi-condensed, normal, semi-expanded,
|
||||
# expanded, extra-expanded, ultra-expanded, wider, and narrower. This
|
||||
# property is not currently implemented.
|
||||
#
|
||||
# The font.size property is the default font size for text, given in pts.
|
||||
# 10 pt is the standard value.
|
||||
#
|
||||
#font.family : sans-serif
|
||||
#font.style : normal
|
||||
#font.variant : normal
|
||||
#font.weight : medium
|
||||
#font.stretch : normal
|
||||
# note that font.size controls default text sizes. To configure
|
||||
# special text sizes tick labels, axes, labels, title, etc, see the rc
|
||||
# settings for axes and ticks. Special text sizes can be defined
|
||||
# relative to font.size, using the following values: xx-small, x-small,
|
||||
# small, medium, large, x-large, xx-large, larger, or smaller
|
||||
#font.size : 10.0
|
||||
#font.serif : DejaVu Serif, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
|
||||
#font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
|
||||
#font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
|
||||
#font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, Humor Sans, xkcd, fantasy
|
||||
#font.monospace : DejaVu Sans Mono, Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace
|
||||
|
||||
### TEXT
|
||||
# text properties used by text.Text. See
|
||||
# http://matplotlib.org/api/artist_api.html#module-matplotlib.text for more
|
||||
# information on text properties
|
||||
|
||||
#text.color : black
|
||||
|
||||
### LaTeX customizations. See http://wiki.scipy.org/Cookbook/Matplotlib/UsingTex
|
||||
#text.usetex : False # use latex for all text handling. The following fonts
|
||||
# are supported through the usual rc parameter settings:
|
||||
# new century schoolbook, bookman, times, palatino,
|
||||
# zapf chancery, charter, serif, sans-serif, helvetica,
|
||||
# avant garde, courier, monospace, computer modern roman,
|
||||
# computer modern sans serif, computer modern typewriter
|
||||
# If another font is desired which can loaded using the
|
||||
# LaTeX \usepackage command, please inquire at the
|
||||
# matplotlib mailing list
|
||||
#text.latex.unicode : False # use "ucs" and "inputenc" LaTeX packages for handling
|
||||
# unicode strings.
|
||||
#text.latex.preamble : # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES
|
||||
# AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP
|
||||
# IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO.
|
||||
# preamble is a comma separated list of LaTeX statements
|
||||
# that are included in the LaTeX document preamble.
|
||||
# An example:
|
||||
# text.latex.preamble : \usepackage{bm},\usepackage{euler}
|
||||
# The following packages are always loaded with usetex, so
|
||||
# beware of package collisions: color, geometry, graphicx,
|
||||
# type1cm, textcomp. Adobe Postscript (PSSNFS) font packages
|
||||
# may also be loaded, depending on your font settings
|
||||
|
||||
#text.dvipnghack : None # some versions of dvipng don't handle alpha
|
||||
# channel properly. Use True to correct
|
||||
# and flush ~/.matplotlib/tex.cache
|
||||
# before testing and False to force
|
||||
# correction off. None will try and
|
||||
# guess based on your dvipng version
|
||||
|
||||
#text.hinting : auto # May be one of the following:
|
||||
# 'none': Perform no hinting
|
||||
# 'auto': Use FreeType's autohinter
|
||||
# 'native': Use the hinting information in the
|
||||
# font file, if available, and if your
|
||||
# FreeType library supports it
|
||||
# 'either': Use the native hinting information,
|
||||
# or the autohinter if none is available.
|
||||
# For backward compatibility, this value may also be
|
||||
# True === 'auto' or False === 'none'.
|
||||
#text.hinting_factor : 8 # Specifies the amount of softness for hinting in the
|
||||
# horizontal direction. A value of 1 will hint to full
|
||||
# pixels. A value of 2 will hint to half pixels etc.
|
||||
|
||||
#text.antialiased : True # If True (default), the text will be antialiased.
|
||||
# This only affects the Agg backend.
|
||||
|
||||
# The following settings allow you to select the fonts in math mode.
|
||||
# They map from a TeX font name to a fontconfig font pattern.
|
||||
# These settings are only used if mathtext.fontset is 'custom'.
|
||||
# Note that this "custom" mode is unsupported and may go away in the
|
||||
# future.
|
||||
#mathtext.cal : cursive
|
||||
#mathtext.rm : serif
|
||||
#mathtext.tt : monospace
|
||||
#mathtext.it : serif:italic
|
||||
#mathtext.bf : serif:bold
|
||||
#mathtext.sf : sans
|
||||
#mathtext.fontset : dejavusans # Should be 'dejavusans' (default),
|
||||
# 'dejavuserif', 'cm' (Computer Modern), 'stix',
|
||||
# 'stixsans' or 'custom'
|
||||
#mathtext.fallback_to_cm : True # When True, use symbols from the Computer Modern
|
||||
# fonts when a symbol can not be found in one of
|
||||
# the custom math fonts.
|
||||
|
||||
#mathtext.default : it # The default font to use for math.
|
||||
# Can be any of the LaTeX font names, including
|
||||
# the special name "regular" for the same font
|
||||
# used in regular text.
|
||||
|
||||
### AXES
|
||||
# default face and edge color, default tick sizes,
|
||||
# default fontsizes for ticklabels, and so on. See
|
||||
# http://matplotlib.org/api/axes_api.html#module-matplotlib.axes
|
||||
#axes.facecolor : white # axes background color
|
||||
#axes.edgecolor : black # axes edge color
|
||||
#axes.linewidth : 0.8 # edge linewidth
|
||||
#axes.grid : False # display grid or not
|
||||
#axes.titlesize : large # fontsize of the axes title
|
||||
#axes.titlepad : 6.0 # pad between axes and title in points
|
||||
#axes.labelsize : medium # fontsize of the x any y labels
|
||||
#axes.labelpad : 4.0 # space between label and axis
|
||||
#axes.labelweight : normal # weight of the x and y labels
|
||||
#axes.labelcolor : black
|
||||
#axes.axisbelow : 'line' # draw axis gridlines and ticks below
|
||||
# patches (True); above patches but below
|
||||
# lines ('line'); or above all (False)
|
||||
|
||||
#axes.formatter.limits : -7, 7 # use scientific notation if log10
|
||||
# of the axis range is smaller than the
|
||||
# first or larger than the second
|
||||
#axes.formatter.use_locale : False # When True, format tick labels
|
||||
# according to the user's locale.
|
||||
# For example, use ',' as a decimal
|
||||
# separator in the fr_FR locale.
|
||||
#axes.formatter.use_mathtext : False # When True, use mathtext for scientific
|
||||
# notation.
|
||||
#axes.formatter.useoffset : True # If True, the tick label formatter
|
||||
# will default to labeling ticks relative
|
||||
# to an offset when the data range is
|
||||
# small compared to the minimum absolute
|
||||
# value of the data.
|
||||
#axes.formatter.offset_threshold : 4 # When useoffset is True, the offset
|
||||
# will be used when it can remove
|
||||
# at least this number of significant
|
||||
# digits from tick labels.
|
||||
|
||||
# axes.spines.left : True # display axis spines
|
||||
# axes.spines.bottom : True
|
||||
# axes.spines.top : True
|
||||
# axes.spines.right : True
|
||||
|
||||
|
||||
#axes.unicode_minus : True # use unicode for the minus symbol
|
||||
# rather than hyphen. See
|
||||
# http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
|
||||
#axes.prop_cycle : cycler('color',
|
||||
# ['1f77b4', 'ff7f0e', '2ca02c', 'd62728',
|
||||
# '9467bd', '8c564b', 'e377c2', '7f7f7f',
|
||||
# 'bcbd22', '17becf'])
|
||||
# color cycle for plot lines
|
||||
# as list of string colorspecs:
|
||||
# single letter, long name, or
|
||||
# web-style hex
|
||||
#axes.autolimit_mode : data # How to scale axes limits to the data.
|
||||
# Use "data" to use data limits, plus some margin
|
||||
# Use "round_number" move to the nearest "round" number
|
||||
#axes.xmargin : .05 # x margin. See `axes.Axes.margins`
|
||||
#axes.ymargin : .05 # y margin See `axes.Axes.margins`
|
||||
|
||||
#polaraxes.grid : True # display grid on polar axes
|
||||
#axes3d.grid : True # display grid on 3d axes
|
||||
|
||||
### DATES
|
||||
# These control the default format strings used in AutoDateFormatter.
|
||||
# Any valid format datetime format string can be used (see the python
|
||||
# `datetime` for details). For example using '%%x' will use the locale date representation
|
||||
# '%%X' will use the locale time representation and '%%c' will use the full locale datetime
|
||||
# representation.
|
||||
# These values map to the scales:
|
||||
# {'year': 365, 'month': 30, 'day': 1, 'hour': 1/24, 'minute': 1 / (24 * 60)}
|
||||
|
||||
# date.autoformatter.year : %Y
|
||||
# date.autoformatter.month : %Y-%m
|
||||
# date.autoformatter.day : %Y-%m-%d
|
||||
# date.autoformatter.hour : %m-%d %H
|
||||
# date.autoformatter.minute : %d %H:%M
|
||||
# date.autoformatter.second : %H:%M:%S
|
||||
# date.autoformatter.microsecond : %M:%S.%f
|
||||
|
||||
### TICKS
|
||||
# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
|
||||
#xtick.top : False # draw ticks on the top side
|
||||
#xtick.bottom : True # draw ticks on the bottom side
|
||||
#xtick.major.size : 3.5 # major tick size in points
|
||||
#xtick.minor.size : 2 # minor tick size in points
|
||||
#xtick.major.width : 0.8 # major tick width in points
|
||||
#xtick.minor.width : 0.6 # minor tick width in points
|
||||
#xtick.major.pad : 3.5 # distance to major tick label in points
|
||||
#xtick.minor.pad : 3.4 # distance to the minor tick label in points
|
||||
#xtick.color : k # color of the tick labels
|
||||
#xtick.labelsize : medium # fontsize of the tick labels
|
||||
#xtick.direction : out # direction: in, out, or inout
|
||||
#xtick.minor.visible : False # visibility of minor ticks on x-axis
|
||||
#xtick.major.top : True # draw x axis top major ticks
|
||||
#xtick.major.bottom : True # draw x axis bottom major ticks
|
||||
#xtick.minor.top : True # draw x axis top minor ticks
|
||||
#xtick.minor.bottom : True # draw x axis bottom minor ticks
|
||||
|
||||
#ytick.left : True # draw ticks on the left side
|
||||
#ytick.right : False # draw ticks on the right side
|
||||
#ytick.major.size : 3.5 # major tick size in points
|
||||
#ytick.minor.size : 2 # minor tick size in points
|
||||
#ytick.major.width : 0.8 # major tick width in points
|
||||
#ytick.minor.width : 0.6 # minor tick width in points
|
||||
#ytick.major.pad : 3.5 # distance to major tick label in points
|
||||
#ytick.minor.pad : 3.4 # distance to the minor tick label in points
|
||||
#ytick.color : k # color of the tick labels
|
||||
#ytick.labelsize : medium # fontsize of the tick labels
|
||||
#ytick.direction : out # direction: in, out, or inout
|
||||
#ytick.minor.visible : False # visibility of minor ticks on y-axis
|
||||
#ytick.major.left : True # draw y axis left major ticks
|
||||
#ytick.major.right : True # draw y axis right major ticks
|
||||
#ytick.minor.left : True # draw y axis left minor ticks
|
||||
#ytick.minor.right : True # draw y axis right minor ticks
|
||||
|
||||
|
||||
### GRIDS
|
||||
#grid.color : b0b0b0 # grid color
|
||||
#grid.linestyle : - # solid
|
||||
#grid.linewidth : 0.8 # in points
|
||||
#grid.alpha : 1.0 # transparency, between 0.0 and 1.0
|
||||
|
||||
### Legend
|
||||
#legend.loc : best
|
||||
#legend.frameon : True # if True, draw the legend on a background patch
|
||||
#legend.framealpha : 0.8 # legend patch transparency
|
||||
#legend.facecolor : inherit # inherit from axes.facecolor; or color spec
|
||||
#legend.edgecolor : 0.8 # background patch boundary color
|
||||
#legend.fancybox : True # if True, use a rounded box for the
|
||||
# legend background, else a rectangle
|
||||
#legend.shadow : False # if True, give background a shadow effect
|
||||
#legend.numpoints : 1 # the number of marker points in the legend line
|
||||
#legend.scatterpoints : 1 # number of scatter points
|
||||
#legend.markerscale : 1.0 # the relative size of legend markers vs. original
|
||||
#legend.fontsize : medium
|
||||
# Dimensions as fraction of fontsize:
|
||||
#legend.borderpad : 0.4 # border whitespace
|
||||
#legend.labelspacing : 0.5 # the vertical space between the legend entries
|
||||
#legend.handlelength : 2.0 # the length of the legend lines
|
||||
#legend.handleheight : 0.7 # the height of the legend handle
|
||||
#legend.handletextpad : 0.8 # the space between the legend line and legend text
|
||||
#legend.borderaxespad : 0.5 # the border between the axes and legend edge
|
||||
#legend.columnspacing : 2.0 # column separation
|
||||
|
||||
### FIGURE
|
||||
# See http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure
|
||||
#figure.titlesize : large # size of the figure title (Figure.suptitle())
|
||||
#figure.titleweight : normal # weight of the figure title
|
||||
|
||||
figure.figsize : 16, 9 # figure size in inches
|
||||
figure.dpi : 120 # figure dots per inch
|
||||
|
||||
|
||||
# figure.figsize : 8, 4 # figure size in inches
|
||||
# figure.dpi : 400 # figure dots per inch
|
||||
|
||||
#figure.facecolor : white # figure facecolor; 0.75 is scalar gray
|
||||
#figure.edgecolor : white # figure edgecolor
|
||||
#figure.autolayout : False # When True, automatically adjust subplot
|
||||
# parameters to make the plot fit the figure
|
||||
#figure.max_open_warning : 20 # The maximum number of figures to open through
|
||||
# the pyplot interface before emitting a warning.
|
||||
# If less than one this feature is disabled.
|
||||
|
||||
# The figure subplot parameters. All dimensions are a fraction of the
|
||||
#figure.subplot.left : 0.125 # the left side of the subplots of the figure
|
||||
#figure.subplot.right : 0.9 # the right side of the subplots of the figure
|
||||
#figure.subplot.bottom : 0.11 # the bottom of the subplots of the figure
|
||||
#figure.subplot.top : 0.88 # the top of the subplots of the figure
|
||||
#figure.subplot.wspace : 0.2 # the amount of width reserved for blank space between subplots,
|
||||
# expressed as a fraction of the average axis width
|
||||
#figure.subplot.hspace : 0.2 # the amount of height reserved for white space between subplots,
|
||||
# expressed as a fraction of the average axis height
|
||||
|
||||
|
||||
### IMAGES
|
||||
#image.aspect : equal # equal | auto | a number
|
||||
image.interpolation : none # see help(imshow) for options
|
||||
image.cmap : inferno # A colormap name, gray etc...
|
||||
#image.lut : 256 # the size of the colormap lookup table
|
||||
#image.origin : upper # lower | upper
|
||||
#image.resample : True
|
||||
#image.composite_image : True # When True, all the images on a set of axes are
|
||||
# combined into a single composite image before
|
||||
# saving a figure as a vector graphics file,
|
||||
# such as a PDF.
|
||||
|
||||
### CONTOUR PLOTS
|
||||
#contour.negative_linestyle : dashed # dashed | solid
|
||||
#contour.corner_mask : True # True | False | legacy
|
||||
|
||||
### ERRORBAR PLOTS
|
||||
#errorbar.capsize : 0 # length of end cap on error bars in pixels
|
||||
|
||||
### HISTOGRAM PLOTS
|
||||
hist.bins : auto # The default number of histogram bins.
|
||||
# If Numpy 1.11 or later is
|
||||
# installed, may also be `auto`
|
||||
|
||||
### SCATTER PLOTS
|
||||
#scatter.marker : o # The default marker type for scatter plots.
|
||||
|
||||
### Agg rendering
|
||||
### Warning: experimental, 2008/10/10
|
||||
#agg.path.chunksize : 0 # 0 to disable; values in the range
|
||||
# 10000 to 100000 can improve speed slightly
|
||||
# and prevent an Agg rendering failure
|
||||
# when plotting very large data sets,
|
||||
# especially if they are very gappy.
|
||||
# It may cause minor artifacts, though.
|
||||
# A value of 20000 is probably a good
|
||||
# starting point.
|
||||
### SAVING FIGURES
|
||||
#path.simplify : True # When True, simplify paths by removing "invisible"
|
||||
# points to reduce file size and increase rendering
|
||||
# speed
|
||||
#path.simplify_threshold : 0.1 # The threshold of similarity below which
|
||||
# vertices will be removed in the simplification
|
||||
# process
|
||||
#path.snap : True # When True, rectilinear axis-aligned paths will be snapped to
|
||||
# the nearest pixel when certain criteria are met. When False,
|
||||
# paths will never be snapped.
|
||||
#path.sketch : None # May be none, or a 3-tuple of the form (scale, length,
|
||||
# randomness).
|
||||
# *scale* is the amplitude of the wiggle
|
||||
# perpendicular to the line (in pixels). *length*
|
||||
# is the length of the wiggle along the line (in
|
||||
# pixels). *randomness* is the factor by which
|
||||
# the length is randomly scaled.
|
||||
|
||||
# the default savefig params can be different from the display params
|
||||
# e.g., you may want a higher resolution, or to make the figure
|
||||
# background white
|
||||
#savefig.dpi : figure # figure dots per inch or 'figure'
|
||||
#savefig.facecolor : white # figure facecolor when saving
|
||||
#savefig.edgecolor : white # figure edgecolor when saving
|
||||
#savefig.format : png # png, ps, pdf, svg
|
||||
#savefig.bbox : standard # 'tight' or 'standard'.
|
||||
# 'tight' is incompatible with pipe-based animation
|
||||
# backends but will workd with temporary file based ones:
|
||||
# e.g. setting animation.writer to ffmpeg will not work,
|
||||
# use ffmpeg_file instead
|
||||
#savefig.pad_inches : 0.1 # Padding to be used when bbox is set to 'tight'
|
||||
#savefig.jpeg_quality: 95 # when a jpeg is saved, the default quality parameter.
|
||||
#savefig.directory : ~ # default directory in savefig dialog box,
|
||||
# leave empty to always use current working directory
|
||||
#savefig.transparent : False # setting that controls whether figures are saved with a
|
||||
# transparent background by default
|
||||
|
||||
# tk backend params
|
||||
#tk.window_focus : False # Maintain shell focus for TkAgg
|
||||
|
||||
# ps backend params
|
||||
#ps.papersize : letter # auto, letter, legal, ledger, A0-A10, B0-B10
|
||||
#ps.useafm : False # use of afm fonts, results in small files
|
||||
#ps.usedistiller : False # can be: None, ghostscript or xpdf
|
||||
# Experimental: may produce smaller files.
|
||||
# xpdf intended for production of publication quality files,
|
||||
# but requires ghostscript, xpdf and ps2eps
|
||||
#ps.distiller.res : 6000 # dpi
|
||||
#ps.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType)
|
||||
|
||||
# pdf backend params
|
||||
#pdf.compression : 6 # integer from 0 to 9
|
||||
# 0 disables compression (good for debugging)
|
||||
#pdf.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType)
|
||||
|
||||
# svg backend params
|
||||
#svg.image_inline : True # write raster image data directly into the svg file
|
||||
#svg.fonttype : 'path' # How to handle SVG fonts:
|
||||
# 'none': Assume fonts are installed on the machine where the SVG will be viewed.
|
||||
# 'path': Embed characters as paths -- supported by most SVG renderers
|
||||
# 'svgfont': Embed characters as SVG fonts -- supported only by Chrome,
|
||||
# Opera and Safari
|
||||
#svg.hashsalt : None # if not None, use this string as hash salt
|
||||
# instead of uuid4
|
||||
|
||||
# docstring params
|
||||
#docstring.hardcopy = False # set this when you want to generate hardcopy docstring
|
||||
|
||||
# Set the verbose flags. This controls how much information
|
||||
# matplotlib gives you at runtime and where it goes. The verbosity
|
||||
# levels are: silent, helpful, debug, debug-annoying. Any level is
|
||||
# inclusive of all the levels below it. If your setting is "debug",
|
||||
# you'll get all the debug and helpful messages. When submitting
|
||||
# problems to the mailing-list, please set verbose to "helpful" or "debug"
|
||||
# and paste the output into your report.
|
||||
#
|
||||
# The "fileo" gives the destination for any calls to verbose.report.
|
||||
# These objects can a filename, or a filehandle like sys.stdout.
|
||||
#
|
||||
# You can override the rc default verbosity from the command line by
|
||||
# giving the flags --verbose-LEVEL where LEVEL is one of the legal
|
||||
# levels, e.g., --verbose-helpful.
|
||||
#
|
||||
# You can access the verbose instance in your code
|
||||
# from matplotlib import verbose.
|
||||
#verbose.level : silent # one of silent, helpful, debug, debug-annoying
|
||||
#verbose.fileo : sys.stdout # a log filename, sys.stdout or sys.stderr
|
||||
|
||||
# Event keys to interact with figures/plots via keyboard.
|
||||
# Customize these settings according to your needs.
|
||||
# Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '')
|
||||
|
||||
#keymap.fullscreen : f, ctrl+f # toggling
|
||||
#keymap.home : h, r, home # home or reset mnemonic
|
||||
#keymap.back : left, c, backspace # forward / backward keys to enable
|
||||
#keymap.forward : right, v # left handed quick navigation
|
||||
#keymap.pan : p # pan mnemonic
|
||||
#keymap.zoom : o # zoom mnemonic
|
||||
#keymap.save : s # saving current figure
|
||||
#keymap.quit : ctrl+w, cmd+w # close the current figure
|
||||
#keymap.grid : g # switching on/off a grid in current axes
|
||||
#keymap.yscale : l # toggle scaling of y-axes ('log'/'linear')
|
||||
#keymap.xscale : L, k # toggle scaling of x-axes ('log'/'linear')
|
||||
#keymap.all_axes : a # enable all axes
|
||||
|
||||
# Control location of examples data files
|
||||
#examples.directory : '' # directory to look in for custom installation
|
||||
|
||||
###ANIMATION settings
|
||||
animation.html : html5 # How to display the animation as HTML in
|
||||
# the IPython notebook. 'html5' uses
|
||||
# HTML5 video tag.
|
||||
#animation.writer : ffmpeg # MovieWriter 'backend' to use
|
||||
#animation.codec : h264 # Codec to use for writing movie
|
||||
#animation.bitrate: -1 # Controls size/quality tradeoff for movie.
|
||||
# -1 implies let utility auto-determine
|
||||
#animation.frame_format: 'png' # Controls frame format used by temp files
|
||||
#animation.ffmpeg_path: 'ffmpeg' # Path to ffmpeg binary. Without full path
|
||||
# $PATH is searched
|
||||
#animation.ffmpeg_args: '' # Additional arguments to pass to ffmpeg
|
||||
#animation.avconv_path: 'avconv' # Path to avconv binary. Without full path
|
||||
# $PATH is searched
|
||||
#animation.avconv_args: '' # Additional arguments to pass to avconv
|
||||
#animation.mencoder_path: 'mencoder'
|
||||
# Path to mencoder binary. Without full path
|
||||
# $PATH is searched
|
||||
#animation.mencoder_args: '' # Additional arguments to pass to mencoder
|
||||
#animation.convert_path: 'convert' # Path to ImageMagick's convert binary.
|
||||
# On Windows use the full path since convert
|
||||
# is also the name of a system tool.
|
@@ -1 +0,0 @@
|
||||
ref: refs/heads/master
|
@@ -1,35 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
[submodule]
|
||||
active = .
|
||||
[remote "origin"]
|
||||
url = https://github.com/sorin-ionescu/prezto.git
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
||||
[submodule "modules/autosuggestions/external"]
|
||||
url = https://github.com/zsh-users/zsh-autosuggestions.git
|
||||
[submodule "modules/completion/external"]
|
||||
url = https://github.com/zsh-users/zsh-completions.git
|
||||
[submodule "modules/fasd/external"]
|
||||
url = https://github.com/clvv/fasd.git
|
||||
[submodule "modules/history-substring-search/external"]
|
||||
url = https://github.com/zsh-users/zsh-history-substring-search.git
|
||||
[submodule "modules/prompt/external/agnoster"]
|
||||
url = https://github.com/agnoster/agnoster-zsh-theme.git
|
||||
[submodule "modules/prompt/external/async"]
|
||||
url = https://github.com/mafredri/zsh-async.git
|
||||
[submodule "modules/prompt/external/powerlevel9k"]
|
||||
url = https://github.com/bhilburn/powerlevel9k.git
|
||||
[submodule "modules/prompt/external/powerline"]
|
||||
url = https://github.com/davidjrice/prezto_powerline.git
|
||||
[submodule "modules/prompt/functions/pure"]
|
||||
url = https://github.com/sindresorhus/pure.git
|
||||
[submodule "modules/syntax-highlighting/external"]
|
||||
url = https://github.com/zsh-users/zsh-syntax-highlighting.git
|
@@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message taken by
|
||||
# applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit. The hook is
|
||||
# allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "applypatch-msg".
|
||||
|
||||
. git-sh-setup
|
||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||
:
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "commit-msg".
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||
# hook is more suited to it.
|
||||
#
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
@@ -1,114 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
|
||||
# An example hook script to integrate Watchman
|
||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||
# new and modified files.
|
||||
#
|
||||
# The hook is passed a version (currently 1) and a time in nanoseconds
|
||||
# formatted as a string and outputs to stdout all files that have been
|
||||
# modified since the given time. Paths must be relative to the root of
|
||||
# the working tree and separated by a single NUL.
|
||||
#
|
||||
# To enable this hook, rename this file to "query-watchman" and set
|
||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||
#
|
||||
my ($version, $time) = @ARGV;
|
||||
|
||||
# Check the hook interface version
|
||||
|
||||
if ($version == 1) {
|
||||
# convert nanoseconds to seconds
|
||||
$time = int $time / 1000000000;
|
||||
} else {
|
||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||
"Falling back to scanning...\n";
|
||||
}
|
||||
|
||||
my $git_work_tree;
|
||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||
$git_work_tree = Win32::GetCwd();
|
||||
$git_work_tree =~ tr/\\/\//;
|
||||
} else {
|
||||
require Cwd;
|
||||
$git_work_tree = Cwd::cwd();
|
||||
}
|
||||
|
||||
my $retry = 1;
|
||||
|
||||
launch_watchman();
|
||||
|
||||
sub launch_watchman {
|
||||
|
||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||
or die "open2() failed: $!\n" .
|
||||
"Falling back to scanning...\n";
|
||||
|
||||
# In the query expression below we're asking for names of files that
|
||||
# changed since $time but were not transient (ie created after
|
||||
# $time but no longer exist).
|
||||
#
|
||||
# To accomplish this, we're using the "since" generator to use the
|
||||
# recency index to select candidate nodes and "fields" to limit the
|
||||
# output to file names only. Then we're using the "expression" term to
|
||||
# further constrain the results.
|
||||
#
|
||||
# The category of transient files that we want to ignore will have a
|
||||
# creation clock (cclock) newer than $time_t value and will also not
|
||||
# currently exist.
|
||||
|
||||
my $query = <<" END";
|
||||
["query", "$git_work_tree", {
|
||||
"since": $time,
|
||||
"fields": ["name"],
|
||||
"expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]]
|
||||
}]
|
||||
END
|
||||
|
||||
print CHLD_IN $query;
|
||||
close CHLD_IN;
|
||||
my $response = do {local $/; <CHLD_OUT>};
|
||||
|
||||
die "Watchman: command returned no output.\n" .
|
||||
"Falling back to scanning...\n" if $response eq "";
|
||||
die "Watchman: command returned invalid output: $response\n" .
|
||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||
|
||||
my $json_pkg;
|
||||
eval {
|
||||
require JSON::XS;
|
||||
$json_pkg = "JSON::XS";
|
||||
1;
|
||||
} or do {
|
||||
require JSON::PP;
|
||||
$json_pkg = "JSON::PP";
|
||||
};
|
||||
|
||||
my $o = $json_pkg->new->utf8->decode($response);
|
||||
|
||||
if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||
print STDERR "Adding '$git_work_tree' to watchman's watch list.\n";
|
||||
$retry--;
|
||||
qx/watchman watch "$git_work_tree"/;
|
||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
|
||||
# Watchman will always return all files on the first query so
|
||||
# return the fast "everything is dirty" flag to git and do the
|
||||
# Watchman query just to get it over with now so we won't pay
|
||||
# the cost in git to look up each individual file.
|
||||
print "/\0";
|
||||
eval { launch_watchman() };
|
||||
exit 0;
|
||||
}
|
||||
|
||||
die "Watchman: $o->{error}.\n" .
|
||||
"Falling back to scanning...\n" if $o->{error};
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
local $, = "\0";
|
||||
print @{$o->{files}};
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed
|
||||
# by applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-applypatch".
|
||||
|
||||
. git-sh-setup
|
||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||
:
|
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git commit" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message if
|
||||
# it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
allownonascii=$(git config --bool hooks.allownonascii)
|
||||
|
||||
# Redirect output to stderr.
|
||||
exec 1>&2
|
||||
|
||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
|
||||
To be portable it is advisable to rename the file.
|
||||
|
||||
If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
exec git diff-index --check --cached $against --
|
@@ -1,53 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# An example hook script to verify what is about to be pushed. Called by "git
|
||||
# push" after it has checked the remote status, but before anything has been
|
||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
||||
#
|
||||
# This hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- Name of the remote to which the push is being done
|
||||
# $2 -- URL to which the push is being done
|
||||
#
|
||||
# If pushing without using a named remote those arguments will be equal.
|
||||
#
|
||||
# Information about the commits which are being pushed is supplied as lines to
|
||||
# the standard input in the form:
|
||||
#
|
||||
# <local ref> <local sha1> <remote ref> <remote sha1>
|
||||
#
|
||||
# This sample shows how to prevent push of commits where the log message starts
|
||||
# with "WIP" (work in progress).
|
||||
|
||||
remote="$1"
|
||||
url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
@@ -1,169 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
||||
#
|
||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
||||
# its job, and can prevent the command from running by exiting with
|
||||
# non-zero status.
|
||||
#
|
||||
# The hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- the upstream the series was forked from.
|
||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
||||
#
|
||||
# This sample shows how to prevent topic branches that are already
|
||||
# merged to 'next' branch from getting rebased, because allowing it
|
||||
# would result in rebasing already published history.
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
# on top of master. Is it OK to rebase it?
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
/^([0-9a-f]+) /;
|
||||
($1 => 1);
|
||||
} split(/\n/, $ARGV[1]);
|
||||
for my $elem (map {
|
||||
/^([0-9a-f]+) (.*)$/;
|
||||
[$1 => $2];
|
||||
} split(/\n/, $ARGV[2])) {
|
||||
if (!exists $not_in_next{$elem->[0]}) {
|
||||
if ($msg) {
|
||||
print STDERR $msg;
|
||||
undef $msg;
|
||||
}
|
||||
print STDERR " $elem->[1]\n";
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
This sample hook safeguards topic branches that have been
|
||||
published from being rewound.
|
||||
|
||||
The workflow assumed here is:
|
||||
|
||||
* Once a topic branch forks from "master", "master" is never
|
||||
merged into it again (either directly or indirectly).
|
||||
|
||||
* Once a topic branch is fully cooked and merged into "master",
|
||||
it is deleted. If you need to build on top of it to correct
|
||||
earlier mistakes, a new topic branch is created by forking at
|
||||
the tip of the "master". This is not strictly necessary, but
|
||||
it makes it easier to keep your history simple.
|
||||
|
||||
* Whenever you need to test or publish your changes to topic
|
||||
branches, merge them into "next" branch.
|
||||
|
||||
The script, being an example, hardcodes the publish branch name
|
||||
to be "next", but it is trivial to make it configurable via
|
||||
$GIT_DIR/config mechanism.
|
||||
|
||||
With this workflow, you would want to know:
|
||||
|
||||
(1) ... if a topic branch has ever been merged to "next". Young
|
||||
topic branches can have stupid mistakes you would rather
|
||||
clean up before publishing, and things that have not been
|
||||
merged into other branches can be easily rebased without
|
||||
affecting other people. But once it is published, you would
|
||||
not want to rewind it.
|
||||
|
||||
(2) ... if a topic branch has been fully merged to "master".
|
||||
Then you can delete it. More importantly, you should not
|
||||
build on top of it -- other people may already want to
|
||||
change things related to the topic as patches against your
|
||||
"master", so if you need further changes, it is better to
|
||||
fork the topic (perhaps with the same name) afresh from the
|
||||
tip of "master".
|
||||
|
||||
Let's look at this example:
|
||||
|
||||
o---o---o---o---o---o---o---o---o---o "next"
|
||||
/ / / /
|
||||
/ a---a---b A / /
|
||||
/ / / /
|
||||
/ / c---c---c---c B /
|
||||
/ / / \ /
|
||||
/ / / b---b C \ /
|
||||
/ / / / \ /
|
||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
||||
|
||||
|
||||
A, B and C are topic branches.
|
||||
|
||||
* A has one fix since it was merged up to "next".
|
||||
|
||||
* B has finished. It has been fully merged up to "master" and "next",
|
||||
and is ready to be deleted.
|
||||
|
||||
* C has not merged to "next" at all.
|
||||
|
||||
We would want to allow C to be rebased, refuse A, and encourage
|
||||
B to be deleted.
|
||||
|
||||
To compute (1):
|
||||
|
||||
git rev-list ^master ^topic next
|
||||
git rev-list ^master next
|
||||
|
||||
if these match, topic has not merged in next at all.
|
||||
|
||||
To compute (2):
|
||||
|
||||
git rev-list master..topic
|
||||
|
||||
if this is empty, it is fully merged to "master".
|
||||
|
||||
DOC_END
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to make use of push options.
|
||||
# The example simply echoes all push options that start with 'echoback='
|
||||
# and rejects all pushes when the "reject" push option is used.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
@@ -1,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare the commit log message.
|
||||
# Called by "git commit" with the name of the file that has the
|
||||
# commit message, followed by the description of the commit
|
||||
# message's source. The hook's purpose is to edit the commit
|
||||
# message file. If the hook fails with a non-zero status,
|
||||
# the commit is aborted.
|
||||
#
|
||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
||||
|
||||
# This hook includes three examples. The first one removes the
|
||||
# "# Please enter the commit message..." help message.
|
||||
#
|
||||
# The second includes the output of "git diff --name-status -r"
|
||||
# into the message, just before the "git status" output. It is
|
||||
# commented because it doesn't cope with --amend or with squashed
|
||||
# commits.
|
||||
#
|
||||
# The third example adds a Signed-off-by line to the message, that can
|
||||
# still be edited. This is rarely a good idea.
|
||||
|
||||
COMMIT_MSG_FILE=$1
|
||||
COMMIT_SOURCE=$2
|
||||
SHA1=$3
|
||||
|
||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
||||
|
||||
# case "$COMMIT_SOURCE,$SHA1" in
|
||||
# ,|template,)
|
||||
# /usr/bin/perl -i.bak -pe '
|
||||
# print "\n" . `git diff --cached --name-status -r`
|
||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
||||
# *) ;;
|
||||
# esac
|
||||
|
||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
||||
# if test -z "$COMMIT_SOURCE"
|
||||
# then
|
||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
||||
# fi
|
@@ -1,128 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to block unannotated tags from entering.
|
||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
||||
#
|
||||
# To enable this hook, rename this file to "update".
|
||||
#
|
||||
# Config
|
||||
# ------
|
||||
# hooks.allowunannotated
|
||||
# This boolean sets whether unannotated tags will be allowed into the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowdeletetag
|
||||
# This boolean sets whether deleting tags will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowmodifytag
|
||||
# This boolean sets whether a tag may be modified after creation. By default
|
||||
# it won't be.
|
||||
# hooks.allowdeletebranch
|
||||
# This boolean sets whether deleting branches will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.denycreatebranch
|
||||
# This boolean sets whether remotely creating branches will be denied
|
||||
# in the repository. By default this is allowed.
|
||||
#
|
||||
|
||||
# --- Command line
|
||||
refname="$1"
|
||||
oldrev="$2"
|
||||
newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
allowunannotated=$(git config --bool hooks.allowunannotated)
|
||||
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
|
||||
denycreatebranch=$(git config --bool hooks.denycreatebranch)
|
||||
allowdeletetag=$(git config --bool hooks.allowdeletetag)
|
||||
allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
|
||||
# check for no description
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
exit 0
|
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
# git ls-files --others --exclude-from=.git/info/exclude
|
||||
# Lines that start with '#' are comments.
|
||||
# For a project mostly in C, the following would be a good set of
|
||||
# exclude patterns (uncomment them if you want to use them):
|
||||
# *.[oa]
|
||||
# *~
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 f2042a29cc7613e8f797044948b0238916b2a234 Andrey Anurin <svxf@yandex-team.ru> 1534073683 +0300 clone: from https://github.com/sorin-ionescu/prezto.git
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 f2042a29cc7613e8f797044948b0238916b2a234 Andrey Anurin <svxf@yandex-team.ru> 1534073683 +0300 clone: from https://github.com/sorin-ionescu/prezto.git
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 f2042a29cc7613e8f797044948b0238916b2a234 Andrey Anurin <svxf@yandex-team.ru> 1534073683 +0300 clone: from https://github.com/sorin-ionescu/prezto.git
|
@@ -1 +0,0 @@
|
||||
d7c796719e6352666f7a9c94da9ddaed10f3217d
|
@@ -1,14 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
worktree = ../../../../../modules/autosuggestions/external
|
||||
[remote "origin"]
|
||||
url = https://github.com/zsh-users/zsh-autosuggestions.git
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
@@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message taken by
|
||||
# applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit. The hook is
|
||||
# allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "applypatch-msg".
|
||||
|
||||
. git-sh-setup
|
||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||
:
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "commit-msg".
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||
# hook is more suited to it.
|
||||
#
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
@@ -1,114 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
|
||||
# An example hook script to integrate Watchman
|
||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||
# new and modified files.
|
||||
#
|
||||
# The hook is passed a version (currently 1) and a time in nanoseconds
|
||||
# formatted as a string and outputs to stdout all files that have been
|
||||
# modified since the given time. Paths must be relative to the root of
|
||||
# the working tree and separated by a single NUL.
|
||||
#
|
||||
# To enable this hook, rename this file to "query-watchman" and set
|
||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||
#
|
||||
my ($version, $time) = @ARGV;
|
||||
|
||||
# Check the hook interface version
|
||||
|
||||
if ($version == 1) {
|
||||
# convert nanoseconds to seconds
|
||||
$time = int $time / 1000000000;
|
||||
} else {
|
||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||
"Falling back to scanning...\n";
|
||||
}
|
||||
|
||||
my $git_work_tree;
|
||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||
$git_work_tree = Win32::GetCwd();
|
||||
$git_work_tree =~ tr/\\/\//;
|
||||
} else {
|
||||
require Cwd;
|
||||
$git_work_tree = Cwd::cwd();
|
||||
}
|
||||
|
||||
my $retry = 1;
|
||||
|
||||
launch_watchman();
|
||||
|
||||
sub launch_watchman {
|
||||
|
||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||
or die "open2() failed: $!\n" .
|
||||
"Falling back to scanning...\n";
|
||||
|
||||
# In the query expression below we're asking for names of files that
|
||||
# changed since $time but were not transient (ie created after
|
||||
# $time but no longer exist).
|
||||
#
|
||||
# To accomplish this, we're using the "since" generator to use the
|
||||
# recency index to select candidate nodes and "fields" to limit the
|
||||
# output to file names only. Then we're using the "expression" term to
|
||||
# further constrain the results.
|
||||
#
|
||||
# The category of transient files that we want to ignore will have a
|
||||
# creation clock (cclock) newer than $time_t value and will also not
|
||||
# currently exist.
|
||||
|
||||
my $query = <<" END";
|
||||
["query", "$git_work_tree", {
|
||||
"since": $time,
|
||||
"fields": ["name"],
|
||||
"expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]]
|
||||
}]
|
||||
END
|
||||
|
||||
print CHLD_IN $query;
|
||||
close CHLD_IN;
|
||||
my $response = do {local $/; <CHLD_OUT>};
|
||||
|
||||
die "Watchman: command returned no output.\n" .
|
||||
"Falling back to scanning...\n" if $response eq "";
|
||||
die "Watchman: command returned invalid output: $response\n" .
|
||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||
|
||||
my $json_pkg;
|
||||
eval {
|
||||
require JSON::XS;
|
||||
$json_pkg = "JSON::XS";
|
||||
1;
|
||||
} or do {
|
||||
require JSON::PP;
|
||||
$json_pkg = "JSON::PP";
|
||||
};
|
||||
|
||||
my $o = $json_pkg->new->utf8->decode($response);
|
||||
|
||||
if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||
print STDERR "Adding '$git_work_tree' to watchman's watch list.\n";
|
||||
$retry--;
|
||||
qx/watchman watch "$git_work_tree"/;
|
||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
|
||||
# Watchman will always return all files on the first query so
|
||||
# return the fast "everything is dirty" flag to git and do the
|
||||
# Watchman query just to get it over with now so we won't pay
|
||||
# the cost in git to look up each individual file.
|
||||
print "/\0";
|
||||
eval { launch_watchman() };
|
||||
exit 0;
|
||||
}
|
||||
|
||||
die "Watchman: $o->{error}.\n" .
|
||||
"Falling back to scanning...\n" if $o->{error};
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
local $, = "\0";
|
||||
print @{$o->{files}};
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed
|
||||
# by applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-applypatch".
|
||||
|
||||
. git-sh-setup
|
||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||
:
|
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git commit" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message if
|
||||
# it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
allownonascii=$(git config --bool hooks.allownonascii)
|
||||
|
||||
# Redirect output to stderr.
|
||||
exec 1>&2
|
||||
|
||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
|
||||
To be portable it is advisable to rename the file.
|
||||
|
||||
If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
exec git diff-index --check --cached $against --
|
@@ -1,53 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# An example hook script to verify what is about to be pushed. Called by "git
|
||||
# push" after it has checked the remote status, but before anything has been
|
||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
||||
#
|
||||
# This hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- Name of the remote to which the push is being done
|
||||
# $2 -- URL to which the push is being done
|
||||
#
|
||||
# If pushing without using a named remote those arguments will be equal.
|
||||
#
|
||||
# Information about the commits which are being pushed is supplied as lines to
|
||||
# the standard input in the form:
|
||||
#
|
||||
# <local ref> <local sha1> <remote ref> <remote sha1>
|
||||
#
|
||||
# This sample shows how to prevent push of commits where the log message starts
|
||||
# with "WIP" (work in progress).
|
||||
|
||||
remote="$1"
|
||||
url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
@@ -1,169 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
||||
#
|
||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
||||
# its job, and can prevent the command from running by exiting with
|
||||
# non-zero status.
|
||||
#
|
||||
# The hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- the upstream the series was forked from.
|
||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
||||
#
|
||||
# This sample shows how to prevent topic branches that are already
|
||||
# merged to 'next' branch from getting rebased, because allowing it
|
||||
# would result in rebasing already published history.
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
# on top of master. Is it OK to rebase it?
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
/^([0-9a-f]+) /;
|
||||
($1 => 1);
|
||||
} split(/\n/, $ARGV[1]);
|
||||
for my $elem (map {
|
||||
/^([0-9a-f]+) (.*)$/;
|
||||
[$1 => $2];
|
||||
} split(/\n/, $ARGV[2])) {
|
||||
if (!exists $not_in_next{$elem->[0]}) {
|
||||
if ($msg) {
|
||||
print STDERR $msg;
|
||||
undef $msg;
|
||||
}
|
||||
print STDERR " $elem->[1]\n";
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
This sample hook safeguards topic branches that have been
|
||||
published from being rewound.
|
||||
|
||||
The workflow assumed here is:
|
||||
|
||||
* Once a topic branch forks from "master", "master" is never
|
||||
merged into it again (either directly or indirectly).
|
||||
|
||||
* Once a topic branch is fully cooked and merged into "master",
|
||||
it is deleted. If you need to build on top of it to correct
|
||||
earlier mistakes, a new topic branch is created by forking at
|
||||
the tip of the "master". This is not strictly necessary, but
|
||||
it makes it easier to keep your history simple.
|
||||
|
||||
* Whenever you need to test or publish your changes to topic
|
||||
branches, merge them into "next" branch.
|
||||
|
||||
The script, being an example, hardcodes the publish branch name
|
||||
to be "next", but it is trivial to make it configurable via
|
||||
$GIT_DIR/config mechanism.
|
||||
|
||||
With this workflow, you would want to know:
|
||||
|
||||
(1) ... if a topic branch has ever been merged to "next". Young
|
||||
topic branches can have stupid mistakes you would rather
|
||||
clean up before publishing, and things that have not been
|
||||
merged into other branches can be easily rebased without
|
||||
affecting other people. But once it is published, you would
|
||||
not want to rewind it.
|
||||
|
||||
(2) ... if a topic branch has been fully merged to "master".
|
||||
Then you can delete it. More importantly, you should not
|
||||
build on top of it -- other people may already want to
|
||||
change things related to the topic as patches against your
|
||||
"master", so if you need further changes, it is better to
|
||||
fork the topic (perhaps with the same name) afresh from the
|
||||
tip of "master".
|
||||
|
||||
Let's look at this example:
|
||||
|
||||
o---o---o---o---o---o---o---o---o---o "next"
|
||||
/ / / /
|
||||
/ a---a---b A / /
|
||||
/ / / /
|
||||
/ / c---c---c---c B /
|
||||
/ / / \ /
|
||||
/ / / b---b C \ /
|
||||
/ / / / \ /
|
||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
||||
|
||||
|
||||
A, B and C are topic branches.
|
||||
|
||||
* A has one fix since it was merged up to "next".
|
||||
|
||||
* B has finished. It has been fully merged up to "master" and "next",
|
||||
and is ready to be deleted.
|
||||
|
||||
* C has not merged to "next" at all.
|
||||
|
||||
We would want to allow C to be rebased, refuse A, and encourage
|
||||
B to be deleted.
|
||||
|
||||
To compute (1):
|
||||
|
||||
git rev-list ^master ^topic next
|
||||
git rev-list ^master next
|
||||
|
||||
if these match, topic has not merged in next at all.
|
||||
|
||||
To compute (2):
|
||||
|
||||
git rev-list master..topic
|
||||
|
||||
if this is empty, it is fully merged to "master".
|
||||
|
||||
DOC_END
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to make use of push options.
|
||||
# The example simply echoes all push options that start with 'echoback='
|
||||
# and rejects all pushes when the "reject" push option is used.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
@@ -1,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare the commit log message.
|
||||
# Called by "git commit" with the name of the file that has the
|
||||
# commit message, followed by the description of the commit
|
||||
# message's source. The hook's purpose is to edit the commit
|
||||
# message file. If the hook fails with a non-zero status,
|
||||
# the commit is aborted.
|
||||
#
|
||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
||||
|
||||
# This hook includes three examples. The first one removes the
|
||||
# "# Please enter the commit message..." help message.
|
||||
#
|
||||
# The second includes the output of "git diff --name-status -r"
|
||||
# into the message, just before the "git status" output. It is
|
||||
# commented because it doesn't cope with --amend or with squashed
|
||||
# commits.
|
||||
#
|
||||
# The third example adds a Signed-off-by line to the message, that can
|
||||
# still be edited. This is rarely a good idea.
|
||||
|
||||
COMMIT_MSG_FILE=$1
|
||||
COMMIT_SOURCE=$2
|
||||
SHA1=$3
|
||||
|
||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
||||
|
||||
# case "$COMMIT_SOURCE,$SHA1" in
|
||||
# ,|template,)
|
||||
# /usr/bin/perl -i.bak -pe '
|
||||
# print "\n" . `git diff --cached --name-status -r`
|
||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
||||
# *) ;;
|
||||
# esac
|
||||
|
||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
||||
# if test -z "$COMMIT_SOURCE"
|
||||
# then
|
||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
||||
# fi
|
@@ -1,128 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to block unannotated tags from entering.
|
||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
||||
#
|
||||
# To enable this hook, rename this file to "update".
|
||||
#
|
||||
# Config
|
||||
# ------
|
||||
# hooks.allowunannotated
|
||||
# This boolean sets whether unannotated tags will be allowed into the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowdeletetag
|
||||
# This boolean sets whether deleting tags will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowmodifytag
|
||||
# This boolean sets whether a tag may be modified after creation. By default
|
||||
# it won't be.
|
||||
# hooks.allowdeletebranch
|
||||
# This boolean sets whether deleting branches will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.denycreatebranch
|
||||
# This boolean sets whether remotely creating branches will be denied
|
||||
# in the repository. By default this is allowed.
|
||||
#
|
||||
|
||||
# --- Command line
|
||||
refname="$1"
|
||||
oldrev="$2"
|
||||
newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
allowunannotated=$(git config --bool hooks.allowunannotated)
|
||||
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
|
||||
denycreatebranch=$(git config --bool hooks.denycreatebranch)
|
||||
allowdeletetag=$(git config --bool hooks.allowdeletetag)
|
||||
allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
|
||||
# check for no description
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
exit 0
|
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
# git ls-files --others --exclude-from=.git/info/exclude
|
||||
# Lines that start with '#' are comments.
|
||||
# For a project mostly in C, the following would be a good set of
|
||||
# exclude patterns (uncomment them if you want to use them):
|
||||
# *.[oa]
|
||||
# *~
|
@@ -1,2 +0,0 @@
|
||||
0000000000000000000000000000000000000000 ebaf409002be498a681267a75f5efcaf45cd0ccc Andrey Anurin <svxf@yandex-team.ru> 1534073685 +0300 clone: from https://github.com/zsh-users/zsh-autosuggestions.git
|
||||
ebaf409002be498a681267a75f5efcaf45cd0ccc d7c796719e6352666f7a9c94da9ddaed10f3217d Andrey Anurin <svxf@yandex-team.ru> 1534073716 +0300 checkout: moving from master to d7c796719e6352666f7a9c94da9ddaed10f3217d
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 ebaf409002be498a681267a75f5efcaf45cd0ccc Andrey Anurin <svxf@yandex-team.ru> 1534073685 +0300 clone: from https://github.com/zsh-users/zsh-autosuggestions.git
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 ebaf409002be498a681267a75f5efcaf45cd0ccc Andrey Anurin <svxf@yandex-team.ru> 1534073685 +0300 clone: from https://github.com/zsh-users/zsh-autosuggestions.git
|
Binary file not shown.
Binary file not shown.
@@ -1,37 +0,0 @@
|
||||
# pack-refs with: peeled fully-peeled sorted
|
||||
fa5d9c0ff5fb202545e12c98dae086d91d70ba50 refs/remotes/origin/develop
|
||||
1ec43c7291db3327391360e466907329b36c6770 refs/remotes/origin/features/completion-suggestions
|
||||
9fb96753069b919deaaacb6f659be2339dfeb4d2 refs/remotes/origin/fixes/slow_bracketed_paste_magic
|
||||
df0f27b3a1404ba7e4210d6038c48194faf992e5 refs/remotes/origin/fixes/vi-delete
|
||||
ebaf409002be498a681267a75f5efcaf45cd0ccc refs/remotes/origin/master
|
||||
20c0ea841bafa78d8fb75c767e780248bfdf11a4 refs/remotes/origin/no-server
|
||||
5f13490bae58bc42045b2a19fc3e446df75417a5 refs/tags/0.0.1
|
||||
7dc9e0f92631d03d289bdcf67530c84e72b18aa3 refs/tags/pre-v0.1.0
|
||||
6a4b2b386534461d479155c7f9503b1063800398 refs/tags/v0.1.0
|
||||
f154d25fb3b734235bff7d508d885e7db851c4ca refs/tags/v0.1.1
|
||||
0ae590729428a0b6aea682a04d74404a124cb909 refs/tags/v0.2.0
|
||||
31452887d20069d882e31eafaf46890e6500b4af refs/tags/v0.2.1
|
||||
2b449a62f8b6fc69e44db3eaf46c5c36c1853bfa refs/tags/v0.2.10
|
||||
ba029e83d0aa2d859d7ac46299462fa5b5a43a68 refs/tags/v0.2.11
|
||||
aa859a282dddf97cadce45255fad95930fc3f503 refs/tags/v0.2.12
|
||||
2a5791710a9038ad21b9f528e6923f33fe3b8edd refs/tags/v0.2.13
|
||||
9d100f4f321000b80b73638a6406e8486c35ce16 refs/tags/v0.2.14
|
||||
c761dc81509b137748190d254e8beb6845dedf21 refs/tags/v0.2.15
|
||||
0a42f872b84ecdd17b2d4d4e4422f3af8bf8959b refs/tags/v0.2.16
|
||||
f0a745576ff69fa608421ee7214d4cd77b43e62f refs/tags/v0.2.17
|
||||
011f5420fcc61d1c8fdd7510c4b560b0ca7f6412 refs/tags/v0.2.2
|
||||
266437c98a7e3d9b24fa82e6a35d8dc54946f1d2 refs/tags/v0.2.3
|
||||
cd71081303287498f940e6158cfce13583d4293f refs/tags/v0.2.4
|
||||
76f415bf4360705a819c92787b188ddd813d374c refs/tags/v0.2.5
|
||||
3ce1adb55dfb558c7f9b60056356fdb7d3567403 refs/tags/v0.2.6
|
||||
45ab49d1f2024f9422ab9eb41178e4d9edf2e91c refs/tags/v0.2.7
|
||||
dd9a8789a758966eed6943adad5338b2213df4a2 refs/tags/v0.2.8
|
||||
0faa2b6584928a17fef8904e8439d1268729f37a refs/tags/v0.2.9
|
||||
1ed9155f89956310eb0cfce59f95e6f3e2ecbcd2 refs/tags/v0.3.0
|
||||
87facd9b85630f288433aa0a20a963cffc612ee5 refs/tags/v0.3.1
|
||||
cce68de46d37697f561a23c51db629ee2bbd18db refs/tags/v0.3.2
|
||||
9cfaf5d3424ceb5fedd2c7e3253f823faae74383 refs/tags/v0.3.3
|
||||
2cb6eb6e29852e64a146b0284275ecdc0661b082 refs/tags/v0.4.0
|
||||
9f9237ab8a530eeff389161202bbc7283ad6af3e refs/tags/v0.4.1
|
||||
15931f04ffac91a2f9a1a044b6b3ee4050751064 refs/tags/v0.4.2
|
||||
d7c796719e6352666f7a9c94da9ddaed10f3217d refs/tags/v0.4.3
|
@@ -1 +0,0 @@
|
||||
ebaf409002be498a681267a75f5efcaf45cd0ccc
|
@@ -1 +0,0 @@
|
||||
ref: refs/remotes/origin/master
|
@@ -1 +0,0 @@
|
||||
7ec52769d3a0dd505d33d857511866d2b90d0eec
|
@@ -1,14 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
worktree = ../../../../../modules/completion/external
|
||||
[remote "origin"]
|
||||
url = https://github.com/zsh-users/zsh-completions.git
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
@@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message taken by
|
||||
# applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit. The hook is
|
||||
# allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "applypatch-msg".
|
||||
|
||||
. git-sh-setup
|
||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||
:
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "commit-msg".
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||
# hook is more suited to it.
|
||||
#
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
@@ -1,114 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
|
||||
# An example hook script to integrate Watchman
|
||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||
# new and modified files.
|
||||
#
|
||||
# The hook is passed a version (currently 1) and a time in nanoseconds
|
||||
# formatted as a string and outputs to stdout all files that have been
|
||||
# modified since the given time. Paths must be relative to the root of
|
||||
# the working tree and separated by a single NUL.
|
||||
#
|
||||
# To enable this hook, rename this file to "query-watchman" and set
|
||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||
#
|
||||
my ($version, $time) = @ARGV;
|
||||
|
||||
# Check the hook interface version
|
||||
|
||||
if ($version == 1) {
|
||||
# convert nanoseconds to seconds
|
||||
$time = int $time / 1000000000;
|
||||
} else {
|
||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||
"Falling back to scanning...\n";
|
||||
}
|
||||
|
||||
my $git_work_tree;
|
||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||
$git_work_tree = Win32::GetCwd();
|
||||
$git_work_tree =~ tr/\\/\//;
|
||||
} else {
|
||||
require Cwd;
|
||||
$git_work_tree = Cwd::cwd();
|
||||
}
|
||||
|
||||
my $retry = 1;
|
||||
|
||||
launch_watchman();
|
||||
|
||||
sub launch_watchman {
|
||||
|
||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||
or die "open2() failed: $!\n" .
|
||||
"Falling back to scanning...\n";
|
||||
|
||||
# In the query expression below we're asking for names of files that
|
||||
# changed since $time but were not transient (ie created after
|
||||
# $time but no longer exist).
|
||||
#
|
||||
# To accomplish this, we're using the "since" generator to use the
|
||||
# recency index to select candidate nodes and "fields" to limit the
|
||||
# output to file names only. Then we're using the "expression" term to
|
||||
# further constrain the results.
|
||||
#
|
||||
# The category of transient files that we want to ignore will have a
|
||||
# creation clock (cclock) newer than $time_t value and will also not
|
||||
# currently exist.
|
||||
|
||||
my $query = <<" END";
|
||||
["query", "$git_work_tree", {
|
||||
"since": $time,
|
||||
"fields": ["name"],
|
||||
"expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]]
|
||||
}]
|
||||
END
|
||||
|
||||
print CHLD_IN $query;
|
||||
close CHLD_IN;
|
||||
my $response = do {local $/; <CHLD_OUT>};
|
||||
|
||||
die "Watchman: command returned no output.\n" .
|
||||
"Falling back to scanning...\n" if $response eq "";
|
||||
die "Watchman: command returned invalid output: $response\n" .
|
||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||
|
||||
my $json_pkg;
|
||||
eval {
|
||||
require JSON::XS;
|
||||
$json_pkg = "JSON::XS";
|
||||
1;
|
||||
} or do {
|
||||
require JSON::PP;
|
||||
$json_pkg = "JSON::PP";
|
||||
};
|
||||
|
||||
my $o = $json_pkg->new->utf8->decode($response);
|
||||
|
||||
if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||
print STDERR "Adding '$git_work_tree' to watchman's watch list.\n";
|
||||
$retry--;
|
||||
qx/watchman watch "$git_work_tree"/;
|
||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
|
||||
# Watchman will always return all files on the first query so
|
||||
# return the fast "everything is dirty" flag to git and do the
|
||||
# Watchman query just to get it over with now so we won't pay
|
||||
# the cost in git to look up each individual file.
|
||||
print "/\0";
|
||||
eval { launch_watchman() };
|
||||
exit 0;
|
||||
}
|
||||
|
||||
die "Watchman: $o->{error}.\n" .
|
||||
"Falling back to scanning...\n" if $o->{error};
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
local $, = "\0";
|
||||
print @{$o->{files}};
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed
|
||||
# by applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-applypatch".
|
||||
|
||||
. git-sh-setup
|
||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||
:
|
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git commit" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message if
|
||||
# it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
allownonascii=$(git config --bool hooks.allownonascii)
|
||||
|
||||
# Redirect output to stderr.
|
||||
exec 1>&2
|
||||
|
||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
|
||||
To be portable it is advisable to rename the file.
|
||||
|
||||
If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
exec git diff-index --check --cached $against --
|
@@ -1,53 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# An example hook script to verify what is about to be pushed. Called by "git
|
||||
# push" after it has checked the remote status, but before anything has been
|
||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
||||
#
|
||||
# This hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- Name of the remote to which the push is being done
|
||||
# $2 -- URL to which the push is being done
|
||||
#
|
||||
# If pushing without using a named remote those arguments will be equal.
|
||||
#
|
||||
# Information about the commits which are being pushed is supplied as lines to
|
||||
# the standard input in the form:
|
||||
#
|
||||
# <local ref> <local sha1> <remote ref> <remote sha1>
|
||||
#
|
||||
# This sample shows how to prevent push of commits where the log message starts
|
||||
# with "WIP" (work in progress).
|
||||
|
||||
remote="$1"
|
||||
url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
@@ -1,169 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
||||
#
|
||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
||||
# its job, and can prevent the command from running by exiting with
|
||||
# non-zero status.
|
||||
#
|
||||
# The hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- the upstream the series was forked from.
|
||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
||||
#
|
||||
# This sample shows how to prevent topic branches that are already
|
||||
# merged to 'next' branch from getting rebased, because allowing it
|
||||
# would result in rebasing already published history.
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
# on top of master. Is it OK to rebase it?
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
/^([0-9a-f]+) /;
|
||||
($1 => 1);
|
||||
} split(/\n/, $ARGV[1]);
|
||||
for my $elem (map {
|
||||
/^([0-9a-f]+) (.*)$/;
|
||||
[$1 => $2];
|
||||
} split(/\n/, $ARGV[2])) {
|
||||
if (!exists $not_in_next{$elem->[0]}) {
|
||||
if ($msg) {
|
||||
print STDERR $msg;
|
||||
undef $msg;
|
||||
}
|
||||
print STDERR " $elem->[1]\n";
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
This sample hook safeguards topic branches that have been
|
||||
published from being rewound.
|
||||
|
||||
The workflow assumed here is:
|
||||
|
||||
* Once a topic branch forks from "master", "master" is never
|
||||
merged into it again (either directly or indirectly).
|
||||
|
||||
* Once a topic branch is fully cooked and merged into "master",
|
||||
it is deleted. If you need to build on top of it to correct
|
||||
earlier mistakes, a new topic branch is created by forking at
|
||||
the tip of the "master". This is not strictly necessary, but
|
||||
it makes it easier to keep your history simple.
|
||||
|
||||
* Whenever you need to test or publish your changes to topic
|
||||
branches, merge them into "next" branch.
|
||||
|
||||
The script, being an example, hardcodes the publish branch name
|
||||
to be "next", but it is trivial to make it configurable via
|
||||
$GIT_DIR/config mechanism.
|
||||
|
||||
With this workflow, you would want to know:
|
||||
|
||||
(1) ... if a topic branch has ever been merged to "next". Young
|
||||
topic branches can have stupid mistakes you would rather
|
||||
clean up before publishing, and things that have not been
|
||||
merged into other branches can be easily rebased without
|
||||
affecting other people. But once it is published, you would
|
||||
not want to rewind it.
|
||||
|
||||
(2) ... if a topic branch has been fully merged to "master".
|
||||
Then you can delete it. More importantly, you should not
|
||||
build on top of it -- other people may already want to
|
||||
change things related to the topic as patches against your
|
||||
"master", so if you need further changes, it is better to
|
||||
fork the topic (perhaps with the same name) afresh from the
|
||||
tip of "master".
|
||||
|
||||
Let's look at this example:
|
||||
|
||||
o---o---o---o---o---o---o---o---o---o "next"
|
||||
/ / / /
|
||||
/ a---a---b A / /
|
||||
/ / / /
|
||||
/ / c---c---c---c B /
|
||||
/ / / \ /
|
||||
/ / / b---b C \ /
|
||||
/ / / / \ /
|
||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
||||
|
||||
|
||||
A, B and C are topic branches.
|
||||
|
||||
* A has one fix since it was merged up to "next".
|
||||
|
||||
* B has finished. It has been fully merged up to "master" and "next",
|
||||
and is ready to be deleted.
|
||||
|
||||
* C has not merged to "next" at all.
|
||||
|
||||
We would want to allow C to be rebased, refuse A, and encourage
|
||||
B to be deleted.
|
||||
|
||||
To compute (1):
|
||||
|
||||
git rev-list ^master ^topic next
|
||||
git rev-list ^master next
|
||||
|
||||
if these match, topic has not merged in next at all.
|
||||
|
||||
To compute (2):
|
||||
|
||||
git rev-list master..topic
|
||||
|
||||
if this is empty, it is fully merged to "master".
|
||||
|
||||
DOC_END
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to make use of push options.
|
||||
# The example simply echoes all push options that start with 'echoback='
|
||||
# and rejects all pushes when the "reject" push option is used.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
@@ -1,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare the commit log message.
|
||||
# Called by "git commit" with the name of the file that has the
|
||||
# commit message, followed by the description of the commit
|
||||
# message's source. The hook's purpose is to edit the commit
|
||||
# message file. If the hook fails with a non-zero status,
|
||||
# the commit is aborted.
|
||||
#
|
||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
||||
|
||||
# This hook includes three examples. The first one removes the
|
||||
# "# Please enter the commit message..." help message.
|
||||
#
|
||||
# The second includes the output of "git diff --name-status -r"
|
||||
# into the message, just before the "git status" output. It is
|
||||
# commented because it doesn't cope with --amend or with squashed
|
||||
# commits.
|
||||
#
|
||||
# The third example adds a Signed-off-by line to the message, that can
|
||||
# still be edited. This is rarely a good idea.
|
||||
|
||||
COMMIT_MSG_FILE=$1
|
||||
COMMIT_SOURCE=$2
|
||||
SHA1=$3
|
||||
|
||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
||||
|
||||
# case "$COMMIT_SOURCE,$SHA1" in
|
||||
# ,|template,)
|
||||
# /usr/bin/perl -i.bak -pe '
|
||||
# print "\n" . `git diff --cached --name-status -r`
|
||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
||||
# *) ;;
|
||||
# esac
|
||||
|
||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
||||
# if test -z "$COMMIT_SOURCE"
|
||||
# then
|
||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
||||
# fi
|
@@ -1,128 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to block unannotated tags from entering.
|
||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
||||
#
|
||||
# To enable this hook, rename this file to "update".
|
||||
#
|
||||
# Config
|
||||
# ------
|
||||
# hooks.allowunannotated
|
||||
# This boolean sets whether unannotated tags will be allowed into the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowdeletetag
|
||||
# This boolean sets whether deleting tags will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowmodifytag
|
||||
# This boolean sets whether a tag may be modified after creation. By default
|
||||
# it won't be.
|
||||
# hooks.allowdeletebranch
|
||||
# This boolean sets whether deleting branches will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.denycreatebranch
|
||||
# This boolean sets whether remotely creating branches will be denied
|
||||
# in the repository. By default this is allowed.
|
||||
#
|
||||
|
||||
# --- Command line
|
||||
refname="$1"
|
||||
oldrev="$2"
|
||||
newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
allowunannotated=$(git config --bool hooks.allowunannotated)
|
||||
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
|
||||
denycreatebranch=$(git config --bool hooks.denycreatebranch)
|
||||
allowdeletetag=$(git config --bool hooks.allowdeletetag)
|
||||
allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
|
||||
# check for no description
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
exit 0
|
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
# git ls-files --others --exclude-from=.git/info/exclude
|
||||
# Lines that start with '#' are comments.
|
||||
# For a project mostly in C, the following would be a good set of
|
||||
# exclude patterns (uncomment them if you want to use them):
|
||||
# *.[oa]
|
||||
# *~
|
@@ -1,2 +0,0 @@
|
||||
0000000000000000000000000000000000000000 df7e44c685c9a60d83a3760aa373d3864779aeeb Andrey Anurin <svxf@yandex-team.ru> 1534073689 +0300 clone: from https://github.com/zsh-users/zsh-completions.git
|
||||
df7e44c685c9a60d83a3760aa373d3864779aeeb 7ec52769d3a0dd505d33d857511866d2b90d0eec Andrey Anurin <svxf@yandex-team.ru> 1534073716 +0300 checkout: moving from master to 7ec52769d3a0dd505d33d857511866d2b90d0eec
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 df7e44c685c9a60d83a3760aa373d3864779aeeb Andrey Anurin <svxf@yandex-team.ru> 1534073689 +0300 clone: from https://github.com/zsh-users/zsh-completions.git
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 df7e44c685c9a60d83a3760aa373d3864779aeeb Andrey Anurin <svxf@yandex-team.ru> 1534073689 +0300 clone: from https://github.com/zsh-users/zsh-completions.git
|
Binary file not shown.
Binary file not shown.
@@ -1,34 +0,0 @@
|
||||
# pack-refs with: peeled fully-peeled sorted
|
||||
df7e44c685c9a60d83a3760aa373d3864779aeeb refs/remotes/origin/master
|
||||
1f8a0c9d92efb2da0c476e395d5ed5050f06399b refs/tags/0.1.0
|
||||
662229f6f0ce391ef7c1a41c398e28a31e847182 refs/tags/0.10.0
|
||||
c75296de9cafeb360066065acbf2935964d70431 refs/tags/0.11.0
|
||||
5e3151d03a91954102e8a4d661d65f9604aabbfa refs/tags/0.12.0
|
||||
0e525e909316fb8e0f2a7bbb05d7bfc6fddbcfd1 refs/tags/0.13.0
|
||||
173ae7249a6ab4a5b70bebb283f3f156eb79f908 refs/tags/0.14.0
|
||||
6953a4f892df1095e48d43751ccaf9e3ece02190 refs/tags/0.15.0
|
||||
3a2bb8781d32d05d1bf05deeeb476beb651e8272 refs/tags/0.16.0
|
||||
2082c7573fc1cd393ea0b2948aff6f0bdf3798cd refs/tags/0.17.0
|
||||
17743e1e174830693026d3adbba265922440f48c refs/tags/0.18.0
|
||||
4195d4f6ee8f68f231766fa33285d8cfce9c1164 refs/tags/0.19.0
|
||||
649c6cea337b71bd85f7b7a223bc21f810239775 refs/tags/0.2.0
|
||||
9e443566686ee574b9d66e445d73fd74c3e88c5d refs/tags/0.2.1
|
||||
0713143ec8ffc55da4c9f81e475cd5e21f2771f4 refs/tags/0.20.0
|
||||
2d1f793d9473d1b572fe43136422a3dcc9851765 refs/tags/0.21.0
|
||||
7a24a5e561a086c430ed4774cc194b3c91b3b31c refs/tags/0.22.0
|
||||
72af5d08f1c07507d74103af039e98a2791fccb5 refs/tags/0.23.0
|
||||
fa1c72058439015e74b914325f43cfca94866f1f refs/tags/0.24.0
|
||||
89dcaeb5624eeceabf41cfc00e79cce35cfd722b refs/tags/0.25.0
|
||||
2a30b05a5cf724a2d1c4c140c302dbf93f6aa6f6 refs/tags/0.26.0
|
||||
7ec52769d3a0dd505d33d857511866d2b90d0eec refs/tags/0.27.0
|
||||
acf27d00448ef62ae6901b59afc5718c829c337e refs/tags/0.3.0
|
||||
^62436acb8acbc3db4993142e84b4e851ab744213
|
||||
b5d080b9eefa456c7cd1ab1d61f4350fe1b23cd0 refs/tags/0.4.0
|
||||
f6108b8c4250565611a08b164cfdc85e6c76ee88 refs/tags/0.5.0
|
||||
3497b4841cb961e7db04e2a3bfe69b2dbec66427 refs/tags/0.5.1
|
||||
d54358a43ccec2323d012192aa213a189d877156 refs/tags/0.5.2
|
||||
f09394f71c27c76788785d851ab093ded1593705 refs/tags/0.6.0
|
||||
b0e171924ee20e38e2ecc2dc0f3ec7edf700f2c9 refs/tags/0.6.1
|
||||
9cca892132219e89299750d501d4693a98f5f5ee refs/tags/0.7.0
|
||||
13715a7e50f67458b2eb2d9b4125810c3102ad94 refs/tags/0.8.0
|
||||
53dd086f56f4d947be3a4b97c57f6c1f8a61900d refs/tags/0.9.0
|
@@ -1 +0,0 @@
|
||||
df7e44c685c9a60d83a3760aa373d3864779aeeb
|
@@ -1 +0,0 @@
|
||||
ref: refs/remotes/origin/master
|
@@ -1 +0,0 @@
|
||||
90b531a5daaa545c74c7d98974b54cbdb92659fc
|
@@ -1,14 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
worktree = ../../../../../modules/fasd/external
|
||||
[remote "origin"]
|
||||
url = https://github.com/clvv/fasd.git
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
@@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message taken by
|
||||
# applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit. The hook is
|
||||
# allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "applypatch-msg".
|
||||
|
||||
. git-sh-setup
|
||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||
:
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "commit-msg".
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||
# hook is more suited to it.
|
||||
#
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
@@ -1,114 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
|
||||
# An example hook script to integrate Watchman
|
||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||
# new and modified files.
|
||||
#
|
||||
# The hook is passed a version (currently 1) and a time in nanoseconds
|
||||
# formatted as a string and outputs to stdout all files that have been
|
||||
# modified since the given time. Paths must be relative to the root of
|
||||
# the working tree and separated by a single NUL.
|
||||
#
|
||||
# To enable this hook, rename this file to "query-watchman" and set
|
||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||
#
|
||||
my ($version, $time) = @ARGV;
|
||||
|
||||
# Check the hook interface version
|
||||
|
||||
if ($version == 1) {
|
||||
# convert nanoseconds to seconds
|
||||
$time = int $time / 1000000000;
|
||||
} else {
|
||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||
"Falling back to scanning...\n";
|
||||
}
|
||||
|
||||
my $git_work_tree;
|
||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||
$git_work_tree = Win32::GetCwd();
|
||||
$git_work_tree =~ tr/\\/\//;
|
||||
} else {
|
||||
require Cwd;
|
||||
$git_work_tree = Cwd::cwd();
|
||||
}
|
||||
|
||||
my $retry = 1;
|
||||
|
||||
launch_watchman();
|
||||
|
||||
sub launch_watchman {
|
||||
|
||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||
or die "open2() failed: $!\n" .
|
||||
"Falling back to scanning...\n";
|
||||
|
||||
# In the query expression below we're asking for names of files that
|
||||
# changed since $time but were not transient (ie created after
|
||||
# $time but no longer exist).
|
||||
#
|
||||
# To accomplish this, we're using the "since" generator to use the
|
||||
# recency index to select candidate nodes and "fields" to limit the
|
||||
# output to file names only. Then we're using the "expression" term to
|
||||
# further constrain the results.
|
||||
#
|
||||
# The category of transient files that we want to ignore will have a
|
||||
# creation clock (cclock) newer than $time_t value and will also not
|
||||
# currently exist.
|
||||
|
||||
my $query = <<" END";
|
||||
["query", "$git_work_tree", {
|
||||
"since": $time,
|
||||
"fields": ["name"],
|
||||
"expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]]
|
||||
}]
|
||||
END
|
||||
|
||||
print CHLD_IN $query;
|
||||
close CHLD_IN;
|
||||
my $response = do {local $/; <CHLD_OUT>};
|
||||
|
||||
die "Watchman: command returned no output.\n" .
|
||||
"Falling back to scanning...\n" if $response eq "";
|
||||
die "Watchman: command returned invalid output: $response\n" .
|
||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||
|
||||
my $json_pkg;
|
||||
eval {
|
||||
require JSON::XS;
|
||||
$json_pkg = "JSON::XS";
|
||||
1;
|
||||
} or do {
|
||||
require JSON::PP;
|
||||
$json_pkg = "JSON::PP";
|
||||
};
|
||||
|
||||
my $o = $json_pkg->new->utf8->decode($response);
|
||||
|
||||
if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||
print STDERR "Adding '$git_work_tree' to watchman's watch list.\n";
|
||||
$retry--;
|
||||
qx/watchman watch "$git_work_tree"/;
|
||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
|
||||
# Watchman will always return all files on the first query so
|
||||
# return the fast "everything is dirty" flag to git and do the
|
||||
# Watchman query just to get it over with now so we won't pay
|
||||
# the cost in git to look up each individual file.
|
||||
print "/\0";
|
||||
eval { launch_watchman() };
|
||||
exit 0;
|
||||
}
|
||||
|
||||
die "Watchman: $o->{error}.\n" .
|
||||
"Falling back to scanning...\n" if $o->{error};
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
local $, = "\0";
|
||||
print @{$o->{files}};
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed
|
||||
# by applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-applypatch".
|
||||
|
||||
. git-sh-setup
|
||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||
:
|
@@ -1,49 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git commit" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message if
|
||||
# it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
# If you want to allow non-ASCII filenames set this variable to true.
|
||||
allownonascii=$(git config --bool hooks.allownonascii)
|
||||
|
||||
# Redirect output to stderr.
|
||||
exec 1>&2
|
||||
|
||||
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
cat <<\EOF
|
||||
Error: Attempt to add a non-ASCII file name.
|
||||
|
||||
This can cause problems if you want to work with people on other platforms.
|
||||
|
||||
To be portable it is advisable to rename the file.
|
||||
|
||||
If you know what you are doing you can disable this check using:
|
||||
|
||||
git config hooks.allownonascii true
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
exec git diff-index --check --cached $against --
|
@@ -1,53 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# An example hook script to verify what is about to be pushed. Called by "git
|
||||
# push" after it has checked the remote status, but before anything has been
|
||||
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
||||
#
|
||||
# This hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- Name of the remote to which the push is being done
|
||||
# $2 -- URL to which the push is being done
|
||||
#
|
||||
# If pushing without using a named remote those arguments will be equal.
|
||||
#
|
||||
# Information about the commits which are being pushed is supplied as lines to
|
||||
# the standard input in the form:
|
||||
#
|
||||
# <local ref> <local sha1> <remote ref> <remote sha1>
|
||||
#
|
||||
# This sample shows how to prevent push of commits where the log message starts
|
||||
# with "WIP" (work in progress).
|
||||
|
||||
remote="$1"
|
||||
url="$2"
|
||||
|
||||
z40=0000000000000000000000000000000000000000
|
||||
|
||||
while read local_ref local_sha remote_ref remote_sha
|
||||
do
|
||||
if [ "$local_sha" = $z40 ]
|
||||
then
|
||||
# Handle delete
|
||||
:
|
||||
else
|
||||
if [ "$remote_sha" = $z40 ]
|
||||
then
|
||||
# New branch, examine all commits
|
||||
range="$local_sha"
|
||||
else
|
||||
# Update to existing branch, examine new commits
|
||||
range="$remote_sha..$local_sha"
|
||||
fi
|
||||
|
||||
# Check for WIP commit
|
||||
commit=`git rev-list -n 1 --grep '^WIP' "$range"`
|
||||
if [ -n "$commit" ]
|
||||
then
|
||||
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
@@ -1,169 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006, 2008 Junio C Hamano
|
||||
#
|
||||
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
||||
# its job, and can prevent the command from running by exiting with
|
||||
# non-zero status.
|
||||
#
|
||||
# The hook is called with the following parameters:
|
||||
#
|
||||
# $1 -- the upstream the series was forked from.
|
||||
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
||||
#
|
||||
# This sample shows how to prevent topic branches that are already
|
||||
# merged to 'next' branch from getting rebased, because allowing it
|
||||
# would result in rebasing already published history.
|
||||
|
||||
publish=next
|
||||
basebranch="$1"
|
||||
if test "$#" = 2
|
||||
then
|
||||
topic="refs/heads/$2"
|
||||
else
|
||||
topic=`git symbolic-ref HEAD` ||
|
||||
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||
fi
|
||||
|
||||
case "$topic" in
|
||||
refs/heads/??/*)
|
||||
;;
|
||||
*)
|
||||
exit 0 ;# we do not interrupt others.
|
||||
;;
|
||||
esac
|
||||
|
||||
# Now we are dealing with a topic branch being rebased
|
||||
# on top of master. Is it OK to rebase it?
|
||||
|
||||
# Does the topic really exist?
|
||||
git show-ref -q "$topic" || {
|
||||
echo >&2 "No such branch $topic"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Is topic fully merged to master?
|
||||
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||
if test -z "$not_in_master"
|
||||
then
|
||||
echo >&2 "$topic is fully merged to master; better remove it."
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
fi
|
||||
|
||||
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||
if test "$only_next_1" = "$only_next_2"
|
||||
then
|
||||
not_in_topic=`git rev-list "^$topic" master`
|
||||
if test -z "$not_in_topic"
|
||||
then
|
||||
echo >&2 "$topic is already up to date with master"
|
||||
exit 1 ;# we could allow it, but there is no point.
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||
/usr/bin/perl -e '
|
||||
my $topic = $ARGV[0];
|
||||
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||
my (%not_in_next) = map {
|
||||
/^([0-9a-f]+) /;
|
||||
($1 => 1);
|
||||
} split(/\n/, $ARGV[1]);
|
||||
for my $elem (map {
|
||||
/^([0-9a-f]+) (.*)$/;
|
||||
[$1 => $2];
|
||||
} split(/\n/, $ARGV[2])) {
|
||||
if (!exists $not_in_next{$elem->[0]}) {
|
||||
if ($msg) {
|
||||
print STDERR $msg;
|
||||
undef $msg;
|
||||
}
|
||||
print STDERR " $elem->[1]\n";
|
||||
}
|
||||
}
|
||||
' "$topic" "$not_in_next" "$not_in_master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
<<\DOC_END
|
||||
|
||||
This sample hook safeguards topic branches that have been
|
||||
published from being rewound.
|
||||
|
||||
The workflow assumed here is:
|
||||
|
||||
* Once a topic branch forks from "master", "master" is never
|
||||
merged into it again (either directly or indirectly).
|
||||
|
||||
* Once a topic branch is fully cooked and merged into "master",
|
||||
it is deleted. If you need to build on top of it to correct
|
||||
earlier mistakes, a new topic branch is created by forking at
|
||||
the tip of the "master". This is not strictly necessary, but
|
||||
it makes it easier to keep your history simple.
|
||||
|
||||
* Whenever you need to test or publish your changes to topic
|
||||
branches, merge them into "next" branch.
|
||||
|
||||
The script, being an example, hardcodes the publish branch name
|
||||
to be "next", but it is trivial to make it configurable via
|
||||
$GIT_DIR/config mechanism.
|
||||
|
||||
With this workflow, you would want to know:
|
||||
|
||||
(1) ... if a topic branch has ever been merged to "next". Young
|
||||
topic branches can have stupid mistakes you would rather
|
||||
clean up before publishing, and things that have not been
|
||||
merged into other branches can be easily rebased without
|
||||
affecting other people. But once it is published, you would
|
||||
not want to rewind it.
|
||||
|
||||
(2) ... if a topic branch has been fully merged to "master".
|
||||
Then you can delete it. More importantly, you should not
|
||||
build on top of it -- other people may already want to
|
||||
change things related to the topic as patches against your
|
||||
"master", so if you need further changes, it is better to
|
||||
fork the topic (perhaps with the same name) afresh from the
|
||||
tip of "master".
|
||||
|
||||
Let's look at this example:
|
||||
|
||||
o---o---o---o---o---o---o---o---o---o "next"
|
||||
/ / / /
|
||||
/ a---a---b A / /
|
||||
/ / / /
|
||||
/ / c---c---c---c B /
|
||||
/ / / \ /
|
||||
/ / / b---b C \ /
|
||||
/ / / / \ /
|
||||
---o---o---o---o---o---o---o---o---o---o---o "master"
|
||||
|
||||
|
||||
A, B and C are topic branches.
|
||||
|
||||
* A has one fix since it was merged up to "next".
|
||||
|
||||
* B has finished. It has been fully merged up to "master" and "next",
|
||||
and is ready to be deleted.
|
||||
|
||||
* C has not merged to "next" at all.
|
||||
|
||||
We would want to allow C to be rebased, refuse A, and encourage
|
||||
B to be deleted.
|
||||
|
||||
To compute (1):
|
||||
|
||||
git rev-list ^master ^topic next
|
||||
git rev-list ^master next
|
||||
|
||||
if these match, topic has not merged in next at all.
|
||||
|
||||
To compute (2):
|
||||
|
||||
git rev-list master..topic
|
||||
|
||||
if this is empty, it is fully merged to "master".
|
||||
|
||||
DOC_END
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to make use of push options.
|
||||
# The example simply echoes all push options that start with 'echoback='
|
||||
# and rejects all pushes when the "reject" push option is used.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-receive".
|
||||
|
||||
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||
then
|
||||
i=0
|
||||
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||
do
|
||||
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||
case "$value" in
|
||||
echoback=*)
|
||||
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||
;;
|
||||
reject)
|
||||
exit 1
|
||||
esac
|
||||
i=$((i + 1))
|
||||
done
|
||||
fi
|
@@ -1,42 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare the commit log message.
|
||||
# Called by "git commit" with the name of the file that has the
|
||||
# commit message, followed by the description of the commit
|
||||
# message's source. The hook's purpose is to edit the commit
|
||||
# message file. If the hook fails with a non-zero status,
|
||||
# the commit is aborted.
|
||||
#
|
||||
# To enable this hook, rename this file to "prepare-commit-msg".
|
||||
|
||||
# This hook includes three examples. The first one removes the
|
||||
# "# Please enter the commit message..." help message.
|
||||
#
|
||||
# The second includes the output of "git diff --name-status -r"
|
||||
# into the message, just before the "git status" output. It is
|
||||
# commented because it doesn't cope with --amend or with squashed
|
||||
# commits.
|
||||
#
|
||||
# The third example adds a Signed-off-by line to the message, that can
|
||||
# still be edited. This is rarely a good idea.
|
||||
|
||||
COMMIT_MSG_FILE=$1
|
||||
COMMIT_SOURCE=$2
|
||||
SHA1=$3
|
||||
|
||||
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
||||
|
||||
# case "$COMMIT_SOURCE,$SHA1" in
|
||||
# ,|template,)
|
||||
# /usr/bin/perl -i.bak -pe '
|
||||
# print "\n" . `git diff --cached --name-status -r`
|
||||
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
||||
# *) ;;
|
||||
# esac
|
||||
|
||||
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
||||
# if test -z "$COMMIT_SOURCE"
|
||||
# then
|
||||
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
||||
# fi
|
@@ -1,128 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to block unannotated tags from entering.
|
||||
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
||||
#
|
||||
# To enable this hook, rename this file to "update".
|
||||
#
|
||||
# Config
|
||||
# ------
|
||||
# hooks.allowunannotated
|
||||
# This boolean sets whether unannotated tags will be allowed into the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowdeletetag
|
||||
# This boolean sets whether deleting tags will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.allowmodifytag
|
||||
# This boolean sets whether a tag may be modified after creation. By default
|
||||
# it won't be.
|
||||
# hooks.allowdeletebranch
|
||||
# This boolean sets whether deleting branches will be allowed in the
|
||||
# repository. By default they won't be.
|
||||
# hooks.denycreatebranch
|
||||
# This boolean sets whether remotely creating branches will be denied
|
||||
# in the repository. By default this is allowed.
|
||||
#
|
||||
|
||||
# --- Command line
|
||||
refname="$1"
|
||||
oldrev="$2"
|
||||
newrev="$3"
|
||||
|
||||
# --- Safety check
|
||||
if [ -z "$GIT_DIR" ]; then
|
||||
echo "Don't run this script from the command line." >&2
|
||||
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Config
|
||||
allowunannotated=$(git config --bool hooks.allowunannotated)
|
||||
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
|
||||
denycreatebranch=$(git config --bool hooks.denycreatebranch)
|
||||
allowdeletetag=$(git config --bool hooks.allowdeletetag)
|
||||
allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
||||
|
||||
# check for no description
|
||||
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||
case "$projectdesc" in
|
||||
"Unnamed repository"* | "")
|
||||
echo "*** Project description file hasn't been set" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Check types
|
||||
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||
zero="0000000000000000000000000000000000000000"
|
||||
if [ "$newrev" = "$zero" ]; then
|
||||
newrev_type=delete
|
||||
else
|
||||
newrev_type=$(git cat-file -t $newrev)
|
||||
fi
|
||||
|
||||
case "$refname","$newrev_type" in
|
||||
refs/tags/*,commit)
|
||||
# un-annotated tag
|
||||
short_refname=${refname##refs/tags/}
|
||||
if [ "$allowunannotated" != "true" ]; then
|
||||
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,delete)
|
||||
# delete tag
|
||||
if [ "$allowdeletetag" != "true" ]; then
|
||||
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/tags/*,tag)
|
||||
# annotated tag
|
||||
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||
then
|
||||
echo "*** Tag '$refname' already exists." >&2
|
||||
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,commit)
|
||||
# branch
|
||||
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/heads/*,delete)
|
||||
# delete branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
refs/remotes/*,commit)
|
||||
# tracking branch
|
||||
;;
|
||||
refs/remotes/*,delete)
|
||||
# delete tracking branch
|
||||
if [ "$allowdeletebranch" != "true" ]; then
|
||||
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
# Anything else (is there anything else?)
|
||||
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# --- Finished
|
||||
exit 0
|
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
# git ls-files --others --exclude-from=.git/info/exclude
|
||||
# Lines that start with '#' are comments.
|
||||
# For a project mostly in C, the following would be a good set of
|
||||
# exclude patterns (uncomment them if you want to use them):
|
||||
# *.[oa]
|
||||
# *~
|
@@ -1,2 +0,0 @@
|
||||
0000000000000000000000000000000000000000 90b531a5daaa545c74c7d98974b54cbdb92659fc Andrey Anurin <svxf@yandex-team.ru> 1534073691 +0300 clone: from https://github.com/clvv/fasd.git
|
||||
90b531a5daaa545c74c7d98974b54cbdb92659fc 90b531a5daaa545c74c7d98974b54cbdb92659fc Andrey Anurin <svxf@yandex-team.ru> 1534073716 +0300 checkout: moving from master to 90b531a5daaa545c74c7d98974b54cbdb92659fc
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 90b531a5daaa545c74c7d98974b54cbdb92659fc Andrey Anurin <svxf@yandex-team.ru> 1534073691 +0300 clone: from https://github.com/clvv/fasd.git
|
@@ -1 +0,0 @@
|
||||
0000000000000000000000000000000000000000 90b531a5daaa545c74c7d98974b54cbdb92659fc Andrey Anurin <svxf@yandex-team.ru> 1534073691 +0300 clone: from https://github.com/clvv/fasd.git
|
Binary file not shown.
Binary file not shown.
@@ -1,41 +0,0 @@
|
||||
# pack-refs with: peeled fully-peeled sorted
|
||||
7bbf15b2a87d585b3fa255d1563a4b2b5ee5fabf refs/remotes/origin/asdf
|
||||
c4109fb5fe928f2f97fc99fb506960ff7f664015 refs/remotes/origin/getopt
|
||||
d1e22cedbe707ec97c8df4d0da5182e3a204588a refs/remotes/origin/gh-11
|
||||
ab9325ec45b034b31bbff2efc4b8052886f27219 refs/remotes/origin/issue-15
|
||||
d0db8ce2044c31efee4f1c081086fff9ef83cd56 refs/remotes/origin/issue-5
|
||||
0457dd1c38b78d60696df40301bbacdf5161c9c1 refs/remotes/origin/magic-completion
|
||||
90b531a5daaa545c74c7d98974b54cbdb92659fc refs/remotes/origin/master
|
||||
2669a25d363237b8cf6b34dbf8b9c7f3b782841d refs/remotes/origin/multiple-backends
|
||||
1019217918e864da0361df5ba43ad6db50bb2453 refs/remotes/origin/new-alg
|
||||
78a7dd7e6231b2867ca3d1163016e4a4a3710345 refs/remotes/origin/nolocal
|
||||
497a10d7c5aec15c0ac882b6440e8060f856c547 refs/remotes/origin/posix
|
||||
8de06a30cf08eaac04fc9b88c4abce0fa10ec1db refs/remotes/origin/sedcheck
|
||||
3ea0a195c0f4acd0f5deafec4bac4dc5be9eeb1d refs/remotes/origin/zsh-comp
|
||||
f197bcdd62e5ed162436d6b5a488f967ebff8897 refs/tags/0.1.0
|
||||
19ce32c0f9f4f1c1c3bc30e2872421d8dd35c0d2 refs/tags/0.1.1
|
||||
05d34dcc563b047b37badb7d481285732e6d0293 refs/tags/0.1.2
|
||||
a32312650a69f143d83b4c051d6f1c64ac2ea968 refs/tags/0.1.3
|
||||
68b9cd29ae781b5028c8e79aaefdbcbcc7648273 refs/tags/0.1.4
|
||||
15056d968f0ed20756d7c03a400c7ddc3bb3414d refs/tags/0.1.5
|
||||
30855dee12cb447703bb64d4a7ce0f51f6f1ff84 refs/tags/0.1.6
|
||||
bf8e0b6ece94f5f64ceb7e7252740c0da5188a71 refs/tags/0.3.0
|
||||
58ab442348d355c516c2828b009aa80ddfaee18d refs/tags/0.3.1
|
||||
701384ee4dc661f9899aa761c41c460ea39e8793 refs/tags/0.3.2
|
||||
bbb1ae6b7a6cdab56782a78c971bd7b2e5b7fccc refs/tags/0.3.3
|
||||
0457dd1c38b78d60696df40301bbacdf5161c9c1 refs/tags/0.3.4
|
||||
758c6caa13c10e55bb13055a30249568083f5f54 refs/tags/0.3.5
|
||||
497a10d7c5aec15c0ac882b6440e8060f856c547 refs/tags/0.3.6
|
||||
0e7661cec069449154f8189b5d840d76e35641b6 refs/tags/0.3.7
|
||||
5a7b2c306845c30527d5096d148a17a398fc3853 refs/tags/0.3.8
|
||||
9e3da8d551caf576fb4ccd6c7fbbac055d6fb79b refs/tags/0.5.0
|
||||
4cea2f197af959c41cc83e66016a8a6b1605785a refs/tags/0.5.1
|
||||
3be72702095b12c0d6a4a1db65b2611a09230f40 refs/tags/0.5.2
|
||||
2892c2bfaf5a0bc87fe5c01e94deacad43f16c0e refs/tags/0.5.3
|
||||
ade011352021d5489acb9936c32c223f26e1662e refs/tags/0.5.4
|
||||
2fd03e48b8dcec7ddb9407c2ba137d7470c7910d refs/tags/0.5.5
|
||||
c6dce481caa1a52d5a225947e9cfdef17bae2970 refs/tags/0.5.6
|
||||
0e29bb9a94cc2634210b64e5ed2373efb1096416 refs/tags/0.7.0
|
||||
0a2abd1d87724c769faf7192840e3452af286503 refs/tags/0.7.1
|
||||
5f3454ebf9104506ee40ebd5803bc7f157174afe refs/tags/1.0.0
|
||||
48220241e764fdf46b075cd7fe723468aaadde58 refs/tags/1.0.1
|
@@ -1 +0,0 @@
|
||||
90b531a5daaa545c74c7d98974b54cbdb92659fc
|
@@ -1 +0,0 @@
|
||||
ref: refs/remotes/origin/master
|
@@ -1 +0,0 @@
|
||||
aae3388491c2312c4efb2e86bcb999927bb2900e
|
@@ -1,14 +0,0 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
precomposeunicode = true
|
||||
worktree = ../../../../../modules/history-substring-search/external
|
||||
[remote "origin"]
|
||||
url = https://github.com/zsh-users/zsh-history-substring-search.git
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
[branch "master"]
|
||||
remote = origin
|
||||
merge = refs/heads/master
|
@@ -1 +0,0 @@
|
||||
Unnamed repository; edit this file 'description' to name the repository.
|
@@ -1,15 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message taken by
|
||||
# applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit. The hook is
|
||||
# allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "applypatch-msg".
|
||||
|
||||
. git-sh-setup
|
||||
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||
:
|
@@ -1,24 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to check the commit log message.
|
||||
# Called by "git commit" with one argument, the name of the file
|
||||
# that has the commit message. The hook should exit with non-zero
|
||||
# status after issuing an appropriate message if it wants to stop the
|
||||
# commit. The hook is allowed to edit the commit message file.
|
||||
#
|
||||
# To enable this hook, rename this file to "commit-msg".
|
||||
|
||||
# Uncomment the below to add a Signed-off-by line to the message.
|
||||
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||
# hook is more suited to it.
|
||||
#
|
||||
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||
|
||||
# This example catches duplicate Signed-off-by lines.
|
||||
|
||||
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||
echo >&2 Duplicate Signed-off-by lines.
|
||||
exit 1
|
||||
}
|
@@ -1,114 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
|
||||
# An example hook script to integrate Watchman
|
||||
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||
# new and modified files.
|
||||
#
|
||||
# The hook is passed a version (currently 1) and a time in nanoseconds
|
||||
# formatted as a string and outputs to stdout all files that have been
|
||||
# modified since the given time. Paths must be relative to the root of
|
||||
# the working tree and separated by a single NUL.
|
||||
#
|
||||
# To enable this hook, rename this file to "query-watchman" and set
|
||||
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||
#
|
||||
my ($version, $time) = @ARGV;
|
||||
|
||||
# Check the hook interface version
|
||||
|
||||
if ($version == 1) {
|
||||
# convert nanoseconds to seconds
|
||||
$time = int $time / 1000000000;
|
||||
} else {
|
||||
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||
"Falling back to scanning...\n";
|
||||
}
|
||||
|
||||
my $git_work_tree;
|
||||
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||
$git_work_tree = Win32::GetCwd();
|
||||
$git_work_tree =~ tr/\\/\//;
|
||||
} else {
|
||||
require Cwd;
|
||||
$git_work_tree = Cwd::cwd();
|
||||
}
|
||||
|
||||
my $retry = 1;
|
||||
|
||||
launch_watchman();
|
||||
|
||||
sub launch_watchman {
|
||||
|
||||
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||
or die "open2() failed: $!\n" .
|
||||
"Falling back to scanning...\n";
|
||||
|
||||
# In the query expression below we're asking for names of files that
|
||||
# changed since $time but were not transient (ie created after
|
||||
# $time but no longer exist).
|
||||
#
|
||||
# To accomplish this, we're using the "since" generator to use the
|
||||
# recency index to select candidate nodes and "fields" to limit the
|
||||
# output to file names only. Then we're using the "expression" term to
|
||||
# further constrain the results.
|
||||
#
|
||||
# The category of transient files that we want to ignore will have a
|
||||
# creation clock (cclock) newer than $time_t value and will also not
|
||||
# currently exist.
|
||||
|
||||
my $query = <<" END";
|
||||
["query", "$git_work_tree", {
|
||||
"since": $time,
|
||||
"fields": ["name"],
|
||||
"expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]]
|
||||
}]
|
||||
END
|
||||
|
||||
print CHLD_IN $query;
|
||||
close CHLD_IN;
|
||||
my $response = do {local $/; <CHLD_OUT>};
|
||||
|
||||
die "Watchman: command returned no output.\n" .
|
||||
"Falling back to scanning...\n" if $response eq "";
|
||||
die "Watchman: command returned invalid output: $response\n" .
|
||||
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||
|
||||
my $json_pkg;
|
||||
eval {
|
||||
require JSON::XS;
|
||||
$json_pkg = "JSON::XS";
|
||||
1;
|
||||
} or do {
|
||||
require JSON::PP;
|
||||
$json_pkg = "JSON::PP";
|
||||
};
|
||||
|
||||
my $o = $json_pkg->new->utf8->decode($response);
|
||||
|
||||
if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||
print STDERR "Adding '$git_work_tree' to watchman's watch list.\n";
|
||||
$retry--;
|
||||
qx/watchman watch "$git_work_tree"/;
|
||||
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||
"Falling back to scanning...\n" if $? != 0;
|
||||
|
||||
# Watchman will always return all files on the first query so
|
||||
# return the fast "everything is dirty" flag to git and do the
|
||||
# Watchman query just to get it over with now so we won't pay
|
||||
# the cost in git to look up each individual file.
|
||||
print "/\0";
|
||||
eval { launch_watchman() };
|
||||
exit 0;
|
||||
}
|
||||
|
||||
die "Watchman: $o->{error}.\n" .
|
||||
"Falling back to scanning...\n" if $o->{error};
|
||||
|
||||
binmode STDOUT, ":utf8";
|
||||
local $, = "\0";
|
||||
print @{$o->{files}};
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to prepare a packed repository for use over
|
||||
# dumb transports.
|
||||
#
|
||||
# To enable this hook, rename this file to "post-update".
|
||||
|
||||
exec git update-server-info
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed
|
||||
# by applypatch from an e-mail message.
|
||||
#
|
||||
# The hook should exit with non-zero status after issuing an
|
||||
# appropriate message if it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-applypatch".
|
||||
|
||||
. git-sh-setup
|
||||
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||
:
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user