From d06dc9e2e7aa92774b762ca2878c410235e891da Mon Sep 17 00:00:00 2001 From: Teemu Murtola Date: Wed, 30 Sep 2015 22:26:29 +0300 Subject: [PATCH] Move mdoutf and trajectory_writing to mdlib Move mdoutf.* and trajectory_writing.* to mdlib, since these have strong dependencies from there, and it is impossible to avoid cyclic dependencies otherwise. Such highly mdrun-specific code doesn't really fit into the generic file I/O module, either. Move sim_util.h to mdlib at the same time, so that none of the files needs to be installed. Change-Id: If69a027945e384746c4c267e0239a07dccf0e26e --- docs/doxygen/cycle-suppressions.txt | 1 - src/gromacs/essentialdynamics/edsam.cpp | 2 +- src/gromacs/ewald/pme-load-balancing.cpp | 2 +- src/gromacs/fileio/CMakeLists.txt | 2 -- src/gromacs/imd/imd.cpp | 2 +- src/gromacs/mdlib/coupling.cpp | 2 +- src/gromacs/mdlib/md_support.h | 2 +- src/gromacs/{fileio => mdlib}/mdoutf.cpp | 2 +- src/gromacs/{fileio => mdlib}/mdoutf.h | 7 +++--- src/gromacs/mdlib/minimize.cpp | 4 +-- src/gromacs/mdlib/sim_util.cpp | 2 +- src/gromacs/{legacyheaders => mdlib}/sim_util.h | 29 ++++++++-------------- src/gromacs/mdlib/stat.cpp | 2 +- src/gromacs/mdlib/tpi.cpp | 2 +- .../{fileio => mdlib}/trajectory_writing.cpp | 4 +-- src/gromacs/{fileio => mdlib}/trajectory_writing.h | 9 +++---- src/gromacs/mdlib/update.cpp | 2 +- src/gromacs/pulling/pull_rotation.cpp | 2 +- src/gromacs/swap/swapcoords.cpp | 2 +- src/programs/mdrun/md.cpp | 6 ++--- 20 files changed, 36 insertions(+), 50 deletions(-) rename src/gromacs/{fileio => mdlib}/mdoutf.cpp (99%) rename src/gromacs/{fileio => mdlib}/mdoutf.h (97%) rename src/gromacs/{legacyheaders => mdlib}/sim_util.h (92%) rename src/gromacs/{fileio => mdlib}/trajectory_writing.cpp (98%) rename src/gromacs/{fileio => mdlib}/trajectory_writing.h (95%) diff --git a/docs/doxygen/cycle-suppressions.txt b/docs/doxygen/cycle-suppressions.txt index 9c796a8cd0..029e6c1506 100644 --- a/docs/doxygen/cycle-suppressions.txt +++ b/docs/doxygen/cycle-suppressions.txt @@ -1,7 +1,6 @@ # Order (or more generally, edge selection) is significant (see gmxtree.md); # "moduleA -> moduleB" means that moduleA should not depend on moduleB, and is # a problem to be addressed at some point. -fileio -> domdec domdec -> imd domdec -> ewald domdec -> mdlib diff --git a/src/gromacs/essentialdynamics/edsam.cpp b/src/gromacs/essentialdynamics/edsam.cpp index d09dc92439..11ea840747 100644 --- a/src/gromacs/essentialdynamics/edsam.cpp +++ b/src/gromacs/essentialdynamics/edsam.cpp @@ -49,7 +49,6 @@ #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/network.h" #include "gromacs/legacyheaders/nrnb.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/update.h" @@ -57,6 +56,7 @@ #include "gromacs/linearalgebra/nrjac.h" #include "gromacs/math/vec.h" #include "gromacs/mdlib/groupcoord.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/topology/mtop_util.h" #include "gromacs/utility/cstringutil.h" diff --git a/src/gromacs/ewald/pme-load-balancing.cpp b/src/gromacs/ewald/pme-load-balancing.cpp index 0cae0f2b37..42fe06195e 100644 --- a/src/gromacs/ewald/pme-load-balancing.cpp +++ b/src/gromacs/ewald/pme-load-balancing.cpp @@ -58,11 +58,11 @@ #include "gromacs/gmxlib/calcgrid.h" #include "gromacs/gmxlib/md_logging.h" #include "gromacs/legacyheaders/network.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/types/commrec.h" #include "gromacs/math/vec.h" #include "gromacs/mdlib/forcerec.h" #include "gromacs/mdlib/nbnxn_gpu_data_mgmt.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/utility/cstringutil.h" diff --git a/src/gromacs/fileio/CMakeLists.txt b/src/gromacs/fileio/CMakeLists.txt index 18033dc6ab..256ddaba8e 100644 --- a/src/gromacs/fileio/CMakeLists.txt +++ b/src/gromacs/fileio/CMakeLists.txt @@ -48,12 +48,10 @@ gmx_install_headers( filenm.h gmxfio.h matio.h - mdoutf.h mtxio.h oenv.h pdbio.h tpxio.h - trajectory_writing.h trrio.h trx.h trxio.h diff --git a/src/gromacs/imd/imd.cpp b/src/gromacs/imd/imd.cpp index 59ef1d5a63..a3cd9be306 100644 --- a/src/gromacs/imd/imd.cpp +++ b/src/gromacs/imd/imd.cpp @@ -69,10 +69,10 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/network.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/types/inputrec.h" #include "gromacs/math/vec.h" #include "gromacs/mdlib/groupcoord.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/topology/mtop_util.h" diff --git a/src/gromacs/mdlib/coupling.cpp b/src/gromacs/mdlib/coupling.cpp index e3eedd91dc..25fcf9fbca 100644 --- a/src/gromacs/mdlib/coupling.cpp +++ b/src/gromacs/mdlib/coupling.cpp @@ -44,7 +44,6 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/nrnb.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/update.h" @@ -54,6 +53,7 @@ #include "gromacs/legacyheaders/types/nrnb.h" #include "gromacs/math/units.h" #include "gromacs/math/vec.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/random/random.h" #include "gromacs/utility/cstringutil.h" #include "gromacs/utility/fatalerror.h" diff --git a/src/gromacs/mdlib/md_support.h b/src/gromacs/mdlib/md_support.h index aca3ad7e1b..a572b1c00c 100644 --- a/src/gromacs/mdlib/md_support.h +++ b/src/gromacs/mdlib/md_support.h @@ -37,9 +37,9 @@ #ifndef GMX_MDLIB_MD_SUPPORT_H #define GMX_MDLIB_MD_SUPPORT_H -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/vcm.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/timing/wallcycle.h" struct gmx_constr; diff --git a/src/gromacs/fileio/mdoutf.cpp b/src/gromacs/mdlib/mdoutf.cpp similarity index 99% rename from src/gromacs/fileio/mdoutf.cpp rename to src/gromacs/mdlib/mdoutf.cpp index 548207a595..5bac2f7a36 100644 --- a/src/gromacs/fileio/mdoutf.cpp +++ b/src/gromacs/mdlib/mdoutf.cpp @@ -39,7 +39,6 @@ #include "gromacs/domdec/domdec.h" #include "gromacs/fileio/gmxfio.h" #include "gromacs/fileio/tngio.h" -#include "gromacs/fileio/trajectory_writing.h" #include "gromacs/fileio/trrio.h" #include "gromacs/fileio/xtcio.h" #include "gromacs/fileio/xvgr.h" @@ -48,6 +47,7 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/types/commrec.h" #include "gromacs/math/vec.h" +#include "gromacs/mdlib/trajectory_writing.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/utility/fatalerror.h" #include "gromacs/utility/smalloc.h" diff --git a/src/gromacs/fileio/mdoutf.h b/src/gromacs/mdlib/mdoutf.h similarity index 97% rename from src/gromacs/fileio/mdoutf.h rename to src/gromacs/mdlib/mdoutf.h index e8f3ba917a..5960363924 100644 --- a/src/gromacs/fileio/mdoutf.h +++ b/src/gromacs/mdlib/mdoutf.h @@ -32,9 +32,8 @@ * To help us fund GROMACS development, we humbly ask that you cite * the research papers on the package. Check out http://www.gromacs.org. */ - -#ifndef GMX_FILEIO_MDOUTF_H -#define GMX_FILEIO_MDOUTF_H +#ifndef GMX_MDLIB_MDOUTF_H +#define GMX_MDLIB_MDOUTF_H #include @@ -117,4 +116,4 @@ void mdoutf_write_to_trajectory_files(FILE *fplog, t_commrec *cr, } #endif -#endif /* GMX_FILEIO_MDOUTF_H */ +#endif diff --git a/src/gromacs/mdlib/minimize.cpp b/src/gromacs/mdlib/minimize.cpp index 4d50652239..4d8c8a9379 100644 --- a/src/gromacs/mdlib/minimize.cpp +++ b/src/gromacs/mdlib/minimize.cpp @@ -58,7 +58,6 @@ #include "gromacs/ewald/pme.h" #include "gromacs/fileio/confio.h" #include "gromacs/fileio/mtxio.h" -#include "gromacs/fileio/trajectory_writing.h" #include "gromacs/gmxlib/md_logging.h" #include "gromacs/imd/imd.h" #include "gromacs/legacyheaders/force.h" @@ -69,7 +68,6 @@ #include "gromacs/legacyheaders/network.h" #include "gromacs/legacyheaders/nrnb.h" #include "gromacs/legacyheaders/ns.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/tgroup.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/typedefs.h" @@ -84,6 +82,8 @@ #include "gromacs/mdlib/forcerec.h" #include "gromacs/mdlib/md_support.h" #include "gromacs/mdlib/mdatoms.h" +#include "gromacs/mdlib/sim_util.h" +#include "gromacs/mdlib/trajectory_writing.h" #include "gromacs/pbcutil/mshift.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/timing/wallcycle.h" diff --git a/src/gromacs/mdlib/sim_util.cpp b/src/gromacs/mdlib/sim_util.cpp index 3e3312e99e..5d02c8eb40 100644 --- a/src/gromacs/mdlib/sim_util.cpp +++ b/src/gromacs/mdlib/sim_util.cpp @@ -36,7 +36,7 @@ */ #include "gmxpre.h" -#include "gromacs/legacyheaders/sim_util.h" +#include "sim_util.h" #include "config.h" diff --git a/src/gromacs/legacyheaders/sim_util.h b/src/gromacs/mdlib/sim_util.h similarity index 92% rename from src/gromacs/legacyheaders/sim_util.h rename to src/gromacs/mdlib/sim_util.h index 9416961d57..8b06a73e78 100644 --- a/src/gromacs/legacyheaders/sim_util.h +++ b/src/gromacs/mdlib/sim_util.h @@ -34,33 +34,28 @@ * To help us fund GROMACS development, we humbly ask that you cite * the research papers on the package. Check out http://www.gromacs.org. */ - -#ifndef _sim_util_h -#define _sim_util_h +#ifndef GMX_MDLIB_SIM_UTIL_H +#define GMX_MDLIB_SIM_UTIL_H #include "gromacs/fileio/enxio.h" -#include "gromacs/fileio/mdoutf.h" #include "gromacs/legacyheaders/mdebin.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/update.h" #include "gromacs/legacyheaders/vcm.h" +#include "gromacs/mdlib/mdoutf.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/timing/walltime_accounting.h" struct gmx_constr; +struct nonbonded_verlet_t; +struct t_graph; struct t_mdatoms; struct t_nrnb; -#ifdef __cplusplus -extern "C" { -#endif - -struct t_graph; - typedef struct gmx_global_stat *gmx_global_stat_t; void do_pbc_first(FILE *log, matrix box, t_forcerec *fr, - struct t_graph *graph, rvec x[]); + t_graph *graph, rvec x[]); void do_pbc_first_mtop(FILE *fplog, int ePBC, matrix box, const gmx_mtop_t *mtop, rvec x[]); @@ -80,7 +75,7 @@ void global_stat(FILE *log, gmx_global_stat_t gs, tensor fvir, tensor svir, rvec mu_tot, t_inputrec *inputrec, gmx_ekindata_t *ekind, - struct gmx_constr *constr, t_vcm *vcm, + gmx_constr *constr, t_vcm *vcm, int nsig, real *sig, gmx_mtop_t *top_global, t_state *state_local, gmx_bool bSumEkinhOld, int flags); @@ -113,7 +108,7 @@ void finish_run(FILE *log, t_commrec *cr, t_inputrec *inputrec, t_nrnb nrnb[], gmx_wallcycle_t wcycle, gmx_walltime_accounting_t walltime_accounting, - struct nonbonded_verlet_t *nbv, + nonbonded_verlet_t *nbv, gmx_bool bWriteStat); void calc_enervirdiff(FILE *fplog, int eDispCorr, t_forcerec *fr); @@ -125,7 +120,7 @@ void calc_dispcorr(t_inputrec *ir, t_forcerec *fr, void initialize_lambdas(FILE *fplog, t_inputrec *ir, int *fep_state, real *lambda, double *lam0); -void do_constrain_first(FILE *log, struct gmx_constr *constr, +void do_constrain_first(FILE *log, gmx_constr *constr, t_inputrec *inputrec, t_mdatoms *md, t_state *state, t_commrec *cr, t_nrnb *nrnb, t_forcerec *fr, gmx_localtop_t *top); @@ -144,10 +139,6 @@ void init_md(FILE *fplog, gmx_wallcycle_t wcycle); /* Routine in sim_util.c */ -gmx_bool use_GPU(const struct nonbonded_verlet_t *nbv); +gmx_bool use_GPU(const nonbonded_verlet_t *nbv); -#ifdef __cplusplus -} #endif - -#endif /* _sim_util_h */ diff --git a/src/gromacs/mdlib/stat.cpp b/src/gromacs/mdlib/stat.cpp index 5940926e15..922c2475a2 100644 --- a/src/gromacs/mdlib/stat.cpp +++ b/src/gromacs/mdlib/stat.cpp @@ -46,7 +46,6 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/network.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/tgroup.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/typedefs.h" @@ -58,6 +57,7 @@ #include "gromacs/mdlib/constr.h" #include "gromacs/mdlib/md_support.h" #include "gromacs/mdlib/rbin.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/utility/fatalerror.h" #include "gromacs/utility/futil.h" #include "gromacs/utility/smalloc.h" diff --git a/src/gromacs/mdlib/tpi.cpp b/src/gromacs/mdlib/tpi.cpp index b847dccff8..30fc43d36b 100644 --- a/src/gromacs/mdlib/tpi.cpp +++ b/src/gromacs/mdlib/tpi.cpp @@ -67,7 +67,6 @@ #include "gromacs/legacyheaders/network.h" #include "gromacs/legacyheaders/nrnb.h" #include "gromacs/legacyheaders/ns.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/tgroup.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/typedefs.h" @@ -79,6 +78,7 @@ #include "gromacs/math/vec.h" #include "gromacs/mdlib/constr.h" #include "gromacs/mdlib/mdatoms.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/random/random.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/timing/walltime_accounting.h" diff --git a/src/gromacs/fileio/trajectory_writing.cpp b/src/gromacs/mdlib/trajectory_writing.cpp similarity index 98% rename from src/gromacs/fileio/trajectory_writing.cpp rename to src/gromacs/mdlib/trajectory_writing.cpp index 169d412d77..88407ba839 100644 --- a/src/gromacs/fileio/trajectory_writing.cpp +++ b/src/gromacs/mdlib/trajectory_writing.cpp @@ -37,12 +37,12 @@ #include "trajectory_writing.h" #include "gromacs/fileio/confio.h" -#include "gromacs/fileio/mdoutf.h" #include "gromacs/legacyheaders/mdrun.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/types/commrec.h" #include "gromacs/math/vec.h" +#include "gromacs/mdlib/mdoutf.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/utility/smalloc.h" diff --git a/src/gromacs/fileio/trajectory_writing.h b/src/gromacs/mdlib/trajectory_writing.h similarity index 95% rename from src/gromacs/fileio/trajectory_writing.h rename to src/gromacs/mdlib/trajectory_writing.h index aaf75ecab6..081d08b356 100644 --- a/src/gromacs/fileio/trajectory_writing.h +++ b/src/gromacs/mdlib/trajectory_writing.h @@ -34,15 +34,14 @@ * To help us fund GROMACS development, we humbly ask that you cite * the research papers on the package. Check out http://www.gromacs.org. */ - -#ifndef GMX_FILEIO_TRAJECTORY_WRITING_H -#define GMX_FILEIO_TRAJECTORY_WRITING_H +#ifndef GMX_MDLIB_TRAJECTORY_WRITING_H +#define GMX_MDLIB_TRAJECTORY_WRITING_H #include #include "gromacs/fileio/filenm.h" -#include "gromacs/fileio/mdoutf.h" #include "gromacs/legacyheaders/mdebin.h" +#include "gromacs/mdlib/mdoutf.h" #include "gromacs/timing/wallcycle.h" struct gmx_ekindata_t; @@ -88,4 +87,4 @@ do_md_trajectory_writing(FILE *fplog, } #endif -#endif /* GMX_FILEIO_TRAJECTORY_WRITING_H */ +#endif diff --git a/src/gromacs/mdlib/update.cpp b/src/gromacs/mdlib/update.cpp index 0a59bef0ed..8da42bfe13 100644 --- a/src/gromacs/mdlib/update.cpp +++ b/src/gromacs/mdlib/update.cpp @@ -51,7 +51,6 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/nrnb.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/tgroup.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/typedefs.h" @@ -60,6 +59,7 @@ #include "gromacs/math/units.h" #include "gromacs/math/vec.h" #include "gromacs/mdlib/constr.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/pbcutil/mshift.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/pulling/pull.h" diff --git a/src/gromacs/pulling/pull_rotation.cpp b/src/gromacs/pulling/pull_rotation.cpp index dd5d02595c..09a142f239 100644 --- a/src/gromacs/pulling/pull_rotation.cpp +++ b/src/gromacs/pulling/pull_rotation.cpp @@ -54,13 +54,13 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/network.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/txtdump.h" #include "gromacs/legacyheaders/types/inputrec.h" #include "gromacs/linearalgebra/nrjac.h" #include "gromacs/math/utilities.h" #include "gromacs/math/vec.h" #include "gromacs/mdlib/groupcoord.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/timing/cyclecounter.h" #include "gromacs/timing/wallcycle.h" diff --git a/src/gromacs/swap/swapcoords.cpp b/src/gromacs/swap/swapcoords.cpp index 26b2f7e34f..59bcdca463 100644 --- a/src/gromacs/swap/swapcoords.cpp +++ b/src/gromacs/swap/swapcoords.cpp @@ -55,11 +55,11 @@ #include "gromacs/legacyheaders/mdrun.h" #include "gromacs/legacyheaders/names.h" #include "gromacs/legacyheaders/network.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/types/inputrec.h" #include "gromacs/math/vec.h" #include "gromacs/mdlib/groupcoord.h" +#include "gromacs/mdlib/sim_util.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/timing/wallcycle.h" #include "gromacs/topology/mtop_util.h" diff --git a/src/programs/mdrun/md.cpp b/src/programs/mdrun/md.cpp index d8eef45009..fafd52a40f 100644 --- a/src/programs/mdrun/md.cpp +++ b/src/programs/mdrun/md.cpp @@ -51,8 +51,6 @@ #include "gromacs/ewald/pme.h" #include "gromacs/ewald/pme-load-balancing.h" #include "gromacs/fileio/filenm.h" -#include "gromacs/fileio/mdoutf.h" -#include "gromacs/fileio/trajectory_writing.h" #include "gromacs/fileio/trx.h" #include "gromacs/fileio/trxio.h" #include "gromacs/gmxlib/md_logging.h" @@ -65,7 +63,6 @@ #include "gromacs/legacyheaders/network.h" #include "gromacs/legacyheaders/nrnb.h" #include "gromacs/legacyheaders/ns.h" -#include "gromacs/legacyheaders/sim_util.h" #include "gromacs/legacyheaders/tgroup.h" #include "gromacs/legacyheaders/typedefs.h" #include "gromacs/legacyheaders/update.h" @@ -92,10 +89,13 @@ #include "gromacs/mdlib/forcerec.h" #include "gromacs/mdlib/md_support.h" #include "gromacs/mdlib/mdatoms.h" +#include "gromacs/mdlib/mdoutf.h" #include "gromacs/mdlib/mdrun_signalling.h" #include "gromacs/mdlib/nb_verlet.h" #include "gromacs/mdlib/nbnxn_gpu_data_mgmt.h" #include "gromacs/mdlib/shellfc.h" +#include "gromacs/mdlib/sim_util.h" +#include "gromacs/mdlib/trajectory_writing.h" #include "gromacs/pbcutil/mshift.h" #include "gromacs/pbcutil/pbc.h" #include "gromacs/pulling/pull.h" -- 2.11.4.GIT